对Python真的很陌生,只是想知道我做错了什么

2024-09-29 21:27:39 发布

您现在位置: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混日子,搞不清楚这里出了什么问题。谢谢!你知道吗


Tags: orimportif编程数字random事情print
3条回答
if (varA == 0 or varA == 1 ...):
    print("set 1")

你需要将1varA进行比较,同样,你不能这样做VarA == 0 or 1,因为这将从理论上检查1是否是True,事实就是这样。你知道吗

所以我可以把你的代码翻译成:

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

任何一个或多个数字都将变为真。
这就是你的代码失败的原因,@sshashank击败了我,找到了range()解决方案,所以我只想简单地解释一下你哪里出错了。你知道吗

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")
if varA in [0, 1, 2, 3, 4, 5, 6, 7, 8]:

更好:

if varA >= 0 and varA < 8:

更好的是:

if 0 <= varA < 8:

相关问题 更多 >

    热门问题