欢迎来到我的博客

记录学习心得、分享技术经验、探索编程世界

欢迎访问我的博客

这里记录了我的学习心得、技术分享和生活感悟,希望能对您有所帮助。如果您有任何问题或建议,欢迎随时联系我!

个人头像

木木子

热爱技术的开发者,专注于前端开发、Python编程和人工智能技术。

JavaScript Python 8086CPU Java C AI

最近文章

技术项目

图像多帧差异检测

基于 Opencv 实现的多帧图像差异检测算法,用于多图差异分析,后期可拓展至视频。

Opencv Python NumPy

AI 智能聊天室

基于 Python 构建的实时交互聊天室系统,集成自研轻量级 NLP 对话模型(TensorFlow 训练),可实时分析聊天内容并生成语义总结,后端采用 Flask 框架实现接口与数据交互。

Python TensorFlow NLP Flask

某音视频泛性采集

基于 Selenium 实现的某音视频泛性采集工具,可自动采集指定关键词的视频内容,支持自定义采集参数。

Python Selenium

某趣阁子网小说泛性采集

基于接口实现的某趣阁子网小说泛性采集工具,可自动采集指定关键词的小说内容,支持代理采集。

Python Requests

某瓣图片泛性采集

基于 Scrapy 框架,实现的某瓣图片泛性采集工具,可自动采集指定关键词的图片内容,支持自定义采集参数。

Python Scrapy

学习计划

深入学习 JavaScript

掌握 JavaScript 相关技术,包括 DOM 操作、事件处理、异步编程等,实现 JavaScript 逆向

深度学习

学习卷积神经网络和自然语言处理技术,广泛应用于验证绕过技术

渗透技术

深入学习红队渗透技术,包括但不限于 SQL 注入、XSS 攻击、CSRF 攻击等,同时关注最新的渗透趋势和技术。

逆向工程

具备 JS 逆向(混淆/加密代码还原)、安卓逆向(APK 反编译/Hook 调试)实战能力,可开展内核层安全对抗,突破应用防护限制。

技术栈展示

前端技术

HTML5 / CSS3
60%
JavaScript / ES6+
90%
Vue
0%
php
75%

后端技术

Python
90%
Node.js
40%
Flask / Django
20%

数据库技术

MySQL
60%
MongoDB
75%

工具与其他

Gitee / GitHub
90%
GitCode
95%
Linux
75%

博客统计信息

128
文章总数
35.2k
总访问量
426
评论总数
24
标签数量

技术资源分享

JavaScript高级程序设计

JavaScript领域的权威书籍,全面介绍JavaScript核心概念和高级特性。

书籍 Nicholas C. Zakas

Python编程:从入门到实践

适合初学者的Python入门书籍,通过项目驱动的方式学习Python编程。

书籍 Eric Matthes

现代JavaScript教程

全面介绍现代JavaScript的在线教程,从基础到高级。

教程 Ilya Kantor

React官方文档

React官方提供的详细文档,包含教程、API参考和最佳实践。

文档 React Team

算法导论

算法领域的经典教材,全面介绍算法设计和分析。

书籍 Thomas H. Cormen

深入理解计算机系统

从程序员角度介绍计算机系统的经典教材。

书籍 Randal E. Bryant

木木子的博客

一、Python核心语句结构(配套答案)

1. 答案:3;

解析

  • Python 中int()函数对浮点数的转换是截断取整(只保留整数部分),因此int(3.9)结果为 3;

2. 答案:nonlocal;global

解析

  • nonlocal:用于嵌套函数中,声明变量是外层函数的局部变量(非全局、非当前函数局部),可修改外层局部变量;
  • global:声明变量是全局变量,即使在函数内也可修改全局作用域的变量。
x = 10  # 全局变量
def outer():
    y = 20  # 外层局部变量
    def inner():
        global x  # 声明修改全局x
        nonlocal y  # 声明修改外层y
        x = 100
        y = 200
    inner()
    print(y)  # 输出200
outer()
print(x)  # 输出100

3. 答案:-3;1

解析

Python 中整数除法//遵循 “向下取整” 规则,取模%遵循公式:a = (a // b) * b + (a % b)

  • -5 // 2:2×(-3) = -6 ≤ -5,因此结果为 - 3;
  • -5 % 2:代入公式,-5 = (-3)×2 + 1,因此余数为 1。

4. 答案:"|".join (["Python","速成","课"])

解析

str.join(iterable)函数的规则是:以调用 join 的字符串作为分隔符,拼接可迭代对象(列表、元组等)的所有元素,且元素必须是字符串类型。

执行"|".join(["Python","速成","课"])时,分隔符|会插入列表元素之间,结果为Python|速成|课

5. 答案:解包时左右侧元素数量不匹配;字符串(str)

解析

  • a,b = 1报错原因:等号左侧是 2 个变量,右侧仅 1 个值,解包时 “数量不匹配”,Python 无法分配;若要正确赋值需a,b = 1,2(左右数量一致);
  • input()函数:无论用户输入数字、符号还是文字,均以字符串类型返回,如需数值需手动转换(如int(input()))。

6. 代码题解析

第 1 段代码

题目结论错误,正确看法:

输出结果是 100,而非 10。原因:

  • 全局变量x=100outer()函数内定义的x=10外层函数局部变量(仅作用于outer内部);
  • inner()函数内的x=200内层函数局部变量(仅作用于inner内部);
  • 三个x属于不同作用域,互不影响,最终print(x)打印的是全局变量x,结果为 100。

第 2 段代码

题目结论正确,补充验证:

"="*5会生成 5 个等号拼接的字符串=====,因此"="*5 + "Python" + "="*5拼接后结果为=====Python=====print输出该字符串(无额外换行,题目描述符合实际)。

第 3 段代码

题目结论错误,正确看法:

代码会报错ValueError: too many values to unpack (expected 2)。原因:

解包赋值要求 “左侧变量数量 = 右侧可迭代对象元素数量”(或左侧用*接收剩余元素),而lst = [10,20,30]有 3 个元素,a,b = lst仅声明 2 个变量,无法匹配,直接报错(而非 “取前两个元素”)。

若要取前两个元素,正确写法:a,b,*_ = lst

第 4 段代码

题目结论错误,正确看法:

输出结果是[1,2,3,4,6,1,2,3,4,6](而非题目中的[1,2,3,6,1,2,3,4])。原因:

  • 链式赋值a = b = [1,2,3]中,ab指向同一个列表对象(内存地址相同);
  • b.append(4):列表变为[1,2,3,4]a也同步变为该值);
  • a.append(6):列表变为[1,2,3,4,6]b也同步变为该值);
  • c = a + b:是两个相同列表拼接,结果为[1,2,3,4,6] + [1,2,3,4,6] = [1,2,3,4,6,1,2,3,4,6]

生活需求:代码 + 解析

完整代码

# 1. 初始化共享购物清单
shop_list = [25, 0, 18, 32, 0, 15]
my_list = shop_list  # 小明手机端(共享同一份)
your_list = shop_list  # 小红手机端(共享同一份)

# 2. 数据清理:while循环移除所有0,使用continue控制逻辑
index = 0
while index < len(shop_list):
    if shop_list[index] == 0:
        shop_list.pop(index)  # 移除0元素,索引不递增(因为列表长度减1)
        continue  # 跳过本次循环剩余逻辑,直接进入下一次
    index += 1  # 非0元素,索引递增

# 3. 数据解构:提取前2个价格,剩余用*other_prices接收
price1, price2, *other_prices = shop_list

# 4. 内存验证:判断内存地址是否相同
is_same = id(my_list) == id(your_list)

# 5. while循环计算总价(禁止用sum)
total = 0
i = 0
while i < len(shop_list):
    total += shop_list[i]
    i += 1

# 6. 优惠计算:总价整除2
discount_price = total // 2

# 7. 结果输出
print(f"清理后清单:{shop_list}")
print(f"是否同一份清单:{is_same}")
print(f"price1={price1}, price2={price2}, other_prices={other_prices}")
print(f"总价:{total}, 优惠价:{discount_price}")

代码解析

1. 初始化共享清单

my_list = shop_listyour_list = shop_list表示三个变量指向同一个列表对象(内存地址相同),符合 “共享同步” 的需求。

2. 数据清理(核心逻辑)

  • while循环遍历,索引index初始为 0;
  • 若当前元素是 0:执行pop(index)移除该元素(列表长度减 1),然后continue跳过index += 1(因为移除后,下一个元素会移到当前索引位置,需重新检查);
  • 若当前元素非 0:index += 1,继续遍历下一个元素;
  • 最终shop_list会被清理为[25, 18, 32, 15]

3. 数据解构

Python 的 “解包赋值” 特性:price1, price2, *other_prices = shop_list会:

  • 第一个元素赋值给price1(25);
  • 第二个元素赋值给price2(18);
  • 剩余所有元素打包为列表赋值给other_prices([32, 15])。

4. 内存验证

id()函数返回对象的唯一内存地址,id(my_list) == id(your_list)判断两个变量是否指向同一个列表,结果为True(符合共享需求)。

5. 总价计算

  • 初始化total = 0,索引i = 0
  • while i < len(shop_list):循环遍历每个元素,将元素值累加到total,然后i += 1
  • 最终total = 25+18+32+15 = 90

6. 优惠计算

discount_price = total // 2:90 整除 2,结果为 45。

7. 结果输出

按指定格式打印所有关键结果,最终输出:

清理后清单:[25, 18, 32, 15]
是否同一份清单:True
price1=25, price2=18, other_prices=[32, 15]
总价:90, 优惠价:45

关键注意点

  1. 清理 0 时,pop(index)后必须continue:否则index += 1会跳过下一个元素(例如移除索引 1 的 0 后,原索引 2 的 18 会移到索引 1,若直接index +=1会检查索引 2 的 32,漏掉 18);
  2. 链式赋值my_list = shop_list是 “引用赋值”,而非复制列表,确保共享特性;
  3. 总价计算禁止用sum(),必须用while循环实现,符合题目要求。

posted on 2025-12-26 21:45  巉滺  阅读(70)  评论(0)    收藏  举报

导航