Python程序使用append存储成绩未达预期且报错,寻求技术指导
你的Python成绩统计程序问题分析&修复方案
看起来你在编写成绩统计程序时踩了几个常见的小坑,咱们一步步拆解问题,然后给出修复后的代码:
代码里的核心错误
- 总人数统计逻辑错误:你用
sum+=score来统计人数,但循环结束时score是终止标志-1,这完全偏离了统计人数的目的。总人数应该是成绩列表的长度,也就是len(stu)。 - 总分计算混乱:你没有正确累加列表里的成绩,反而错误地把-1加到了
sum变量中,正确的做法是用sum(stu)直接计算列表内所有有效成绩的总和。 - 无效的
count语句:stu.count("Please enter the student's grade:")这行代码完全没用——你的列表里存的是数字成绩,根本不会有这个字符串,直接删掉即可。 - 平均分公式错误:
sums=(sum*2)/10这个公式毫无逻辑,平均分应该是总分除以总人数,还要注意处理用户直接输入-1(无成绩)的情况,避免除以零报错。 - 输入提示与示例不一致:你的代码提示文字是
score,但示例里是grade,虽然不影响功能,但可以统一成和示例一致的表述。
修复后的完整代码
stu = [] # 统一输入提示文字和示例一致 score = int(input("Please enter the student's grade:")) while score != -1: stu.append(score) score = int(input("Please enter the student's grade:")) # 处理没有输入成绩的边界情况 total_students = len(stu) if total_students == 0: print("No students entered.") else: total_score = sum(stu) average_score = total_score / total_students # 按照示例格式输出,平均分保留两位小数 print(f"{total_students} students in total") print(f"The class total score: {total_score} points, average score: {average_score:.2f} points")
代码说明
- 循环逻辑:保留了你原本的输入循环逻辑,输入-1时终止,有效成绩会被存入列表。
- 边界处理:增加了对“直接输入-1无成绩”情况的判断,避免后续出现除以零的运行错误。
- 正确统计:用
len(stu)获取总人数,sum(stu)计算总分,平均分用总分除以人数,并用:.2f格式化保留两位小数,和你给出的示例输出完全匹配。 - 格式统一:输入提示和输出格式都和示例对齐,保证效果一致。
现在运行这个代码,就能得到你预期的功能啦!
内容的提问来源于stack exchange,提问作者user14719773
相关产品推荐
相关产品推荐

