如何修改Python成绩簿计算器代码实现录入任意数量成绩后提前计算平均分
问题根因
- 原有代码预先固定了需要录入的成绩总数,基于range的循环会强制执行完预设的次数,就算中途输入-1也不会终止录入流程
- 输入的内容会被直接转为float存入成绩数组,-1会被识别为普通成绩计入统计,无法触发终止逻辑
改造后可运行代码
if __name__ == '__main__': print("===== 成绩簿计算器 =====") print("提示:录入成绩过程中输入-1即可终止录入,直接计算平均分") gradearray = [] while True: input_content = input("请输入成绩:") # 优先判断是否为终止信号 if input_content == '-1': break # 转成浮点型成绩,做格式校验 try: grade = float(input_content) except ValueError: print("输入格式有误,请输入数字成绩或-1终止") continue # 成绩合理性校验 if grade < 0 or grade > 100: print("成绩需在0-100区间内,请重新输入") continue gradearray.append(grade) # 成绩等级判定 if grade > 90: print("你获得了 A!") elif grade > 80: print("你获得了 B!") elif grade > 70: print("你获得了 C!") elif grade > 60: print("你获得了 D!") else: print("你获得了 F") # 平均分计算前先判断是否有有效成绩,避免除零报错 if len(gradearray) == 0: print("未录入有效成绩,无法计算平均分") else: average = sum(gradearray) / len(gradearray) print(f"录入的有效成绩共{len(gradearray)}个,平均分为:{average:.2f}")
功能说明
- 无需提前设置录入成绩总数,支持任意数量成绩录入
- 输入-1即可随时终止录入流程,触发平均分计算
- 新增了输入格式校验、成绩区间校验逻辑,避免异常输入导致程序崩溃
- 完全保留原有成绩等级判定功能,使用逻辑和原有版本一致
内容的提问来源于stack exchange,提问作者reagent -52
相关产品推荐
相关产品推荐

