Python程序包含过多if分支语句如何简化缩短冗余代码?
优化方案
你当前的代码所有分支逻辑都是固定的条件到goto参数的映射,且所有分支都包含重复的sleep(1)逻辑,可以用字典映射或者规律推导大幅简化代码。
方案1:字典映射(逻辑完全对齐原有分支,易维护)
直接把你所有的判断条件做成元组键,对应goto参数为值存入字典,运行时直接查表执行即可:
# 条件与goto参数映射表 action_map = { (M, p1): 0, (M, p2): 1, (M, p3): 2, (M, p4): 3, (M, p5): 4, (T, p1): 5, (T, p2): 6, (T, p3): 7, (T, p4): 8, (T, p5): 9, } # 执行逻辑 if (val, time) in action_map: goto(action_map[(val, time)]) sleep(1) # 可自行加else分支处理不符合条件的情况
方案2:规律推导(代码更短,适合规则固定的场景)
你的参数存在固定规律:p1-p5对应索引0-4,val为M时偏移0,val为T时偏移5,可进一步简化:
p_list = [p1, p2, p3, p4, p5] offset = 0 if val == M else 5 if val == T else -1 if offset != -1 and time in p_list: goto(p_list.index(time) + offset) sleep(1)
两种方案都可以把原代码缩减80%以上,后续新增规则只需要修改映射表/参数列表,不需要新增if分支,也避免了重复代码带来的修改疏漏问题。
内容的提问来源于stack exchange,提问作者Devin Clark
相关产品推荐
相关产品推荐

