Python:IF语句和多个OR

时间:2015-09-13 05:53:21

标签: python python-3.x

作为Python的新手,我想到了这个伪代码:

if vars 1-4 are passed and all of them are 1:
    if it’s var1 or 2:
        print("a")
    if it’s var3
        print("b")
    if it’s var4
        print("c")

if vars 1-4 are passed and all of them are either 2, 3 or 4:
    if it’s var1 or 2:
        print("d")
    if it’s var3:
        print("e") and so on

if vars 1-4 are passed and all of them are either 0 or 5-10:
    if it’s var1 or 2:
        print("f") and so forth

我尝试了一些方法,但尚未管理它。例如:

if arg in [var1, var2, var3, var4] and [var1, var2, var3, var4] == 1:
    if var in [var1, var2]:
        print("a")
    if var == var3:
        print("b")
    if var == var4:
        print("c")

if arg in [var1, var2, var3, var4] and 2 <= [var1, var2, var3, var4] <= 4:
    if var in [var1, var2]:
        print("d") #and so on

if arg in [var1, var2, var3, var4] and 5 <= [var1, var2, var3, var4] <= 10: #+ put the 0
    if var in [var1, var2]:
        print("f") #and so forth

使用if test in [var1, var2, var3, var4]的部分可以正常使用所有4个变量,但不会检查它们是否等于1.此外,第二部分,范围(和范围+ 0的第三部分)是均匀的更差。 我可以将所有这些分开,并在每个人和每个人面前用OR进行单独测试,但从长远来看,这是不可能的。当然,必须有一些更多的Pythonic方式?

有关用法的说明: 代码在一个函数内部使用,该函数接受一个参数(一次4个变量中的1个),具体取决于应该进行哪些(var1-4)不同的打印输出。变量由用户输入,存储在函数外部,可以在0-10的范围内,彼此独立。

1 个答案:

答案 0 :(得分:1)

您正在将整数与列表进行比较,该列表始终为False。

我猜你试图检查列表中的所有值是否等于1.你可以这样做:

all(item == 1 for item in items)

您也可以这样做:

if var1==var2==var3==var4==1:
print "ok"