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

Python用户输入构造科目分数字典时仅保留最后一个值如何修复?

问题原因
  • 未提前初始化空字典marks,代码运行有概率触发NameError报错
  • 未给每个科目预先创建对应列表存储分数,每次直接执行marks[sub_name] = stud_marks会直接覆盖该键的旧值,因此最终仅保留该科目最后一次输入的分数
  • 输入的分数为字符串格式,未转换为整数类型,不符合预期输出要求
修复后完整代码
# 初始化空字典存储结果
marks = {}
no_sub = int(input("Enter Number Of Subjects : "))
no_mark = int(input("Enter how many student's marks do you want to add : "))

for i in range(no_sub):
    sub_name = input("Enter Subject Names : ")
    # 为当前科目初始化空列表存储分数
    marks[sub_name] = []
    for j in range(no_mark):
        stud_marks = int(input("Enter student's Marks : "))
        # 将分数追加到对应科目列表中,而非直接覆盖赋值
        marks[sub_name].append(stud_marks)

print(marks)
修改说明
  • 开头新增marks = {}初始化空字典,避免变量未定义报错
  • 每个科目名称输入完成后,先给marks[sub_name]赋值为空列表,用于存储该科目所有学生分数
  • 输入分数时用int()转换输入内容为整型
  • 将原直接赋值逻辑改为append()方法,把每个分数追加到对应科目的列表中,不会覆盖历史输入

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 02:36:02