对Python来说真的很新,只是想知道我在这里做错了什么

时间:2014-04-09 08:09:50

标签: python

import random

varA = random.randint(0,20)

print(varA)

if (varA == 0 or 1 or 2 or 3 or 4 or 5 or 6 or 7 or 8):
    print("set 1")

elif(varA == 9 or 10 or 11 or 12 or 13 or 14 or 15):
    print("set 2")

elif(varA == 16 or 17 or 18 or 19 or 20):
    print("set 3")

因此无论varA变为什么数字,它都会打印“set 1”。我知道这可能是一个非常明显的东西,但我对Python和整体编程非常陌生,我只是搞乱了elif并且无法弄清楚这里有什么问题。谢谢!

4 个答案:

答案 0 :(得分:4)

Or并不像英语或英语那样真正起作用。你应该这样做:

if (varA in range(9)):
    print("set 1")

elif(varA in range(9,16)):
    print("set 2")

elif(varA in range(16,21)):
    print("set 3")

或者,您可以这样做:

if (0 =< varA <= 8):
    print("set 1")

elif (9 =< varA <= 15):
    print("set 2")

elif (16 =< varA <= 20):
    print("set 3")

答案 1 :(得分:1)

if (varA == 0 or varA == 1 ...):
    print("set 1")

您需要再次将1varA进行比较,不能VarA == 0 or 1,因为理论上会检查1True,它是。

所以我可以将您的代码翻译成:

if (varA == 0 or 1 == True or 2 == True ...)

任意数量的1或更多将成​​为True 这就是你的代码失败的原因,@ sshashank打败了我range()解决方案,所以我只想解释你出错的地方。

答案 2 :(得分:1)

if varA in [0, 1, 2, 3, 4, 5, 6, 7, 8]:

更好:

if varA >= 0 and varA < 8:

更好:

if 0 <= varA < 8:

答案 3 :(得分:0)

or语句中的if语句将始终使表达式为true。这是因为您正在执行逻辑或值1, 2, 3...,这将始终为真。