Почему выполняется только оператор если, а не оператор еще, если мы пишем если еще с если, имеющим постоянное значение. Например, этот код на Python
x=5
if 5:
print("hello 5")
else:
print("bye")
Также следует отметить, что во второй строке, даже если я заменю 5 на 500 или любое другое число, будет выполняться только оператор if. Кто-нибудь, пожалуйста, объясните.
вы пробовали if 0:?
Почему всегда выбирается условие if, а не условие else
Ваш синтаксис неверен. Вы должны написать if x == 5:, тогда он должен работать должным образом. Синтаксис if 5: всегда оценивается как True (поскольку '5' - ненулевое число), и поэтому выполняется только первая часть ...
@ Алекс, которого я знаю, я хочу знать причину такого поведения в условиях, свидетелем которых я был
@Loocid Я пробовал, что там все нормально, почему он так работает в таком состоянии
@appleapple, нет я не
@BrijeshRoy Значение Любой, не равное 0, сравнивается с истиной. Довольно распространенная семантика среди языков программирования, хотя не все их поддерживают (например, в Java вы должны явно сравнивать с 0).
Аналогично со строками: пустая строка и None оцениваются как false, любые другие - как true в логических контекстах.
@Aconcagua Ну, не совсем так. [], {}, (), '', set(), None - все это ложь, как я уверен, вы знаете. В основном это все, что определено в методе __bool__ объектов, обычно имеющее значение 0 или длину 0, называется False.
@FHTMitchell Я не об этом говорил ... Но да, вы правы!






Вы должны применить какое-то условие для выполнения оператора if-else, например (if x == 5) или (if x == 500). В этом случае, если условие оправдано, оно будет следовать за оператором if, иначе оно будет следовать за оператором else. В вашем сценарии нет условия для проверки с постоянным числом, поэтому оно будет автоматически преобразовано в истинное.
Python обрабатывает все целые числа больше 0 как истинные. Чаще всего вы использовали бы это просто как двоичный выбор, проверяя, является ли целое число 1. В этом случае 5 оказывается истинным, что означает, что else не вызывается, поскольку было активировано if.
if 0:
print("Hello")
не будет печатать привет, потому что 0 - ложь.
Любое значение неравный до 0!
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
if x == 5:- это то, что вам нужно.