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
相关产品推荐
相关产品推荐

