news 2026/6/26 3:39:35

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

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【6.18】Python 从绝对零开始 — 不是 “复习“,是真正第一次入门教程!

前言

完全没碰过编程、没装过 Python 的同学,跟着本文一步走,不用提前懂任何 C / 计算机基础,全程实操上手,看完就能写出可运行代码。

第 0 步:先确认你的电脑能跑 Python(Windows)

操作流程

  1. 快捷键Win + R,输入cmd回车,打开命令终端
  2. 在黑框里输入校验命令:
py -3 --version
  • 两种结果处理:
  • ✅ 正常:输出Python 3.x.x,代表环境就绪,直接下一步
  • ❌ 未安装:浏览器打开 python.org 下载安装包

安装必勾选Add Python to PATH,不勾选会导致终端识别不到 python 命令

第 1 步:搞懂 Python 到底是什么

Python 属于解释型语言,和 C 语言最大区别:不用提前编译,写完代码直接运行。

最简演示示例

  1. 桌面新建文本文档,重命名为test.py(注意后缀是.py,不是.txt
  2. 文件内写入一行代码:
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 i=0;i<10;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

结尾:入门学习路线小结

  1. 环境校验:py -3 --version确认 Python 正常
  2. 基础语法:变量、print、input、缩进、循环
  3. 第三方拓展:pip 安装工具库,适配硬件、绘图、算法场景
  4. 实操优先:每段代码复制运行,直观看到输出效果,比死记理论更快上手!

单独章节:pyserial 串口通信(单片机 / 硬件必备)

1. 库安装命令

打开 cmd 终端执行:

py -3 -m pip install pyserial

给 Python 增加串口读写能力,用来 STM32、51、Arduino 等 MCU 单片机、串口模块交互。

2. 完整可运行代码

# 导入串口库,等价C语言 #include 头文件 import serial # 1. 初始化串口对象 # 参数说明: # "COM3":设备管理器里你的串口编号,设备不同数字不一样 # 9600:波特率,必须和单片机程序波特率完全一致 # timeout=1:读取超时1秒,无数据就不再阻塞等待 ser = serial.Serial("COM3", 9600, timeout=1) # 2. 向单片机发送字符串 # 字符串前面加 b 代表转为字节流,串口只认二进制字节 # \r\n 是串口常用换行结束符,匹配单片机串口接收判断 ser.write(b"hello mcu\r\n") # 3. 读取单片机发回来的一行数据(读到换行就停止) recv_data = ser.readline() # 4. 字节转utf-8字符串并打印到终端 print("串口收到:", recv_data.decode("utf-8")) # 5. 程序结束必须关闭串口,否则下次打开会报错占用 ser.close()

3. 逐行代码详细讲解

  1. import serial引入串口驱动库,不写这行无法调用串口相关函数,和 C 语言引入头文件逻辑一样。

  2. ser = serial.Serial("COM3", 9600, timeout=1)创建串口实例ser,三个核心参数:

  • 串口号:电脑设备管理器 → 端口 (COM 和 LPT) 查看,比如 COM4、COM5
  • 波特率:9600/115200 等,必须和单片机代码配置一模一样,否则乱码
  • timeout:超时时间,单位秒;设为 1 代表 1 秒没读到数据直接返回空,不会卡死程序
  1. ser.write(b"hello mcu\r\n")串口发送函数:
  • 串口底层只传输字节,普通字符串要加前缀b转成字节数据
  • \r\n回车换行,大部分单片机串口程序以换行作为一帧数据结束标记
  1. recv_data = ser.readline()按行读取串口数据,只要收到\n就停止读取,返回收到的全部字节;超时无数据返回空字节。

  2. recv_data.decode("utf-8")串口返回的是二进制字节,decode("utf-8")将字节转换成我们能看懂的中文 / 英文文本。

  3. ser.close()关闭串口释放资源,忘记关闭会出现「串口被占用,无法打开」报错,每次程序结束都要执行。

4. 常见踩坑解决(硬件新手必看)

  1. 报错FileNotFoundError: [Errno 2] could not open port COM3解决:串口号写错,去电脑设备管理器确认真实 COM 编号;检查 USB 转串口驱动是否装好。

  2. 收到全是乱码 解决:Python 代码波特率、单片机波特率不一致;单片机编码不是 UTF-8,可换成.decode("gbk")尝试。

  3. 运行一次后再运行报串口占用 解决:代码末尾加ser.close();关闭其他串口助手、单片机下载软件。

  4. 收不到任何返回数据 解决:硬件 TX/RX 交叉接线(单片机 TX 接 USB 模块 RX,单片机 RX 接 USB 模块 TX);确认单片机收到指令后有返回数据逻辑。

5. 运行演示效果

单片机收到hello mcu后回复I'm MCU,终端输出:

串口收到: I'm MCU

拓展:循环持续接收数据(硬件调试专用 + 逐行注释讲解)

# 导入串口通信库,用于读写硬件串口 import serial # 导入时间库,用于循环延时,降低CPU占用 import time # 初始化串口对象:串口号COM3、波特率9600、读取超时0.5秒 ser = serial.Serial("COM3", 9600, timeout=0.5) print("串口已打开,持续接收数据,按Ctrl+C停止") # try-except异常捕获:处理用户按下Ctrl+C强制停止程序的场景 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 异常:用户在终端按下 Ctrl+C 终止程序时触发 except KeyboardInterrupt: # 关闭串口,释放硬件资源,防止串口被占用、下次打不开 ser.close() print("串口已关闭,程序退出")

逐行分段详细说明

1. 头文件导入

import serial import time
  • import serial:串口操作核心库,没有它无法和 USB 转串口、单片机通信
  • import time:提供sleep()延时函数,缓解无限循环对 CPU 的消耗

2. 串口初始化

ser = serial.Serial("COM3", 9600, timeout=0.5) print("串口已打开,持续接收数据,按Ctrl+C停止")
  • "COM3":你的 USB 串口设备编号,设备管理器里查看,需要按需修改
  • 9600:波特率,必须和单片机代码波特率完全一致,否则乱码
  • timeout=0.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)
  1. ser.readline()一行读取b串口数据,遇到\n换行符就结束本次读取;0.5 秒没数据返回空字节'b'
  2. if data:只有真正读到数据时才打印,避免不停输出空行
  3. data.decode("utf-8")串口底层传输二进制字节,这行把字节转换成中文 / 英文可读文本
  4. .strip()自动清除字符串前后的\r\n、空格,打印结果干净整洁,不会出现多余空行
  5. time.sleep(0.1)每次循环停顿 0.1 秒,降低循环频率,防止程序满载占用 CPU

5. except 退出处理(重点!硬件调试必加)

except KeyboardInterrupt: ser.close() print("串口已关闭,程序退出")
  • KeyboardInterrupt:专属捕获用户按下Ctrl + C停止程序的异常
  • ser.close():强制关闭串口释放硬件端口 不写这行的坑:直接关终端终止程序,串口会被系统锁住,下次运行代码会报「串口被占用,无法打开」
  • 最后打印提示文字,告知用户串口正常关闭

使用场景说明

  1. 适合单片机持续上报数据:温湿度、电压、传感器数值实时打印
  2. 替代串口助手,用 Python 做自动化数据采集,后续可以扩展:把数据保存到文件、绘图
  3. 支持随时快捷键退出,不会卡死串口,硬件调试非常稳定

运行效果示例

单片机循环发送temp:25.5temp:25.6,终端输出:

串口已打开,持续接收数据,按Ctrl+C停止 收到: temp:25.5 收到: temp:25.6 收到: temp:25.4 # 按下 Ctrl+C 后输出 串口已关闭,程序退出

常见修改点

  1. 改串口号:"COM3""COM4"(设备管理器查看)
  2. 改波特率:9600115200(和单片机程序匹配)
  3. 加快响应速度:time.sleep(0.1)time.sleep(0.05)
  4. 中文乱码:decode("utf-8")decode("gbk")
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/26 3:39:16

2026 做方言语音转文字怎么选?适合日常办公的这一款不踩雷

先回答用户真正关心的问题 作为长期测试AI效率工具的博主&#xff0c;最近不少做田野研究、要处理大量方言访谈的朋友来问这个问题。针对需要处理大量方言访谈、讲座录音的学术研究人员&#xff0c;2026年选方言语音转文字工具&#xff0c;核心优先满足长音频处理稳定性、方言…

作者头像 李华
网站建设 2026/6/26 3:37:25

淘宝SKU颜色图自动分类功能实现原理深度解析

引言 很多做淘宝的朋友在问&#xff1a;“有没有能批量下载淘宝和天猫店铺商品图片的软件” 做服装类目的淘宝卖家都知道&#xff0c;一个商品通常有多个颜色和尺码。每个规格都有对应的细节图。手动下载后&#xff0c;所有图片混在一起&#xff0c;文件名是乱码&#xff0c;根…

作者头像 李华
网站建设 2026/6/26 3:29:19

构建现代开发引擎:从hdevengine理念到实战实现

1. 项目概述&#xff1a;从“hdevengine”看现代开发引擎的演进最近在和一些做工具链和平台开发的朋友交流时&#xff0c;大家频繁提到一个词&#xff1a;hdevengine。乍一看&#xff0c;这个组合词有点意思&#xff0c;它不像一个具体的开源项目名&#xff0c;更像是一个概念或…

作者头像 李华
网站建设 2026/6/26 3:29:19

从经典LQR到学习增强控制:应对模型不确定性与非线性的实践演进

1. 项目概述&#xff1a;当经典最优控制遇上现代学习如果你在机器人、无人机或者自动驾驶领域摸爬滚打过一阵子&#xff0c;那么“LQR”这个词对你来说肯定不陌生。它就像控制理论工具箱里的一把瑞士军刀&#xff0c;结构精巧、理论完备&#xff0c;是处理线性系统最优控制问题…

作者头像 李华
网站建设 2026/6/26 3:29:14

2026 中国电商客服外包服务商评测:4 家主流企业横向对比与选型指南

摘要 随着国内电商行业进入存量竞争阶段&#xff0c;服务体验已成为影响店铺运营效率与用户留存的核心要素&#xff0c;客服外包也从可选的成本优化方案&#xff0c;变为众多商家的标配运营配置。当前国内电商客服外包市场规模持续扩容&#xff0c;但服务商能力分层明显&#…

作者头像 李华
网站建设 2026/6/26 3:28:15

Strichartz估计:非线性波动方程全局解存在性的核心分析工具

1. 项目概述&#xff1a;从物理直觉到数学证明的桥梁在偏微分方程&#xff0c;特别是非线性波动方程的研究领域&#xff0c;有一个问题长期吸引着数学家们的目光&#xff1a;一个初始能量有限的波动&#xff0c;在传播过程中与自身的非线性效应相互作用&#xff0c;是会永远平稳…

作者头像 李华