学习 Python 基础语法与工程环境操作流程
前言一、基础概念虚拟环境可以理解成每个项目专属的「Python 独立工具箱」。每个项目单独一套 Python 解释器和第三方安装包项目之间互不干扰不会出现 A 项目装的包覆盖 B 项目依赖的情况删掉环境文件夹就能一键重置相当于带隔离效果的 Python 运行沙盒。解释器就是运行 Python 代码的核心程序我们输入的python命令本质上就是调用解释器来执行代码。虚拟环境的核心就是给每个项目分配一个独立的解释器装包都只装到对应项目的环境里。数据类型Python 里数据的「身份标签」不同类型的数据能参与的操作不一样比如数字能做加减运算、字符串能做拼接搞错类型就会触发报错。分支循环分支就是让代码按条件走不同的执行路径循环就是让代码重复执行同一段逻辑是程序实现条件判断和批量处理的核心。PEP 8Python 官方的代码书写规范约定了缩进、命名、空行等格式标准保证代码的可读性是团队协作写代码的通用标准。二、Python 环境搭建核心操作学习2.1 标准 venv 虚拟环境搭建前置检查命令python --version执行后效果输出当前 Python 版本确认环境可用创建虚拟环境命令python -m venv .venv执行后效果当前目录生成.venv隐藏文件夹里面包含独立的 Python 解释器和第三方包目录激活环境命令Windows PowerShell.venv\Scripts\Activate.ps1Windows CMD.venv\Scripts\activate.batmacOS / Linuxsource .venv/bin/activate激活成功标志命令行提示符前出现(.venv)标识退出虚拟环境命令deactivate说明必须先激活环境再执行pip install装包这样只会影响当前.venv环境不会污染全局 Python。2.2 uv 高性能环境管理一句话说明uv 是更高效的 Python 版本与包管理器比原生 pip 速度快很多还能省去手动激活环境的步骤创建虚拟环境命令uv venv效果等价于python -m venv .venv自动生成.venv目录创建速度更快安装第三方包命令uv pip install 包名效果等价于激活后的pip install自动对应当前项目的.venv环境运行脚本命令uv run python 脚本名.py效果无需手动激活环境自动使用.venv里的解释器运行代码查看可用 Python 版本命令uv python list2.3 环境状态验证方法验证脚本保存为env_check.pyimport sys print(解释器路径, sys.executable) print(环境根目录, sys.prefix) print(Python 版本, sys.version.split()[0]) print(是否在虚拟环境中, sys.prefix ! sys.base_prefix)运行命令python env_check.py成功标志最后一行输出是否在虚拟环境中 True三、核心语法与数据类型学习3.1 变量与基础数据类型变量定义规则无需声明类型直接赋值即可变量类型随赋值的值而定几种基础数据类型字符串str文本内容用引号包裹例如name 张三整数int整数数字例如age 28浮点数float带小数的数字例如height 1.75布尔值bool只有True和False两个值例如is_student False列表List元组Tuple集合set字典Dictionary按是否可变可以分为以下两类不可变数据4 个Number数字、String字符串、bool布尔、Tuple元组可变数据3 个List列表、Dictionary字典、Set集合此外还有一些高级的数据类型如字节数组类型 bytes。命名规范字母或下划线开头区分大小写不能和 Python 关键字重名约定变量和函数用小写蛇形命名snake_case常量用全大写类名用大驼峰命名3.2 常用运算符算术运算符加减乘为正常的 - */真除法永远返回 float 类型例如7 / 2 3.5//整除向下取整返回 int 类型例如7 // 2 3%取余返回除法的余数例如7 % 2 1**幂运算例如2 ** 10 1024比较运算符、!、、、、运算结果是布尔值说明比较的是值是否相等int 和 float 只要值相等就会返回 True逻辑运算符and且短路执行、or或短路执行、not非身份运算符is/is not说明判断是不是内存里的同一个对象只用来判断None、True、False这类单例日常判等一律用成员运算符in / not in作用是测试「一个值是否属于某个容器 / 序列」最终返回布尔值True/False。3.3 类型转换与格式化输出常用类型转换函数int()、float()、str()、bool()f-string 格式化输出最常用基础用法在字符串前加f花括号内直接写表达式例如print(f{name} 今年 {age} 岁)保留小数写法f{价格:.2f}可控制输出的小数位数四、分支循环与代码规范学习4.1 分支结构基础语法格式if 条件1: 执行语句1 elif 条件2: 执行语句2 else: 执行语句3注意事项条件从上到下依次判断命中即跳出不再判断后面的条件范围严格的条件写在前面范围大的条件写在后面4.2 循环结构for 循环用于遍历可迭代对象基础语法for item in 序列: 执行语句带序号遍历for index, item in enumerate(序列, start1):序号从 1 开始方便对齐用户输入range(1, 6)生成 1~5 的整数序列不包含末尾的 6while 循环条件为真就持续执行基础语法while 条件: 执行语句循环控制关键字break跳出整个循环continue跳过本轮剩余语句直接进入下一轮循环else循环正常结束未被 break时执行for / while 都支持4.3 PEP 8 代码规范缩进规则统一用 4 个空格绝对不能混用 Tab 和空格运算符空格规则运算符两侧各加一个空格空行规则顶层函数 / 类之间空两行类内方法之间空一行命名规则变量函数蛇形命名、常量全大写、类名大驼峰行长度规则一行不超过 79 个字符4.4 调试器基础使用启动命令行调试命令python -m pdb 脚本名.py常用调试指令b 函数名在函数入口处打断点c运行程序到断点处p 变量名查看当前变量的取值n单步执行下一行代码q退出调试器五、实战命令行待办清单工具实现目标做一个内存版的交互式待办工具支持添加、列出、完成三个核心功能能处理空输入、非法序号、序号越界三类边界情况核心数据结构用列表存储所有待办每个待办是一个字典包含标题和完成状态核心功能函数add(标题)添加一条待办空内容直接拒绝并提示list_todos()列出所有待办带序号和完成标记无数据时给出提示done(序号)把指定序号的待办标记为完成校验序号合法性越界或非法给出提示运行方式执行python todo.py进入交互模式输入对应命令操作todos [] #创建空列表 def add(title): #添加任务但空任务会被拒绝 title title.strip() #strip 刮掉字符串两头的空格 / 空白中间不动。 if not title: #判断标题是否为空 print(任务标题不能为空) return todos.append({title: title, done: False}) print(f已添加任务#{len(todos)} {title}) def list_todos(): #列出所有任务 if not todos: print(暂无任务) return for index, todo in enumerate(todos, start1): mark x if todo[done] else print(f{index}. [{mark}] {todo[title]}) def done(number): if not number.isdigit(): print(操作失败请输入正确数字) return index int(number) - 1 if index 0 or index len(todos): print(f操作失败没有第 {number} 条待办当前共 {len(todos)} 条) return if todos[index][done]: print(f第 {number} 条已经完成过了) return todos[index][done] True print(f已完成 #{number} {todos[index][title]}) add(复习 PEP 8) add( ) # 只有空格被 strip() 之后为空应当被拒绝 add(写课后练习) list_todos() done(0) done(1.5) done(abc) done(2) done(9) # 越界序号应当提示而不是抛 IndexError done(2) list_todos()六、综合示例完整交互式待办清单工具6.1 示例目标交付一个单文件命令行待办清单工具todo1.py运行后进入命令循环支持add 内容添加待办、list列出全部待办带序号与完成标记、done 序号把指定条目标记为已完成并内置help与quit。所有非法输入都给出中文提示而不是崩溃。数据保存在内存列表中退出时不保存。6.2 完整代码实现todos [] # 创建空列表 HELP 可用命令 add 内容 添加一条待办 list 列出全部待办 done 序号 把指定序号标记为已完成 help 显示本帮助 quit 退出程序 def add(title): # 添加任务但空任务会被拒绝 title title.strip() # strip 刮掉字符串两头的空格 / 空白中间不动。 if not title: # 判断标题是否为空 print(任务标题不能为空) return todos.append({title: title, done: False}) print(f已添加任务#{len(todos)} {title}) def list_todos(): # 列出所有任务 if not todos: print(暂无任务) return for index, todo in enumerate(todos, start1): mark x if todo[done] else print(f{index}. [{mark}] {todo[title]}) def done(number): if not number.isdigit(): print(操作失败请输入正确数字) return index int(number) - 1 if index 0 or index len(todos): print(f操作失败没有第 {number} 条待办当前共 {len(todos)} 条) return if todos[index][done]: print(f第 {number} 条已经完成过了) return todos[index][done] True print(f已完成 #{number} {todos[index][title]}) def dispatch(raw): parts raw.split(maxsplit1) command parts[0].lower() arguments parts[1] if len(parts) 1 else if command add: add(arguments) elif command list: list_todos() elif command done: done(arguments) elif command help: print(HELP) elif command in [exit, quit, q]: print(已退出本次数据未保存) return False else: print(f未知命令{command}输入 help 查看用法) return True def main(): print(待办清单) print(HELP) while True: # EOFError输入被重定向结束KeyboardInterrupt用户按下 CtrlC try: raw input(todo ).strip() except (EOFError, KeyboardInterrupt): print(\n已退出本次数据未保存) break if not raw: continue if not dispatch(raw): break if __name__ __main__: main()6.3 运行效果演示在命令行执行python todo.py依次输入命令程序输出如下6.4 关键设计解析架构设计思路拆成add/list_todos/done三个功能函数 一个dispatch命令分发器 一个main主循环让「数据处理」和「输入解析」互不干扰。后续改成命令行参数形式或者加文件持久化只需要改main和dispatch核心功能函数不用动。数据结构选择用list[dict]存储待办数据而不是两个平行列表。后续加优先级、创建时间这类字段只需要改字典里的键不会出现下标错位的问题。边界处理原则所有用户输入都在函数内部先校验再处理异常不冒泡到主循环。保证程序遇到非法输入只给提示不会崩溃退出。工程规范加上if __name__ __main__:入口守卫文件既可以直接运行也可以被其他文件导入复用。七、动手练习7.1 基础练习账单计算练习写bill.py单价19.9、数量3、会员折扣0.85bool变量is_member True控制是否打折。用 f-string 输出单价、数量、折后总价保留两位小数并打印总价的类型。要求折扣用一行rate 0.85 if is_member else 1.0完成不要写完整if语句块。unit_price 19.9 quantity 3 total_price unit_price * quantity def discount(price, is_member): rate 0.85 if is_member else 1.00 return price * rate total discount(total_price, True) print(f单价{unit_price:.2f}数量{quantity}折扣后的总价为{total:.2f}) print(type(total))运行结果代码改错题下面代码有 3 处错误找出并改正提示input()返回的是字符串、Tab 与空格混用、else的缩进层级。score input(请输入成绩) if score 90: print(优秀) elif score 60: print(及格) else: print(不及格)问题1.print(及格)前是使用的是TAB 但上下行使用空格导致不匹配2.else:的缩进层级不与if/elif平级3.score input(请输入成绩)中input返回的值永远是字符串而字符串不能和int类型比较解决呈现score int(input(请输入成绩)) if score 90: print(优秀) elif score 60: print(及格) else: print(不及格)7.2 进阶练习成绩分级统计写grade_report.py对成绩列表[92, 78, 55, 100, 61, -3, 88]逐个分级A≥90、B≥80、C≥60、D60遇到非法成绩score 0 or score 100用continue跳过并打印一行提示最后用字典统计各等级人数并输出。要求用for遍历不要用下标访问。grade_table [92, 78, 55, 100, 61, -3, 88] level_count {A: 0, B: 0, C: 0, D: 0} for score in grade_table: if score 0 or score 100: print(f成绩 {score} 无效) continue if score 90: level A elif score 80: level B elif score 60: level C else: level D level_count[level] 1 print(level_count)待办工具增加删除功能在综合示例todo1.py的基础上增加rm 序号删除命令。需要处理三个边界序号非数字、序号越界、删除后列表变空时list要正确显示「暂无待办」。同时注意删除操作不能在for遍历todos的过程中进行。def remove(number): if not number.isdigit(): print(操作失败请输入正确数字) return index int(number) - 1 if index 0 or index len(todos): print(f操作失败没有第 {number} 条待办当前共 {len(todos)} 条) return removed todos.pop(index) print(f已删除 #{number} {removed[title]})另外在dispatch中添加入口elif command rm: remove(arguments)7.3 挑战练习一次性命令行待办工具把todo.py改造成一次性命令形态python todo.py add 买牛奶、python todo.py list、python todo.py done 1用sys.argv解析参数。 进阶要求add支持可选参数--priority high|normal|lowlist时未完成的排在前面、同状态内按优先级排序。说明因为还没学文件 I/O数据仍然只保存在内存里可以在代码注释里写清楚后续升级为 JSON 持久化的改造思路。import sys todos [] # 创建空列表 Priority {high: 0, normal: 1, low: 2} HELP 可用命令 python todo1.py add 内容 python todo1.py list python todo1.py done 序号 python todo1.py rm 序号 python todo1.py help def add(title, prioritynormal): # 添加任务但空任务会被拒绝 title title.strip() # strip 刮掉字符串两头的空格 / 空白中间不动。 if not title: # 判断标题是否为空 print(任务标题不能为空) return todos.append({title: title, done: False, priority: priority}) print(f已添加任务#{len(todos)} {title} (优先级{priority})) def todo_key(todo): return (todo[done], Priority[todo[priority]]) def list_todos(): # 列出所有任务 if not todos: print(暂无待办) return status sorted(todos, keytodo_key) for index, todo in enumerate(status, start1): mark x if todo[done] else print(f{index}. [{mark}] {todo[title]} ({todo[priority]})) def done(number): if not number.isdigit(): print(操作失败请输入正确数字) return index int(number) - 1 if index 0 or index len(todos): print(f操作失败没有第 {number} 条待办当前共 {len(todos)} 条) return if todos[index][done]: print(f第 {number} 条已经完成过了) return todos[index][done] True print(f已完成 #{number} {todos[index][title]}) def remove(number): if not number.isdigit(): print(操作失败请输入正确数字) return index int(number) - 1 if index 0 or index len(todos): print(f操作失败没有第 {number} 条待办当前共 {len(todos)} 条) return removed todos.pop(index) print(f已删除 #{number} {removed[title]}) def main(): if len(sys.argv) 2: print(HELP) return 0 command sys.argv[1].lower() arguments sys.argv[2:] if command add: title [] priority normal i 0 while i len(arguments): if arguments[i] --priority and i 1 len(arguments): priority arguments[i1] i 2 else: title.append(arguments[i]) i 1 if priority not in Priority: print(f优先级 {priority} 不存在) return add( .join(title), priority) elif command list: list_todos() elif command done: done(arguments[0] if arguments else ) elif command rm: remove(arguments[0] if arguments else ) elif command help: print(HELP) else: print(f未知命令{command}输入 help 查看用法) if __name__ __main__: main()八、本次学习踩坑 小问题记录1. 明明退出了虚拟环境但运行测试脚本依旧显示存在虚拟环境原因虽然执行了deactivate退出了shell 层面的虚拟环境但命令uv run会自动重新激活项目下的.venv再去执行 python 脚本所以脚本运行时仍然跑在虚拟环境里面sys.prefix ! sys.base_prefix结果就是True。解决方法不要用uv run直接调用你系统原生的 python来运行脚本python env_check.py2. 重新激活后发现虚拟环境名是文件夹名原因uv 文档uv venv默认提示符规则如果你直接执行uv venv不写路径在当前目录生成.venv文件夹提示符默认是(.venv)如果在pyproject.toml项目目录下创建虚拟环境uv 会自动把项目文件夹名作为提示符名称也就是day1010所以激活后显示(day1010)只是终端显示名字变了虚拟环境本身还是.venv功能完全正常3. 命名规范相关snake_case蛇形命名适用变量、函数名规则全部小写单词之间用下划线_分隔。UPPER_CASE全大写下划线常量适用常量不会修改的值规则全部大写单词下划线分隔。CamelCase大驼峰 / PascalCasePython 类名适用class 类名规则每个单词首字母大写没有下划线。4. 字符串拼接问题原因只能把字符串和字符串拼接不能把浮点数 (float) 直接拼到字符串上解决方法方法1f-string print(f商品总价为{total_price})方法2把数字转成字符串 str() print(商品总价为 str(total_price))方法3print多参数逗号分隔自动加空格 print(商品总价为, total_price)5. if __name__ __main__: main()当这个文件直接被运行时才执行main()如果这个文件被别的 Python 文件 import导入就不会自动执行 main ()。两个概念__name__Python 内置的特殊变量如果你直接运行这个文件python todo.py→__name__的值就是字符串__main__如果别的代码写import todo把 todo.py 当成模块导入 →__name__的值变成todo文件名不等于__main__if __name__ __main__:条件成立才执行下面缩进的代码main()6.is和的使用比较值is比较身份是不是内存里的同一个对象。日常判等一律用is只在与单例比较时使用即if value is None:、if flag is True:后者通常直接写if flag:更好。容易踩的坑是a [1, 2]; b [1, 2]; a is b为False因为两个字面量列表是两个不同对象而a is None永远安全因为None全进程只有一个。反过来用is比较整数有时「碰巧正确」CPython 缓存了 -5~256但换解释器或数值超出范围就会变成False属于典型的隐性 bug。7. “““ ”””或‘‘‘ ’’’的使用三引号多行字符串triple-quote string用三个双引号包裹也可以用三个单引号可以直接换行保留原文的换行、空格缩进不用手动写\n8. 缩进导致进程意外结束def dispatch(raw): parts raw.split(maxsplit1) command parts[0].lower() arguments parts[1] if len(parts) 1 else if command add: add(arguments) elif command list: list_todos() elif command done: done(arguments) elif command help: print(HELP) elif command in [exit, quit, q]: print(已退出本次数据未保存) return False else: print(f未知命令{command}输入 help 查看用法) return Trueif not raw: continue if not dispatch(raw): break原因return True的缩进位置不对导致它只属于else分支正常执行的命令都拿不到返回值。所有if / elif / else是同一层级 每个分支下面缩进的代码只在这个分支成立时才会执行。在主函数main中Python 里None属于假值和False、0、一样dispatch(raw)返回Nonenot None→ 结果是True条件成立 → 执行break→ 跳出循环 → 程序退出同理输入list、done、help都会返回 None都会直接退出。 只有输入「未知命令」的时候才会走进 else执行return True程序才会继续。解决方法把return True取消一层缩进放到整个函数的末尾和if/elif/else平级def dispatch(raw): parts raw.split(maxsplit1) command parts[0].lower() arguments parts[1] if len(parts) 1 else if command add: add(arguments) elif command list: list_todos() elif command done: done(arguments) elif command help: print(HELP) elif command in [exit, quit, q]: print(已退出本次数据未保存) return False else: print(f未知命令{command}输入 help 查看用法) return True9. 在做挑战练习时修改为命令行模式后发现add事件后list无待办事项原因todos是内存里的变量。第一次运行结束时程序退出内存里那[原神]就被清空了。第二次运行 list 时todos又是一个全新的空列表[]。所以 list 自然看不到上次 add 的那条。不是 bug是命令行模式必然的结果。解决方法学习文件 I/O 把内存里的todos存进硬盘文件即可九、学习总结7.1 本次学会的完整操作流程环境搭建完整流程新建项目文件夹并进入用uv venv或python -m venv .venv创建虚拟环境VS Code 里按CtrlShiftP选择.venv对应的 Python 解释器用uv pip install或激活环境后python -m pip install安装需要的第三方包运行env_check.py确认环境状态输出是否在虚拟环境中True即为搭建成功基础代码编写流程按 PEP 8 规范定义变量根据业务需求选择对应的数据类型用if-elif-else实现条件判断注意条件的先后顺序用for/while实现循环逻辑配套break/continue控制循环流程用 f-string 格式化输出内容不同类型数据运算前先做类型转换遇到 bug 用 pdb 调试器打断点查看变量真实值定位问题命令行小工具开发流程用列表 字典存储数据结构方便后续扩展字段把每个核心功能拆成独立函数函数内部处理完所有边界情况编写分发函数解析输入命令对应调用不同的功能函数主循环接收用户输入做好异常捕获保证程序不轻易崩溃加上if __name__ __main__:守卫保证文件既可被导入也可直接运行十、附录速查表主题语法/命令说明创建虚拟环境python -m venv .venv标准库自带生成.venv目录无输出即成功uv 建环境并运行uv venv/uv run python main.py无需手动激活uv run自动使用.venv解释器确认当前环境python -c import sys; print(sys.prefix)输出应为.venv路径sys.prefix ! sys.base_prefix为True表示在虚拟环境中安全装包python -m pip install requests永远用python -m pip避免 pip 与 python 指向不同环境整除与幂7 // 2/2 ** 10//取整返回int/永远返回float判等与身份a b/a is None值相等用is仅用于None、True、False带序号遍历for i, x in enumerate(items, start1):代替range(len(items))序号从 1 开始便于对齐用户输入f-string 格式化print(f总价{price:.2f})花括号内写表达式:.2f保留两位小数命令行调试python -m pdb script.pyb 函数名打断点、n单步、p 变量查看、c继续、q退出

相关新闻

陈,读懂生理药理实验多用仪

陈,读懂生理药理实验多用仪

生理药理刺激多用仪属于多功能综合性实验设备,依托数字集成电路对振荡频率分频处理,输出多种标准频率与时间信号。设备可输出前沿陡直、平顶稳定的标准矩形刺激波,波宽与输出电压连续可调,支持单次、双次、定时、连续等多种刺激输…

2026/10/13 6:59:55 阅读更多 →
MCP基本使用

MCP基本使用

MCP版本用日期定义,最早的正式版本2024-11-05,截止当前最新的是2026-07-28(这一版协议有根本性改动,Python SDK需要使用 v2)。下面的概念是针对 2024-11-05 版的,2026-07-28 变成无状态协议了,下…

2026/10/13 6:59:55 阅读更多 →
企业微信 AI 客服答不准怎么办?兜底话术与置信度阈值

企业微信 AI 客服答不准怎么办?兜底话术与置信度阈值

客户问的是一款产品的偏门参数,AI 一本正经地答错了。这种错比不回复更伤:客户按错信息做了决定,回头算在品牌头上。答不准通常不是模型变笨,而是两件事没配好——该兜底的时候它硬答,该收进知识库的问题它够不着。## …

2026/10/13 6:59:55 阅读更多 →

最新新闻

Spring Boot 3.x API密钥轮换机制:从状态机设计到平滑过渡

Spring Boot 3.x API密钥轮换机制:从状态机设计到平滑过渡

做后端开发这几年,只要接口走的是 API 密钥认证,密钥轮换就是一个绕不开的话题。Spring Boot 3.x 项目里,密钥轮换的坑尤其隐蔽:表面上看,更新一下数据库里的 key,客户端换一下配置就行,但实际一…

2026/10/13 7:38:09 阅读更多 →
深度学习优化算法与参数初始化:从梯度下降到动量实战

深度学习优化算法与参数初始化:从梯度下降到动量实战

2020年2月16日,我的深度学习笔记写到第八篇。上一篇从经验风险最小化聊到泛化误差,基本把“优化目标”讲清楚了;但目标归目标,真正让模型训练起来的是优化算法本身。这篇笔记把镜头拉到更新公式这一层,重点拆两块&…

2026/10/13 7:38:09 阅读更多 →
真三MOD专用蓝宝石渲染管线2.2b优化指南

真三MOD专用蓝宝石渲染管线2.2b优化指南

简介:本资源是魔兽争霸III玩家专用的自定义地图优化版本,面向熟悉真三国无双类RPG地图的中高级玩家,解决原版平衡性不足、技能冗余或运行卡顿等问题。压缩包为RAR格式,共2个文件:核心地图文件BT蓝宝石专署2.2b.w3x&…

2026/10/13 7:38:09 阅读更多 →
SpringBoot毕业生就业去向登记管理系统:毕设源码与二次开发指南

SpringBoot毕业生就业去向登记管理系统:毕设源码与二次开发指南

简介:这份资源是面向计算机专业毕业生与Java初学者的一套完整就业去向登记管理系统源码,可直接作为毕业设计或课程设计参考。系统基于SpringBoot框架开发,覆盖需求分析、总体设计、详细设计与功能测试全流程,包含功能结构、数据结…

2026/10/13 7:38:09 阅读更多 →
Spring Boot 3.x API密钥认证与密钥轮换实战指南

Spring Boot 3.x API密钥认证与密钥轮换实战指南

“你的服务对接了十几个下游调用方,大家约定好每次请求头里带一个 API Key,服务端校验通过才放行。密钥用了一年,安全团队突然要求立即轮换,你改配置、重启、发通知,结果重启期间服务不可用,调用方新旧密钥…

2026/10/13 7:38:09 阅读更多 →
链表分解:从内存布局到指针偏移的底层实践

链表分解:从内存布局到指针偏移的底层实践

1. 项目概述:这不是“拆链子”,而是把链表“掰开揉碎”讲清楚 “链表的分解”这五个字,乍看像一道算法题的标题,但实际在一线教学、代码评审和系统调试中,它代表一种极其关键的底层思维训练——不是单纯地写个反转或删…

2026/10/13 7:37:09 阅读更多 →

日新闻

物联网系统集成避坑指南:从选型到验收的关键要点

物联网系统集成避坑指南:从选型到验收的关键要点

做了这么多年物联网系统集成的项目,我最大的感受是,大部分坑不是出在技术前沿,而是出在一些看起来很平常的地方。设备选了便宜的、协议没问清楚、现场没摸透、验收标准写得含糊——这些细枝末节,最后都会变成延期、超支和扯皮的大…

2026/10/13 0:00:57 阅读更多 →
ESP32舵机控制全攻略:从PWM原理到高级玩法与常见故障排查

ESP32舵机控制全攻略:从PWM原理到高级玩法与常见故障排查

如果你玩ESP32有一阵子了,很难不碰到舵机控制这道坎。做智能小车要转方向,做机械臂要抬关节,做云台要偏航俯仰,背后都是同一个东西在干活:舵机。而我见过太多人卡在“代码能编译、舵机就是不听话”这个阶段&#xff0c…

2026/10/13 0:00:57 阅读更多 →
CAN总线原理与STM32实战:抗干扰、仲裁、错误处理全解析

CAN总线原理与STM32实战:抗干扰、仲裁、错误处理全解析

1. 为什么CAN总线至今仍是工业现场的“硬通货”?——从汽车底盘到智能温室的真实需求你有没有拆过一辆老款燃油车的中控台?或者调试过某高校实验室里那台跑着Modbus协议却频频丢帧的PLC控制柜?又或者,在某个农业物联网项目里&…

2026/10/13 0:00:57 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/13 2:54:56 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/12 0:16:38 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/13 1:58:08 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 21:05:09 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 14:48:49 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 18:11:17 阅读更多 →