You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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时终止,有效成绩会被存入列表。
  2. 边界处理:增加了对“直接输入-1无成绩”情况的判断,避免后续出现除以零的运行错误。
  3. 正确统计:用len(stu)获取总人数,sum(stu)计算总分,平均分用总分除以人数,并用:.2f格式化保留两位小数,和你给出的示例输出完全匹配。
  4. 格式统一:输入提示和输出格式都和示例对齐,保证效果一致。

现在运行这个代码,就能得到你预期的功能啦!

内容的提问来源于stack exchange,提问作者user14719773

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.11 07:28:55