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

Python 2字典学生成绩录入练习:新增数据覆盖旧数据如何解决?

问题根因

代码每次新增学生信息时执行的studentmarks = {name: grade}是重新实例化了一个仅包含当前学生数据的新字典,直接覆盖了之前存储了所有历史数据的旧字典,因此无法保留多条录入记录。

修复方法

  • 核心修改:把字典赋值逻辑修改为键值对新增写法,将studentmarks = {name: grade}替换为studentmarks[name] = grade,该写法会直接在原有字典中新增键值对,不会覆盖历史数据。
  • 校验规则可按需调整:你当前的代码要求成绩为数字,如果要适配练习题中的字母等级(A/B等),可以删除对应的数字校验逻辑。
  • 输出逻辑调整:录入结束后统一按要求格式输出所有学生成绩,无需单次录入后打印。

修改后的测试代码(兼容你原有Python2运行环境+英文交互逻辑)

def student():
    studentmarks = {}
    while True:
        name = raw_input("Please give me the name of the student ('q' to quit):")
        if name == "q":
            break
        elif name.isalpha() == True:
            grade = raw_input("Please give me their grade ('q' to quit):")
            if grade == "q":
                break
            # 此处校验规则可按需修改,保留你原有的数字校验逻辑
            elif grade.isalpha() == True:
                print "Grade is a number! Please try again"
                continue
            elif grade.isdigit() == True:
                # 核心修改点:新增键值对而非覆盖整个字典
                studentmarks[name] = grade
            else:
                print "Error, please try again"
                continue
        else:
            print "Please try again. {} is not the right input".format(name)
            continue
    # 录入完成后统一按要求格式打印
    print "好的,正在打印成绩!"
    print "学生姓名    成绩"
    for name, grade in studentmarks.items():
        print "{:<10}{}".format(name, grade)

student()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 12:57:02