Условие Python не работает, включая условие ifelse

1

Я включил условие ниже в 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
  • 0
    Есть много ненужных круглых скобок, и прямоугольник не предназначен для группировки терминов. Также логический или оператор есть or нет | ,
  • 1
    [(( 0 < x <= 1.084) | ((x) == 0))] список. Пустой список - False-ish, но все остальные списки ведут себя как True в тесте if , даже [False] .
Показать ещё 1 комментарий
Теги:
python-3.x
if-statement

3 ответа

2
Лучший ответ

Дополнительно к Джону ответ, код для этого справедлив:

if 0 <= x <= 1.084:
    print('Test1')
elif 1.084 < x <= 5:
    print('Test2')

Это.

3

Проблема заключается в том, что у вас есть квадратные скобки вокруг вашего условия, которые оценивают условие (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')
  • 1
    Это здорово, это действительно имеет смысл, я думаю, что плохой парень здесь []. так как он оценивает его как True, и я получил все более сложным с большим количеством скобок ()
2

Не используйте квадратные скобки вместо круглых скобок. Они не взаимозаменяемы. И используйте or для логического ИЛИ, а не | который является побитовым ИЛИ.

if ((0 < x <= 1.084) or (x == 0)):

Обратите внимание, что ни одна из этих круглых скобок на самом деле не нужна.

if 0 < x <= 1.084 or x == 0:

И если вы измените < на <= вам не нужна вторая проверка.

if 0 <= x <= 1.084:

Ещё вопросы

Сообщество Overcoder
Наверх
Меню