python - 'or' 和 'and' 在同一个 if 语句中
问题描述
我想知道为什么这会返回 true:
def parrot_trouble(talking, hour):
if hour < 7 or hour > 20 and talking == True:
return True
else:
return False
print(parrot_trouble(False, 6))
是因为你不能在同一个 if 语句中使用 'or' 和 'and' 运算符吗?还是其他原因?
解决方案
这是,因为AND
优先于OR
,所以你有
TRUE OR (FALSE AND FALSE)
导致TRUE
Operator Precedence
可在此处找到广泛的列表:
最重要的是
() > not > and > or >
所以要优先考虑你的OR operator
使用()
(hour < 7 or hour > 20) and talking == True
=> (TRUE OR FALSE) AND FALSE => FALSE
推荐阅读
- java - java.sql.SQLException:列索引超出范围,0 < 1。使用准备好的语句
- labview - Labview 使用历史缓冲区开始记录
- python - 为什么要打印 s3 的对象地址?
- python - 如何在 tkinter 文本框中获取光标位置详细信息
- python - 当我运行 python 脚本连接到 Sql 服务器时出现 SSL 错误
- javascript - 如何获取 json 文件并按字符串值过滤它们并将它们放在 div 中
- java - 继承子类私有变量
- javascript - 如何使用 mongoose 更新嵌套数组中的值?(array1.array2.value = false;)
- logging - 如何在 Splunk 中查找重复的日志事件
- python - 如何在 Python 中调用不同模块中的函数而不重复该函数