Python 3.6.5。为什么不按我预期的那样工作?

Python 3.6.5。为什么不按我预期的那样工作?,python,python-3.6,Python,Python 3.6,为什么我要用或在!!!第节,如果我在猜测输入中键入数字1-9,它是否收支平衡。为什么我不需要同时输入'q'和'quit',因为这就是我的假设和意思…'“q”和“退出” import random while True: print("\nGuess a number between 1 and 9.") guess = input("I guess: ") if guess == 'q' !!!or!!! 'quit':

为什么我要用或在!!!第节,如果我在猜测输入中键入数字1-9,它是否收支平衡。为什么我不需要同时输入'q'和'quit',因为这就是我的假设和意思…'“q”和“退出”

import random

    while True:
        print("\nGuess a number between 1 and 9.")
        guess = input("I guess: ")

        if guess == 'q' !!!or!!! 'quit':
            break

        number = random.randrange(1, 10)
        try:
            if int(guess) < number:
                print(f"You guess was too low. The number was {number}")
            elif int(guess) > number:
                print(f"Your guess was too high. The number was {number}")
            elif int(guess) == number:
                print(f"Your guess was exactly right! The number was {number}")
        except ValueError:
            print("Please only guess numbers!")
随机导入
尽管如此:
打印(“\n请输入一个介于1和9之间的数字。”)
猜=输入(“我猜:”)
如果猜测=='q'!!!或者!!!'退出':
打破
数字=随机。随机范围(1,10)
尝试:
如果int(猜测)<数字:
打印(f“你猜太低了,数字是{number}”)
elif int(猜测)>数字:
打印(f“您的猜测太高,数字是{number}”)
elif int(猜测)=数字:
打印(f“你的猜测完全正确!数字是{number}”)
除值错误外:
打印(“请只猜数字!”)

所以,不管它是否起作用,它确实起作用。这对我来说毫无意义。为什么会这样?

如果猜测=='q'或'quit':

此语句将不起作用,因为您试图将字符串用作布尔值。OR并没有假设您希望发生与之前完全相同的事情,您必须再次填充该条件

如果guess=='q'或guess=='quit':


这将起作用,因为您现在正在从右侧获取布尔值,而不仅仅是尝试使用字符串。

@Carcigenicate我搜索了无数次,没有找到任何我能理解的内容,但我不知道为什么,它仍然有效…@SeaWolf展示了一个在类似情况下使用
的例子。一个类似的例子是
a==b和c
。不过,这并不像你想象的那样有效。@Carcigenicate在本例中就是这样。如果我交换!!!或具有还有!!!它可以工作(没有!!!当然可以)。现在我把代码改成了…'正如你的回答所建议的,q'或guess=='quit',但我仍然不明白为什么,在这个例子中,它也起作用。请不要将此解释为粗鲁,因为这是来自经验的诚实建议:不要在测试不足的基础上对代码的行为做出快速假设。做一些测试并得出结论是很容易的。我花了几个小时试图弄明白为什么代码会做一些意想不到的事情,而实际上,我误解了结果,并且没有做足够的测试来发现我的错误。