如何限制统计数值范围:仅计算1-5分的成绩平均分
问题分析与修正代码
需求:仅统计1-5分的课程成绩来计算平均分,输入0或6及以上时不将该数值纳入统计,输入-1则退出程序。
原代码存在以下问题:
- 无效成绩(0、≥6)甚至退出指令-1会被错误计入总分和计数
- 当没有有效成绩时,访问
average变量会引发未定义错误 - 重复的提示信息可合并优化
修正后的代码如下:
count = 0 total = 0 while True: grade = int(input("Give a course grade (-1 exits): ")) if grade == -1: break if not (1 <= grade <= 5): print("Grades must be between 1 and 5 (-1 exits)") continue # 跳过无效成绩的统计步骤 total += grade count += 1 # 计算并输出结果 if count > 0: average = round(total / count, 1) print(f"Average of course grades is: {average}") else: print("No valid grades were entered.")
关键优化说明:
- 用
while True替代原循环条件,逻辑更清晰,避免初始值带来的潜在问题 - 合并无效成绩的判断逻辑,通过
continue直接跳过无效成绩的统计流程 - 增加无有效成绩时的提示分支,避免变量未定义的报错
- 使用f-string格式化输出,代码更简洁易读
内容的提问来源于stack exchange,提问作者Kia K
相关产品推荐
相关产品推荐

