TheZTHEZ / UNDERSTANDING FIRST
Python入门12 分钟阅读

Python 第一步:把数据交给函数

通过成绩计算掌握列表、函数、异常和可变对象。

从成绩计算开始

给定几次成绩,计算平均分并判断是否达到 60 分。数据、计算、输出可以分别表达:

scores = [72, 85, 91]
mean = sum(scores) / len(scores)
print(f"平均分:{mean:.2f}")
print("达到目标" if mean >= 60 else "继续练习")
assert abs(mean - 82.66666666666667) < 1e-10

列表保留顺序;sum 求和,len 求元素个数,/ 做除法。:.2f 只控制显示精度,不改变实际值。

让函数负责一件事

def average(values):
    if not values:
        raise ValueError("成绩列表不能为空")
    return sum(values) / len(values)

assert average([60, 80]) == 70
assert average([100]) == 100
try:
    average([])
except ValueError as error:
    print(error)

def 定义函数,缩进表示函数体。return 将结果交回调用者,print 只显示文字。空列表没有平均值,主动抛出异常使约定更清晰。

变量与可变对象

other = scores 不会复制列表,两个名字指向同一对象。想复制一层可以用 copy():

scores = [60, 80]
other = scores.copy()
other.append(100)
assert scores == [60, 80]
assert other == [60, 80, 100]

这只是浅复制,如果内部仍有列表,内部对象可能共享。

运行与排错

将代码存为 lesson.py,使用 Python 3 运行 python lesson.py。网站只展示代码,不在网页中执行 Python。安卓可用支持 Python 3 的应用或可信在线环境运行,不需要付费 API。

先读异常最后一行,再定位行号。NameError 通常表示名称不存在,TypeError 表示对象类型不符合操作要求,IndentationError 表示缩进不一致。

练习与答案

写函数返回及格分数个数:

def passed_count(scores):
    return sum(1 for score in scores if score >= 60)

assert passed_count([59, 60, 90]) == 2
assert passed_count([]) == 0

继续学习字典计数,就可以从“算一个数”走向“分析一组数据”。

这一节,你理解到哪里了?

这是你的自我反馈,与练习估计、课程进度分别记录。

本文为TheZ原创教学内容。正文采用 CC BY-NC-SA 4.0,代码采用 MIT 许可。请尊重署名与授权范围。