首页 > 解决方案 > Python 程序有太多 if 语句

问题描述

我正在编写一个 Python 程序,但最终有一堆 if 语句。有没有办法缩短代码?提前致谢。

if val == M and time == p1:
    goto(0)
    sleep(1)
elif val == M and time == p2:
    goto(1)
    sleep(1)
elif val == M and time == p3:
    goto(2)
    sleep(1)
elif val == M and time == p4:
    goto(3)
    sleep(1)
elif val == M and time == p5:
    goto(4)
    sleep(1)
elif val == T and time == p1:
    goto(5)
    sleep(1)
elif val == T and time == p2:
    goto(6)
    sleep(1)
elif val == T and time == p3:
    goto(7)
    sleep(1)
elif val == T and time == p4:
    goto(8)
    sleep(1)
elif val == T and time == p5:
    goto(9)
    sleep(1)

标签: pythonif-statement

解决方案


代码看起来没问题。这里有两种选择:

选项 1:使用字典

cases = {
    (M, p1) : 1,
    (M, p2) : 2,
    (M, p3) : 3,
    (M, p4) : 4,
    (M, p5) : 5,
    (T, p1) : 6,
    (T, p2) : 7,
    (T, p3) : 8,
    (T, p4) : 9,
}

goto(cases[(val,time)])
sleep(1)

选项 2:使用case语句(在 Python 3.10 及更高版本中)


隐藏选项:找到其他一些可以实现您想要的逻辑。

例如。

if val in [T,M] and time in [p1,p2,p3,p4,p5]:
    num = (val==T)*5 + [p1,p2,p3,p4,p5].index(time) + 1
    goto(num)
    sleep(1)

推荐阅读