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

Python中有没有可以简化if-elif-else多分支判断语句的方法?

Python多elif分支简化方法

针对你这段月份映射的多elif代码,有3种常用的简化方案,按适用优先级排列:

  • 方案1:列表索引(最适配当前连续整数映射场景)
    你的月份取值为1~12的连续整数,直接用列表存储月份名称,通过偏移索引取值即可完全替换所有if-elif分支:
from random import randrange
month = randrange(1, 13)
month_names = ["January", "February", "March", "April", "May", "June",
               "July", "August", "September", "October", "November", "December"]
print(month_names[month - 1])

因为Python列表索引从0开始,所以用month - 1即可和1~12的月份值一一对应,代码精简度最高。

  • 方案2:字典映射(通用全场景,适配非连续/任意类型键的映射)
    如果后续映射关系的键不是连续整数(比如自定义编号、字符串等),用字典做映射灵活度更高:
from random import randrange
month = randrange(1, 13)
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"
}
print(month_map[month])
  • 方案3:match-case语句(适配Python 3.10+版本,复杂分支逻辑场景更清晰)
    如果你的分支下不止是打印输出,还有其他复杂处理逻辑,可以用Python 3.10推出的结构匹配语法替代多elif,可读性更强:
from random import randrange
month = randrange(1, 13)
match month:
    case 1: print("January")
    case 2: print("February")
    case 3: print("March")
    case 4: print("April")
    case 5: print("May")
    case 6: print("June")
    case 7: print("July")
    case 8: print("August")
    case 9: print("September")
    case 10: print("October")
    case 11: print("November")
    case 12: print("December")

额外提示:原代码中from random import *属于通配符导入,会导入random模块下所有内容,容易造成命名空间冲突,更推荐明确导入需要的randrange函数。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 08:18:00