python - 蟒蛇 3.6.5。为什么 OR 不能按我的预期工作?
问题描述
为什么如果我使用 OR 在 !!! 部分,即使我在猜测输入中输入数字 1 - 9,它是否也会中断。为什么我不需要同时输入'q'和'quit',因为这就是我假设AND的意思......'q'和'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!")
因此,使用 OR 不起作用,而使用 AND 则起作用。这对我来说毫无意义。为什么是这样?
解决方案
if guess == 'q' or 'quit':
此语句不起作用,因为您试图将字符串用作布尔值。OR 并不假设您希望像之前一样发生完全相同的事情,您必须再次填写条件。
if guess == 'q' or guess == 'quit':
这将起作用,因为您现在从右侧获取布尔值,而不仅仅是尝试使用字符串。
推荐阅读
- android - RecyclerView 布局文件抛出异常:Failed to find view with ID ...:id/recyclerView in item layout
- java - 仅允许来自 Y/N 响应的真值答案
- signal-processing - 压电与 Mems 加速度计 - 不同幅度
- php - 当我 save() 时,“App\Post”返回 500 错误
- javascript - 在为父组件生成样式之后放置material-ui为子组件生成的样式?
- python - subprocess.Popen.communicate 无异常地返回一个元组
- junit5 - 协议提供者测试中断:pactVerificationTestTemplate » PreconditionViolation
- spring - Spring LDAP ADLDS 用户更改密码/密码策略问题的权限
- c - 将二维数组传递给采用指针的函数
- mysql - 将 JOIN 查询重写为子查询,缺少行?