Python 为什么要打印输出;“不是威德”;当输入为18?

Python 为什么要打印输出;“不是威德”;当输入为18?,python,if-statement,Python,If Statement,当输入为18时,为什么输出打印为“Not Wierd” if __name__ == '__main__': n = int(input().strip()) if(n%2==0): if(range(2,5)): print("Not Weird") elif(range(6,20)): print("Weird") elif(n>20): print(

当输入为18时,为什么输出打印为“Not Wierd”

if __name__ == '__main__':
    n = int(input().strip())
    if(n%2==0):
        if(range(2,5)):
            print("Not Weird")
        elif(range(6,20)):
            print("Weird")
        elif(n>20):
            print("Not Weird")
    else:
        print("Weird")

使用
n在范围内(…)
查看
n
是否在范围内。

问题在于您的使用或
range()
,它返回一个iterable,这是一个真实值(如果不是空的话),因此您的第一个条件始终为真

更新它,以便检查您的号码是否在
range()


如果(范围(2,5))没有让任何感官怀疑
如果范围(2,5):
将始终是真的。任何非空范围都是真的-y,因此这将始终打印偶数的
“不奇怪”
。你期望
如果(范围(2,5))
做什么?如果n在范围(2,5)内,则使用
如果n在范围(2,5)内,则使用

...
if(n in range(2,5)):
...