>我在 python 中包含以下条件,尽管我将 x 设置为 5 并且第一个条件为 False,但我仍然收到输出作为测试 1
x = 5
if [(( 0 < x <= 1.084) | ((x) == 0))]:
print((( 0 < x <= 1.084) | ((x) == 0)))
print('Test1')
elif [(1.084 < x <= 5)]:
print('Test2')
False
Test1
问题是你的条件周围有方括号,它将条件(False
(的评估放在 Python 列表 ([False]
(。
只要 Python 列表具有任何元素,它就会在布尔上下文中计算为 true,因此[False]
是循环的有效 true 条件。
要修复它,只需删除括号,这将使if
查看False
而不是列表。
另外,您可能希望使用or
而不是|
,因为前者是布尔值的常用运算符,后者是整数按位或的常用运算符。
你也可以摆脱许多参数,Python通常不需要它们。
修订后的代码:
x = 5
if (0 < x <= 1.084) or (x == 0):
print((( 0 < x <= 1.084) | ((x) == 0)))
print('Test1')
elif 1.084 < x <= 5:
print('Test2')
除了 John 的回答之外,这个代码只是:
if 0 <= x <= 1.084:
print('Test1')
elif 1.084 < x <= 5:
print('Test2')
就是这样。
不要使用方括号代替括号。它们不可互换。并将or
用于逻辑 OR,而不是按位 OR|
。
if ((0 < x <= 1.084) or (x == 0)):
请注意,这些括号实际上都不是必需的。
if 0 < x <= 1.084 or x == 0:
如果将<
更改为<=
则不需要第二次检查。
if 0 <= x <= 1.084: