如何在Python迭代循环中正确使用input()实现成绩录入功能
Python成绩计算器问题修复方案
错误原因
input()函数仅支持传入1个字符串类型的提示参数,你代码中input("Score for subject?",x)多传入了未定义的变量x,这是触发报错的直接原因- 初始定义的
scores为字典类型,但循环中直接将用户输入的成绩赋值给scores变量,覆盖了字典结构,无法实现存储每门科目成绩的需求 - 首行输入提示存在语法错误,缺少关键词
many
修正后代码
scores = {} total = 0 subject_count = int(input("你完成了多少门科目? ")) for sub_num in range(1, subject_count + 1): # 直接在提示字符串中拼接当前科目序号,不需要给input传第二个参数 score = input(f"第{sub_num}门科目的成绩:") scores[f"科目{sub_num}"] = int(score) total += int(score) # 可选:输出统计结果 print(f"总成绩:{total}") print(f"平均成绩:{total / subject_count:.2f}") print("各科目成绩详情:", scores)
改动说明
- 移除了
input()的多余参数,通过f字符串拼接提示语实现科目序号的展示 - 新增单独的
score变量存储单门科目成绩,保留scores字典存储所有科目的成绩数据 - 调整了输入提示的语义表述,更符合中文使用习惯
- 补充了成绩统计结果输出的可选代码,可按需保留或删除
内容的提问来源于stack exchange,提问作者data_noob
相关产品推荐
相关产品推荐

