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

Python整数输入字典映射转换的代码问题排查与修复

故障原因
  • 代码未提前定义year变量就直接做条件判断,运行时会直接抛出NameError中断,缺少接收用户年级确认输入的步骤。
  • subjectConversions字典的所有键都是字符串格式(如"1"、"2"),但代码将用户输入转换为int整数类型,用整数作为键查询字典时会触发KeyError,无法匹配到对应科目名称。
  • 选项提示文本存在拼写错误:Desingn & Technology正确拼写为Design & Technology。
  • 结果字符串拼接时"You have selected"末尾缺少空格,输出时会出现文字和科目名粘连的格式问题。
修复后代码
# 新增年级确认输入逻辑
year = input("请确认你为9年级学生,输入y确认:").strip().lower()

subjectConversions = {
  "1": "Computer science",
  "2": "Geography",
  "3": "History",
  "4": "French",
  "5": "Drama",
  "6": "Music",
  "7": "Art",
  "8": "Design & Technology",
  "9": "Physical Education",
  "10": "Cooking",
  "11": "Business studies",
}

if year != "y":
  print("Sorry! Year 9 only!")
  quit()
else:
  print("Welcome!")

# 修正选项文本拼写错误
print("Take a look at the list below for GCSE subjects. Once that is done, select four different options at each prompt.\nComputer Science [1], Geography [2], History [3], French [4], Drama [5], Music [6], Art [7], Design & Technology [8], Physical Education [9], Cooking [10], Business studies [11]\n")
# 保留输入为字符串类型,和字典键类型匹配,同时去除输入首尾空白字符
Op1 = input("Option one: ").strip()

# 新增输入合法性校验,避免无效输入导致崩溃
if Op1 not in subjectConversions:
  print("无效选项,请输入1-11之间的序号")
  quit()

# 补全拼接处的空格
print("You have selected " + subjectConversions[Op1] + ", is that correct? [y/n]")

后续如果要完成4个科目选择的逻辑,重复对应输入、校验、取值的步骤即可,注意判断用户是否选了重复科目。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 19:45:31