Я включил условие ниже в python, хотя я установил x как 5, а первое условие - False. Я все еще получаю вывод как Test 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
Дополнительно к Джону ответ, код для этого справедлив:
if 0 <= x <= 1.084:
print('Test1')
elif 1.084 < x <= 5:
print('Test2')
Это.
Проблема заключается в том, что у вас есть квадратные скобки вокруг вашего условия, которые оценивают условие (False
) внутри списка Python ([False]
).
Список Python будет оценивать true в булевом контексте всякий раз, когда он имеет какие-либо элементы, поэтому [False]
является истинным истинным условием для цикла.
Чтобы исправить это, просто удалите скобки, которые будут иметь, 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')
Не используйте квадратные скобки вместо круглых скобок. Они не взаимозаменяемы. И используйте or
для логического ИЛИ, а не |
который является побитовым ИЛИ.
if ((0 < x <= 1.084) or (x == 0)):
Обратите внимание, что ни одна из этих круглых скобок на самом деле не нужна.
if 0 < x <= 1.084 or x == 0:
И если вы измените <
на <=
вам не нужна вторая проверка.
if 0 <= x <= 1.084:
or
нет|
,[(( 0 < x <= 1.084) | ((x) == 0))]
список. Пустой список - False-ish, но все остальные списки ведут себя как True в тестеif
, даже[False]
.