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

如何精简Python月份转换代码,用列表替代冗余变量简化判断?

月份转换代码精简方案

原有代码的核心问题

  • 手动定义零散变量存储月份缩写完全冗余,且你手动列变量时已经漏写了Aug,就算拼成列表判断也会出bug
  • 冗长的多条件or拼接可以直接用Python的成员判断运算符in替代,不需要逐个比对
  • 原有while循环位置错误,没有把输入逻辑放进循环体,无法实现持续输入、输入Terminate才退出的效果

优化思路

  • 不需要额外定义任何存储月份缩写的变量,直接通过字典的.keys()方法就能拿到所有合法的月份缩写,不会出现漏写、错写的问题
  • 合法性判断逻辑直接简化为「输入既不是合法月份缩写,也不是退出指令Terminate」时,打印无效提示
  • 把输入、校验、转换的逻辑全部放入while循环,匹配到退出指令时直接跳出循环结束程序

精简后可直接运行的代码

print('To close the program type "Terminate"')

def main():
    month_convertor = {
        "Jan": "January",
        "Feb": "February",
        "Mar": "March",
        "Apr": "April",
        "May": "May",
        "Jun": "June",
        "Jul": "July",
        "Aug": "August",
        "Sep": "September",
        "Oct": "October",
        "Nov": "November",
        "Dec": "December",
    }
    while True:
        user_input = input("Please enter the first 3 digits of the month: ")
        if user_input == "Terminate":
            break
        if user_input not in month_convertor:
            print("Not a valid key")
            continue
        print(month_convertor[user_input])

if __name__ == "__main__":
    main()

进一步压缩长度的写法

如果追求更短的代码,可以直接利用字典.get()方法的默认返回值特性,连单独的合法性判断都可以合并:

print('To close the program type "Terminate"')
month_convertor = {"Jan":"January","Feb":"February","Mar":"March","Apr":"April","May":"May","Jun":"June","Jul":"July","Aug":"August","Sep":"September","Oct":"October","Nov":"November","Dec":"December"}
while True:
    i = input("Please enter the first 3 digits of the month: ")
    if i == "Terminate": break
    print(month_convertor.get(i, "Not a valid key"))

这种写法里.get(i, "Not a valid key")会在键存在时返回对应月份全称,不存在时直接返回你设置的默认提示文本,逻辑完全一致,代码长度更短。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 18:18:41