Python 条件不起作用,其中包括 ifelse 子句



>我在 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:

最新更新