第二次阶段复习
与测验
第十六天,我没有学习新语法,而是复习第 9~15 天的字典、函数、条件、循环、列表、返回值和边界保护,通过四部分测验检查自己能否真正组合并解释这些知识。
本次测验成绩
- 基础概念:18 / 20
- 执行过程与输出:14 / 20
- 找错与订正:21 / 25
- 综合编程:35 / 35
- 原始总成绩:88 / 100
第一次阶段测验是 81 分,这次提高到 88 分。最明显的进步是综合编程:已经能独立组织接近五十行的完整程序,而不只是完成单独的语法练习。
基础概念:数据如何进入和离开函数
我能正确区分函数定义与调用、print() 与 return,也知道 for key, value in student.items() 中两个循环变量分别接收键和值。
这一部分的失分来自变量作用描述不够准确。在 result = calculate_average(student_scores) 中,student_scores 保存并传入的是成绩列表,而不是整数;形参 scores 在函数内部接住列表,外部变量 result 再接住返回值。
只说“传入数据、进行运算、取得结果”还不够。以后要继续说清楚:传入的具体是什么、哪个形参接收、最后返回的具体值和类型是什么。
执行输出:return 会立刻结束函数
执行过程部分的主要错误,是把循环内部提前返回的程序误判成“输出列表”。实际上第一轮中 score 得到 80,total 变成 80,随后 return total 立即结束函数,因此最终输出整数 80。
def calculate_total(scores): # 定义总分函数
total = 0 # 总分从0开始
for score in scores: # 第一轮score得到80
total = total + score # total变成80
return total # 立即返回80并结束函数
另一处失分是把准确输出写成 80。普通除法 / 返回浮点数,所以 calculate_average([70, 80, 90]) 的结果应写成 80.0。
找错订正:保护应写进函数内部
找错部分能够发现输入字符串需要 int()、字典键 subject 与 subjects 不同、无效输入的 append() 应放进 else,也能调整函数定义和调用顺序。
空列表题最初提出“给列表加几个数据”,这样只能避开某一次错误,不能保证函数安全。完整修正应放在函数内部:
def calculate_average(scores): # 定义平均分函数
if len(scores) == 0: # 先检查列表是否为空
return 0 # 空列表直接返回,避免除以0
total = calculate_total(scores) # 非空时再计算总分
return total / len(scores) # 返回浮点数平均分
综合编程:三天学习时间分析器
最后一部分要求独立完成一个不同主题的综合程序:收集三天有效学习时间,计算总分钟数和平均分钟数,根据平均数给出建议,再返回字典报告。
def input_minutes(count): # count决定有效数据数量
minutes = [] # 创建空列表
while len(minutes) < count: # 数量不足时继续输入
minute = int(input("请输入分钟数: ")) # 输入并转换为整数
if minute < 0 or minute > 300: # 检查0~300范围
print("请输入0-300之间的分钟数") # 无效数据不加入列表
else: # 有效数据进入这里
minutes.append(minute) # 保存当前分钟数
print("已录入分钟数:", minute) # 显示成功结果
return minutes # 返回三项有效数据
def create_report(minutes_list): # 定义总管函数
total = calculate_total(minutes_list) # 得到总分钟数
average = calculate_average(minutes_list) # 得到平均分钟数
advice = get_advice(average) # 根据平均数得到建议
report = {"total": total, "average": average,
"advice": advice} # 组成字典报告
return report # 返回完整报告
测试时先输入 -20,范围判断成功拦截它;随后输入 60、45、30,最终得到列表 [60, 45, 30]、总分钟数 135、平均分钟数 45.0 和建议“保持进度”。这一部分全部功能正确,获得 35 / 35。
最后订正
测验结束前,再次回答了三个薄弱点:循环内部的 return 会在第一轮返回 80;空列表除法需要在函数内部提前返回;平均分结果是浮点数 80.0。三题均订正正确。
下一阶段继续巩固
- 描述变量时说出当前保存的具体值,而不只说数据用途
- 看到普通除法时检查结果是否为浮点数
- 检查
return的缩进和函数结束位置 - 把空列表、错误范围等保护写进函数内部
- 继续沿函数调用路线追踪直接调用和间接调用
原始成绩 88 分记录的是第一次作答结果,订正不会覆盖它。保留失分和修正过程,才能看见真正需要继续训练的地方。