Python if语句没有';I don’我没有按预期工作

Python if语句没有';I don’我没有按预期工作,python,printing,random,if-statement,Python,Printing,Random,If Statement,我目前拥有以下代码: fleechance = random.randrange(1,5) print fleechance if fleechance == 1 or 2: print "You failed to run away!" elif fleechance == 4 or 3: print "You got away safely!" FleedChance经常打印为3或4,但我继续得到结果“你没有逃走!”,有人能告诉我为什么会发生这种情况吗?试试看 if fle

我目前拥有以下代码:

fleechance = random.randrange(1,5)
print fleechance
if fleechance == 1 or 2:
    print "You failed to run away!"
elif fleechance == 4 or 3:
    print "You got away safely!"
FleedChance经常打印为3或4,但我继续得到结果“你没有逃走!”,有人能告诉我为什么会发生这种情况吗?

试试看

if fleechance == 1 or fleechance == 2:
    print "You failed to run away!"
elif fleechance == 4 or fleechance == 3:
    print "You got away safely!"
或者,如果这些是唯一的可能性,您可以这样做

if fleechance <= 2:
    print "You failed to run away!"
else:
    print "You got away safely!"

如果fleechance表达式
fleechance==1或2
相当于
(fleechance==1)或(2)
。数字
2
始终被视为“真”

试试这个:

if fleechance in (1, 2):
编辑:在您的情况下(只有两种可能性),以下情况会更好:

if fleechance <= 2:
    print "You failed to run away!"
else:
    print "You got away safely!"

如果如果
语句按设计工作,问题是操作顺序导致此代码执行您不想要的操作

最简单的解决方法是说:

if fleechance == 1 or fleechance == 2:
    print "You failed to run away!"
elif fleechance == 3 or fleechance == 4:
    print "You got away safely!"

因为你不是在问
fleechance
是1还是
fleechance
是2;你问的是

  • 为1,或
  • 2是非零的
  • 当然,条件的第二部分总是正确的。试一试

    if fleechance == 1 or fleechance == 2:
        ...
    

    你写if语句的方式是错误的。 您让python检查fleechance=1是真的还是2是真的。 非零整数在条件中始终表示为真。 你应该写:

    fleechance = random.randrange(1,5)
    print fleechance
    if fleechance == 1 or fleechance == 2:
        print "You failed to run away!"
    elif fleechance == 4 or fleechance == 3:
        print "You got away safely!"
    

    如果fleechance==1或fleechance==2,这并不等同于
    。这相当于说
    如果fleechance==1:if 2
    ,因为
    如果2
    是真的,这将始终是真的。您使用的Python教程是什么?你在哪里见过这样的代码?你能提供一份类似的或推荐信吗?这段代码很糟糕,知道你是从哪里得到它可能有意义的想法是很重要的。我有一本书,但我没有直接从那里得到代码,只是看起来它会工作,所以我不认为这真的是教程的错。谢谢,这很有效,我不知道操作顺序。谢谢你进一步解释,我以后尽量不要犯同样的错误。