布尔值总是“真实”。我做错了什么?

时间:2018-03-24 03:46:33

标签: python-3.x boolean

import random
die1=''
die2=''
throw=''
player=''

play=(input("Would you like to play?"))

if play == "Yes" or "yes":
    die1 = random.randint(1,6)
    die2 = random.randint(1, 6)
    throw = (die1+die2)
    print(throw)

else:
    print("Thanks anyways!")

我一直盯着我的代码大约一个小时,我无法弄清楚我做错了什么。第9行总是出现'真实'无论条件实际上是否为真。有人可以发现我做错了吗?

3 个答案:

答案 0 :(得分:3)

您的病情按以下方式评估。

(play == "Yes") or bool("yes")

你希望它是

play == "Yes" or play == "yes"

否则,如果play != "Yes",则"yes"的真实性得到评估,而非空字符串则是真实的。

涵盖所有下组和大写组合的更一般情况是使用它。

play.lower() == "yes"

答案 1 :(得分:0)

“是”被视为True。你需要做的是如果玩==“是”或玩==“是”

答案 2 :(得分:0)

这就是python如何解释play == 'Yes' or 'yes'所以当您在终端中实际运行它时,您会看到输出为yes而不是True或False,就像您执行or时一样。在你的情况下可能是假的条件,但它给出yes非空字符串,在python中被视为True值。

所以要解决这个问题,请加上@ Oiver的回答

您可以将行更改为

  1. if play == 'Yes' or play == 'yes':
  2. if play in ['Yes', 'yes']:
  3. 这应该可以解决问题。