Оператор if с постоянным значением

Почему выполняется только оператор если, а не оператор еще, если мы пишем если еще с если, имеющим постоянное значение. Например, этот код на Python

x=5
if 5:
 print("hello 5")
else:
 print("bye")

Также следует отметить, что во второй строке, даже если я заменю 5 на 500 или любое другое число, будет выполняться только оператор if. Кто-нибудь, пожалуйста, объясните.

if x == 5: - это то, что вам нужно.
Loocid 09.08.2018 07:55

вы пробовали if 0:?

apple apple 09.08.2018 07:56

Почему всегда выбирается условие if, а не условие else

Brijesh Roy 09.08.2018 07:58

Ваш синтаксис неверен. Вы должны написать if x == 5:, тогда он должен работать должным образом. Синтаксис if 5: всегда оценивается как True (поскольку '5' - ненулевое число), и поэтому выполняется только первая часть ...

Alex 09.08.2018 08:00

@ Алекс, которого я знаю, я хочу знать причину такого поведения в условиях, свидетелем которых я был

Brijesh Roy 09.08.2018 08:01

@Loocid Я пробовал, что там все нормально, почему он так работает в таком состоянии

Brijesh Roy 09.08.2018 08:01

@appleapple, нет я не

Brijesh Roy 09.08.2018 08:03

@BrijeshRoy Значение Любой, не равное 0, сравнивается с истиной. Довольно распространенная семантика среди языков программирования, хотя не все их поддерживают (например, в Java вы должны явно сравнивать с 0).

Aconcagua 09.08.2018 08:06

Аналогично со строками: пустая строка и None оцениваются как false, любые другие - как true в логических контекстах.

Aconcagua 09.08.2018 08:08

@Aconcagua Ну, не совсем так. [], {}, (), '', set(), None - все это ложь, как я уверен, вы знаете. В основном это все, что определено в методе __bool__ объектов, обычно имеющее значение 0 или длину 0, называется False.

FHTMitchell 09.08.2018 08:08

@FHTMitchell Я не об этом говорил ... Но да, вы правы!

Aconcagua 09.08.2018 08:16
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
3
11
1 819
5

Ответы 5

Вы должны применить какое-то условие для выполнения оператора if-else, например (if x == 5) или (if x == 500). В этом случае, если условие оправдано, оно будет следовать за оператором if, иначе оно будет следовать за оператором else. В вашем сценарии нет условия для проверки с постоянным числом, поэтому оно будет автоматически преобразовано в истинное.

Python обрабатывает все целые числа больше 0 как истинные. Чаще всего вы использовали бы это просто как двоичный выбор, проверяя, является ли целое число 1. В этом случае 5 оказывается истинным, что означает, что else не вызывается, поскольку было активировано if.

if 0:
    print("Hello")

не будет печатать привет, потому что 0 - ложь.

Любое значение неравный до 0!

Aconcagua 09.08.2018 08:11

if-else требует логического ответа. Любое число (позитивный негативный), кроме 0, подразумевает Истинный.

Пытаться:

if 5:
   print("hello 5")
else:
   print("bye")

output: hello 5

#

if 0:
   print("hello 5")
else:
   print("bye")

output: bye

Возможно, дополнительная причина. Раньше у python, как и у c, не было типа bool. Так что вместо того, чтобы сказать

boolean = False  # or True

вы бы сказали

boolean = 0  # or 1 or any other int

Позже Python добавил тип bool с константами True и False, но на самом деле они являются просто оболочками для целых 1 и 0 (фактически, bool является подклассом int). Это видно по

print(True + True)
print(False * 123)
print(True == 1)
print(False == 0)

Думайте о if-else как о вилке. Вы идете либо этим путем (операторы с if), либо тем путем (операторы с else). Решение, в какую сторону повернуть, принимает выражение-условие, следующее за ключевым словом if.

Если выражение-условие оценивается как

  • любое значение ненулевой будет выполнено if-ветвь

  • нуль будет занята ветвь else

Другие вопросы по теме