Python 语法入门:先把数据读进程序
沿着已有 C 基础,补上缩进、列表、切片、模块和对象。最后读两行采样记录,为后面的数据处理准备最小语言工具。
1 · 入口、缩进和变量怎样读
完整 Python 3 程序
def average(values):
return sum(values) / len(values)
def main():
readings = [3900, 4000, 4100]
for value in readings:
print(value)
print(average(readings))
if __name__ == "__main__":
main()def 定义函数,冒号后用一致缩进表示函数或循环体。Python 不用 C 的花括号和行末分号。变量无需先写 int 类型,但对象仍有具体类型;把文字当数字计算依然会报错。/ 是除法,// 是向下取整除法,与负数时的 C 整数除法习惯有差别。
最后两行表示这个文件作为程序执行时调用 main;被其他脚本 import 时不自动运行该入口。先让每个小文件能直接执行,也能复用其中已解释的函数。
2 · 列表、字典与切片
放在函数里运行
readings = [3900, 4000, 4100]
first_two = readings[:2]
last = readings[-1]
names = {0: "still", 1: "moving"}
for index, value in enumerate(readings):
print(index, value)
print(first_two, last, names[1])列表可以保存多项对象,下标从零开始,负一下标表示最后一项。[:2] 取开头到下标 2 之前,切片右边界不包含在结果中。字典通过键寻找值,enumerate 同时提供下标与内容。
a = readings 让两个名称引用同一个列表,修改其中一项会从两个名称都看到;普通列表切片生成新列表,但其中对象本身可能仍共享。后面的 NumPy 切片更可能是共享存储的视图,需要逐项确认。
3 · 怎样从文件读出数值
capture.csv 第一行需包含 ax 列名
import csv
with open("capture.csv", encoding="utf-8", newline="") as f:
rows = list(csv.DictReader(f))
values = [float(row["ax"]) for row in rows]
print(values[:3])import 引入已有模块,csv 是标准库的表格文本读取工具。with 在代码块结束时关闭文件。CSV 中读到的字段是字符串,float 转为数值;空字段和错误文本不能直接忽略,需要定位到采集记录。列表推导式把逐行转换写成紧凑的一行,第一次可以改写成普通 for 循环对照。
文件路径按运行目录或明确绝对路径查找,文件找不到先确认位置,不要修改数据内容掩盖错误。真实采集还要记录通道单位、时间与动作标签。
4 · 类和继承为什么会出现在训练代码里
类把一份数据和相关操作放在一起
class Measurement:
def __init__(self, millivolts):
self.millivolts = millivolts
def describe(self):
return f"{self.millivolts} mV"
print(Measurement(4000).describe())__init__ 在对象初始化时接收数据,self 表示当前对象;self.millivolts 是对象字段,describe 是方法。f 字符串把表达式值插入文字。训练框架的模型类通常继承 nn.Module 并实现 forward,届时再说明框架为何这样调用;小数据处理函数不需要全部改成类。
5 · 准备依赖,再独立验证语法
在复制出的支线示例目录中运行
python -m venv .venv
# 激活方式按所用终端选择:Windows PowerShell 使用 .venv/Scripts/Activate.ps1
python -m pip install -r requirements.txt
python python_basics.pyvenv 为本次练习建立独立 Python 环境,pip 准备第三方依赖。语言基础示例只用标准库;NumPy、PyTorch、ONNX Runtime 在相应篇目才使用。保存实际依赖版本,运行训练后也保存配置,避免同一个名称对应不同实验环境。
运行下载示例,把切片改成 [1:],说明输出为何改变。故意让 CSV 某一行含非数字内容,找到失败位置。先完成这些观察,再进入数组与模型。
资料与代码
配套文件
先复制到独立练习目录;用法见 支线示例说明。