从成绩计算开始
给定几次成绩,计算平均分并判断是否达到 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 许可。请尊重署名与授权范围。