Python新手求助:输入月份数字输出对应月份名称的代码纠错
修正获取月份名称的Python代码
嘿,我来帮你排查下代码里的问题,然后给你修正后的版本~
原代码的核心问题
- 输入类型不匹配:不管是Python2的
raw_input()还是Python3的input(),返回的都是字符串类型,但你的字典switcher里的键是整数,所以输入的数字字符串根本匹配不上,每次都会输出"Invalid month"。 - 语法适配问题:如果用的是Python3,
print是内置函数,必须加括号;而且Python3里已经没有raw_input()了,统一用input()。 - 函数参数设计冗余:你给
switch_demo函数设置了默认参数argument=value,但调用时又传了value,这个默认参数完全没起到作用,反而让代码逻辑变混乱。
修正后的代码(Python3版本,主流推荐)
# 处理用户输入,转成整数,同时加异常处理防止非数字输入 try: month_num = int(input("Enter value to print month: ")) except ValueError: print("请输入1-12之间的有效数字哦") exit() def get_month_name(month): month_map = { 1: "January", 2: "February", 3: "March", 4: "April", 5: "May", 6: "June", 7: "July", 8: "August", 9: "September", 10: "October", 11: "November", 12: "December" } # 用get方法获取对应值,找不到就返回默认提示 return month_map.get(month, "Invalid month (请输入1-12之间的数字)") # 调用函数并打印结果 print(get_month_name(month_num))
代码说明
- 用
int()把用户输入的字符串转成整数,解决类型不匹配的问题。 - 增加
try-except异常处理,防止用户输入字母、符号等非数字内容导致程序崩溃。 - 简化函数参数设计,直接传入处理好的月份数字,逻辑更清晰。
- 把字典名改成
month_map,比switcher更语义化,可读性更好。
如果你还在使用Python2,只需要把input()改回raw_input(),print去掉括号就行,不过还是建议尽快升级到Python3哦~
内容的提问来源于stack exchange,提问作者Vijay
相关产品推荐
相关产品推荐

