【6.18】Python 从绝对零开始 — 不是 “复习“,是真正第一次入门教程!

📅 2026/6/26 3:39:43
【6.18】Python 从绝对零开始 — 不是 “复习“,是真正第一次入门教程!
前言完全没碰过编程、没装过 Python 的同学跟着本文一步走不用提前懂任何 C / 计算机基础全程实操上手看完就能写出可运行代码。第 0 步先确认你的电脑能跑 PythonWindows操作流程快捷键Win R输入cmd回车打开命令终端在黑框里输入校验命令py -3 --version两种结果处理✅ 正常输出Python 3.x.x代表环境就绪直接下一步❌ 未安装浏览器打开 python.org 下载安装包安装必勾选Add Python to PATH不勾选会导致终端识别不到 python 命令第 1 步搞懂 Python 到底是什么Python 属于解释型语言和 C 语言最大区别不用提前编译写完代码直接运行。最简演示示例桌面新建文本文档重命名为test.py注意后缀是.py不是.txt文件内写入一行代码print(hello)cmd 终端切换到文件所在文件夹执行运行命令py -3 test.py终端直接输出结果hello第 2 步一张表看懂 Python 和 C 语言六大核心区别如果你之前接触过 C 语言这张表能快速帮你转换思维零基础同学简单浏览有印象即可不用死记硬背。概念C 语言写法Python 写法直观感受变量int a 10;必须提前声明数据类型a 10无需声明直接赋值Python 代码更懒、更省事代码块{}大括号包裹代码段4 个空格缩进划分代码块缩进错一个空格程序直接报错数组int arr[5];创建时固定长度不能变长arr [1,2,3,4,5]随时增删元素长度自由变化Python 数据容器更灵活函数int f(int x){ return x*2; }def f(x): return x*2Python 定义函数极简循环for(int i0;i10;i)for i in range(10):range(10)等价数字 0~9不用手动控制自增简洁易懂打印输出printf(%d\n, a);print(a)一行搞定打印不用复杂格式化第 3 步你的第一个完整交互式 Python 程序新建文件day5.py复制下方全部代码包含注释讲解# # 号开头是单行注释程序运行时会自动忽略 # input() 功能从键盘读取用户输入的文字 name input(你叫什么名字) # print() 功能把内容打印输出到终端屏幕 print(你好 name )运行 效果cmd 终端执行py -3 day5.py终端提示输入名字输入后回车示例交互你叫什么名字謓泽 你好謓泽第 4 步用 pip 安装第三方功能库拓展 Python 能力Python 自带基础功能有限串口、绘图、数学计算、仪器控制都需要第三方库安装工具pip随 Python 自带。通用安装命令模板py -3 -m pip install 库名工程常用库实操安装示例# 串口通信库对接单片机、MCU硬件 py -3 -m pip install pyserial # 仪器控制库程控电源、示波器、网口仪器 py -3 -m pip install pyvisa # 绘图可视化库绘制波形、数据图表 py -3 -m pip install matplotlib # 数值计算库矩阵、信号、数学运算 py -3 -m pip install numpy库使用规则安装完成后代码开头用import导入库才能调用功能import作用等价 C 语言里的#include。# 示例导入数值计算库 numpy import numpy结尾入门学习路线小结环境校验py -3 --version确认 Python 正常基础语法变量、print、input、缩进、循环第三方拓展pip 安装工具库适配硬件、绘图、算法场景实操优先每段代码复制运行直观看到输出效果比死记理论更快上手单独章节pyserial 串口通信单片机 / 硬件必备1. 库安装命令打开 cmd 终端执行py -3 -m pip install pyserial给 Python 增加串口读写能力用来 STM32、51、Arduino 等 MCU 单片机、串口模块交互。2. 完整可运行代码# 导入串口库等价C语言 #include 头文件 import serial # 1. 初始化串口对象 # 参数说明 # COM3设备管理器里你的串口编号设备不同数字不一样 # 9600波特率必须和单片机程序波特率完全一致 # timeout1读取超时1秒无数据就不再阻塞等待 ser serial.Serial(COM3, 9600, timeout1) # 2. 向单片机发送字符串 # 字符串前面加 b 代表转为字节流串口只认二进制字节 # \r\n 是串口常用换行结束符匹配单片机串口接收判断 ser.write(bhello mcu\r\n) # 3. 读取单片机发回来的一行数据读到换行就停止 recv_data ser.readline() # 4. 字节转utf-8字符串并打印到终端 print(串口收到, recv_data.decode(utf-8)) # 5. 程序结束必须关闭串口否则下次打开会报错占用 ser.close()3. 逐行代码详细讲解import serial引入串口驱动库不写这行无法调用串口相关函数和 C 语言引入头文件逻辑一样。ser serial.Serial(COM3, 9600, timeout1)创建串口实例ser三个核心参数串口号电脑设备管理器 → 端口 (COM 和 LPT) 查看比如 COM4、COM5波特率9600/115200 等必须和单片机代码配置一模一样否则乱码timeout超时时间单位秒设为 1 代表 1 秒没读到数据直接返回空不会卡死程序ser.write(bhello mcu\r\n)串口发送函数串口底层只传输字节普通字符串要加前缀b转成字节数据\r\n回车换行大部分单片机串口程序以换行作为一帧数据结束标记recv_data ser.readline()按行读取串口数据只要收到\n就停止读取返回收到的全部字节超时无数据返回空字节。recv_data.decode(utf-8)串口返回的是二进制字节decode(utf-8)将字节转换成我们能看懂的中文 / 英文文本。ser.close()关闭串口释放资源忘记关闭会出现「串口被占用无法打开」报错每次程序结束都要执行。4. 常见踩坑解决硬件新手必看报错FileNotFoundError: [Errno 2] could not open port COM3解决串口号写错去电脑设备管理器确认真实 COM 编号检查 USB 转串口驱动是否装好。收到全是乱码 解决Python 代码波特率、单片机波特率不一致单片机编码不是 UTF-8可换成.decode(gbk)尝试。运行一次后再运行报串口占用 解决代码末尾加ser.close()关闭其他串口助手、单片机下载软件。收不到任何返回数据 解决硬件 TX/RX 交叉接线单片机 TX 接 USB 模块 RX单片机 RX 接 USB 模块 TX确认单片机收到指令后有返回数据逻辑。5. 运行演示效果单片机收到hello mcu后回复Im MCU终端输出串口收到 Im MCU拓展循环持续接收数据硬件调试专用 逐行注释讲解# 导入串口通信库用于读写硬件串口 import serial # 导入时间库用于循环延时降低CPU占用 import time # 初始化串口对象串口号COM3、波特率9600、读取超时0.5秒 ser serial.Serial(COM3, 9600, timeout0.5) print(串口已打开持续接收数据按CtrlC停止) # try-except异常捕获处理用户按下CtrlC强制停止程序的场景 try: # while True 无限循环持续监听串口 while True: # readline() 读取串口一行数据读到换行符\n返回超时无数据返回空字节 data ser.readline() # 判断如果data不为空代表读到了单片机发送的数据 if data: # decode(utf-8)二进制字节转可读字符串 # .strip()自动删掉首尾换行、空格、回车打印更整洁 print(收到, data.decode(utf-8).strip()) # 延时0.1秒避免死循环疯狂占用电脑CPU资源 time.sleep(0.1) # 捕获 KeyboardInterrupt 异常用户在终端按下 CtrlC 终止程序时触发 except KeyboardInterrupt: # 关闭串口释放硬件资源防止串口被占用、下次打不开 ser.close() print(串口已关闭程序退出)逐行分段详细说明1. 头文件导入import serial import timeimport serial串口操作核心库没有它无法和 USB 转串口、单片机通信import time提供sleep()延时函数缓解无限循环对 CPU 的消耗2. 串口初始化ser serial.Serial(COM3, 9600, timeout0.5) print(串口已打开持续接收数据按CtrlC停止)COM3你的 USB 串口设备编号设备管理器里查看需要按需修改9600波特率必须和单片机代码波特率完全一致否则乱码timeout0.5读取超时 0.5 秒超过 0.5 秒没收到数据直接返回空程序不会卡死3. try 异常保护块try: while True:try把主循环放进异常捕获区作用是优雅退出while True无限循环实现持续监听串口数据流不用每次运行一次代码4. 串口读取 打印逻辑data ser.readline() if data: print(收到, data.decode(utf-8).strip()) time.sleep(0.1)ser.readline()按一行读取b串口数据遇到\n换行符就结束本次读取0.5 秒没数据返回空字节bif data:只有真正读到数据时才打印避免不停输出空行data.decode(utf-8)串口底层传输二进制字节这行把字节转换成中文 / 英文可读文本.strip()自动清除字符串前后的\r、\n、空格打印结果干净整洁不会出现多余空行time.sleep(0.1)每次循环停顿 0.1 秒降低循环频率防止程序满载占用 CPU5. except 退出处理重点硬件调试必加except KeyboardInterrupt: ser.close() print(串口已关闭程序退出)KeyboardInterrupt专属捕获用户按下Ctrl C停止程序的异常ser.close()强制关闭串口释放硬件端口 不写这行的坑直接关终端终止程序串口会被系统锁住下次运行代码会报「串口被占用无法打开」最后打印提示文字告知用户串口正常关闭使用场景说明适合单片机持续上报数据温湿度、电压、传感器数值实时打印替代串口助手用 Python 做自动化数据采集后续可以扩展把数据保存到文件、绘图支持随时快捷键退出不会卡死串口硬件调试非常稳定运行效果示例单片机循环发送temp:25.5、temp:25.6终端输出串口已打开持续接收数据按CtrlC停止 收到 temp:25.5 收到 temp:25.6 收到 temp:25.4 # 按下 CtrlC 后输出 串口已关闭程序退出常见修改点改串口号COM3→COM4设备管理器查看改波特率9600→115200和单片机程序匹配加快响应速度time.sleep(0.1)→time.sleep(0.05)中文乱码decode(utf-8)→decode(gbk)