Python 3.6.5。为什么不按我预期的那样工作?
为什么我要用或在!!!第节,如果我在猜测输入中键入数字1-9,它是否收支平衡。为什么我不需要同时输入'q'和'quit',因为这就是我的假设和意思…'“q”和“退出”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':
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',但我仍然不明白为什么,在这个例子中,它也起作用。请不要将此解释为粗鲁,因为这是来自经验的诚实建议:不要在测试不足的基础上对代码的行为做出快速假设。做一些测试并得出结论是很容易的。我花了几个小时试图弄明白为什么代码会做一些意想不到的事情,而实际上,我误解了结果,并且没有做足够的测试来发现我的错误。