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

如何实现Python月份名称转数字并在while循环中作为整数使用

解决方案

核心思路是先不直接转换输入为整数,而是先处理输入格式,优先匹配月份名称字典,再尝试转换为数字,同时保留完整的错误捕获逻辑。

完整代码实现

monthConversions = {
    "january": 1,
    "february": 2,
    "march": 3,
    "april": 4,
    "may": 5,
    "june": 6,
    "july": 7,
    "august": 8,
    "september": 9,
    "october": 10,
    "november": 11,
    "december": 12
}

while True:
    user_input = input("What is your birth month?\n").strip().lower()
    month = None
    
    # 先尝试匹配月份名称
    if user_input in monthConversions:
        month = monthConversions[user_input]
    else:
        # 尝试转换为整数
        try:
            month = int(user_input)
        except ValueError:
            print("Error: You must enter a valid month number or name.")
            continue
    
    # 验证月份是否在有效范围
    if 1 <= month <= 12:
        break
    else:
        print("Error: You must enter a valid month.")

print(f"Valid month selected: {month}")

关键修改说明

  • 输入预处理:用strip()去掉输入前后空格,lower()统一转为小写,用户输入January或DECEMBER都能正常匹配字典。
  • 优先匹配名称:先检查输入是否在字典中,避免直接转整数触发ValueError拦截合法的月份名称。
  • 分层错误处理:
    • 若输入既不是字典中的名称,也无法转为整数,触发自定义的无效输入提示。
    • 若数字不在1-12范围内,保留原有的无效月份提示。
  • 保留稳定性:所有异常仅在转换整数时捕获,不会因为随机输入导致程序崩溃。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 23:55:26