欢迎来到我的博客

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

欢迎访问我的博客

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

个人头像

巉滺

热爱技术的开发者,专注于前端开发、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%
React / Vue
0%
php
75%

后端技术

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

数据库技术

MySQL / PostgreSQL
60%
MongoDB
75%

工具与其他

Git / GitHub
90%
GitCode
95%
Linux
75%

博客统计信息

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

编程工具推荐

Visual Studio Code

轻量级但功能强大的代码编辑器,支持多种编程语言和扩展。

编辑器 跨平台 开源

IntelliJ IDEA

功能强大的Java IDE,也支持其他多种编程语言。

IDE Java 智能

PyCharm

专为Python开发设计的IDE,提供智能代码补全和调试功能。

IDE Python 智能

Docker

容器化平台,简化应用程序的部署和管理。

容器 DevOps 跨平台

Git

分布式版本控制系统,用于跟踪代码变更。

版本控制 分布式 开源

iTerm2 / Windows Terminal

功能强大的终端模拟器,提供更好的命令行体验。

终端 命令行 自定义

技术资源分享

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. 快速回忆 Python 注释、数据类型转换、变量作用域等基础规则,避免低级语法错误。
  2. 掌握算术 / 赋值运算符的 “坑点”(如负数整除、取模),规范字符串 / 列表操作逻辑。
  3. 熟练运用 if-elif-else 与循环结构,精准控制 break/continue 的执行流程。
  4. 掌握字符串拆分、替换、序列拼接的高效写法,提升代码简洁度。
  5. 理解 Python 赋值的 “地址 / 实体” 核心逻辑,避开可变类型引用共享、拷贝不彻底等高级坑点。

课程大纲

一、基础语法

  1. 注释:单行#、多行""" """,快捷键Ctrl+/批量注释。
  2. 缩进:后必缩进,同一代码块缩进一致(4 空格),无花括号。
  3. 变量:无类型声明,a,b,c = 1,2,3一行多赋值(数量必须匹配)。

二、数据类型转换

函数 规则 坑点
str(x) 万物可转
int(x) x 必须是纯数字字符串 / 浮点数 浮点数转 int 是截断(int(3.9)=3),非四舍五入
float(x) 支持数字 / 纯数字字符串
异常处理 转数值失败用try-except ValueError捕获 输入'12a'直接转 int 会报错

三、作用域关键字

关键字 用途 注意事项
global 局部作用域修改全局变量 必须在函数内声明后使用
nonlocal 嵌套函数修改外层局部变量 不能和global同时修饰一个变量

四、运算符(重点坑点)

  1. 整除//-5//2=-3(向下取整,不是向零取整)。
  2. 取模%-5%2=1(结果与除数同号)。
  3. +/*重载:可拼接字符串 / 列表('a'*3='aaa'[1]+[2]=[1,2])。
  4. 按位与&:整数按二进制位运算(6&3=2),集合表示交集({1,2}&{2,3}={2}),不可替代and做逻辑判断。
  5. 赋值运算符
    • +=/-=/&=等是x = x + y的简写,效率更高;
    • 可变类型+=原地修改(地址不变),不可变类型+=新建实体(地址改变)。
  6. 赋值核心逻辑(新增)
赋值方式 规则 坑点
直接赋值= 变量绑定实体地址,可变类型共享地址 修改可变类型会同步影响所有绑定变量
增量赋值+= 可变类型原地修改,不可变类型新建实体 误以为lst += [1]lst = lst + [1]等价
解包赋值a,b = iter 变量数需匹配(或用*接收剩余) *时变量数≠元素数会报错
链式赋值a=b=c=val 多变量绑定同一地址 可变类型会同步修改
拷贝赋值copy()/deepcopy() 浅拷贝单层独立,深拷贝完全独立 浅拷贝处理嵌套可变类型仍共享地址

五、字符串操作(高效写法)

  1. 拆分split(sep, num)num指定拆分次数("a,b,c".split(",",1), 输出["a","b,c"])。
  2. 替换replace(old, new, count)count指定替换次数。
  3. 拼接join(seq):仅支持字符串序列,效率远高于+"|".join(["a","b"]), 输出"a|b")。

六、流程控制

  1. if-elif-elseelif不能单独用,else后无表达式。
  2. 循环
    • for:遍历可迭代对象(字符串 / 列表 /range),无需手动控制索引。
    • while:必须在循环体内修改条件变量,避免死循环。
    • break:终止整个循环;continue:跳过本次循环剩余代码。

七、核心避坑口诀

  1. 缩进一致,冒号别漏;
  2. 负数整除向下走,取模结果同除数;
  3. global 改全局,nonlocal 改外层;
  4. join 只拼字符串,转数记得捕异常;
  5. 赋值绑定地址值,可变共享深拷贝;
  6. & 是位运算 / 交集,别替 and 做逻辑。

练一练

  1. Python 中 int(3.9) 的结果是______
  2. 嵌套函数中修改外层局部变量的关键字是______,修改全局变量的关键字是______
  3. 执行 print(-5 // 2) 的结果是______,执行 print(-5 % 2) 的结果是______
  4. 用 join() 拼接列表 ["Python","速成","课"] 为 Python|速成|课 的代码是______
  5. 一行多变量赋值 a,b = 1 报错的原因是______input() 接收的用户输入默认是______类型。
  6. 阅读以下代码,回答问题:
1、变量
x = 100
def outer():
    x = 10
    def inner():
        x = 200
    inner()
outer()
print(x)

题目:由该代码可知,定义了整型x,并初始化赋值了100,内层函数修改了x=200,但是又被外层函数调用,又得到了x=10,所以当outer()被调用后,输出的结果为10。
请说出你的看法:______

2、分割线输出
sep_line = "="*5 + "Python" + "="*5
print(sep_line)

题目:由该代码可知,对字符串"="进行了前后5次重复,并进行了拼接,输出的结果是=====Python===== 请说出你的看法:______`

3、解包赋值
lst = [10, 20, 30]
a, b = lst
print(a, b)

题目:由该代码可知,解包赋值会依次取列表的前两个元素赋值给 a 和 b,输出结果是 10 20。
请说出你的看法:______

4、链式赋值
a = b = [1, 2, 3]
b.append(4)
a.append(6)
c = a + b
print(c)

题目:由该代码可知,链式赋值会分别给 a、b 赋值为列表 [1,2,3],修改 b 后仅影响 b,修改 a 后仅影响 a ,然后拼接ab得到c,输出结果是 [1,2,3,6,1,2,3,4]。
请说出你的看法:______

生活需求

小明和小红共享一份购物清单 shop_list(清单内数字为商品价格,0 代表已下架商品),清单初始内容为 [25, 0, 18, 32, 0, 15]。两人分别在各自手机上查看这份清单(小明手机端清单名为 my_list,小红手机端清单名为 your_list),因清单为共享状态会同步。

请完成以下操作,并用代码实现:

  1. 数据清理:用 while 循环遍历清单,移除所有值为 0 的下架商品,遍历过程中必须使用 continue 控制逻辑;
  2. 数据解构:从清理后的清单中提取前 2 个商品价格(分别赋值给 price1price2),剩余商品价格用 *other_prices 接收;
  3. 内存验证:验证小明和小红手机上的清单是否为同一份(通过内存地址判断);
  4. 总价计算:用 while 循环计算清理后清单中所有商品的总价(禁止使用 sum() 内置函数);
  5. 优惠计算:基于总价计算优惠价(总价整除 2,使用 // 运算符);
  6. 结果输出:按指定格式打印所有关键结果(清单内容、内存验证结果、价格解构结果、总价、优惠价)。

前提假设

  • 清理后的清单长度不少于 2,可正常提取前 2 个价格;
  • 所有操作基于共享清单完成,最终以清理后的清单作为结账依据。

请写出你的代码:

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

学习建议

  1. 每个模块先看易错点,再动手写代码,不要直接复制粘贴。
  2. 遇到错误时,优先通过打印变量值排查(如 print (x)),培养调试习惯。
  3. 完成后整理个人 “避坑清单”,标注自己最易忘的知识点,方便后续查阅。

posted on 2025-12-21 22:46  巉滺  阅读(63)  评论(0)    收藏  举报

导航