В чем разница между "если x == True" и "если x:"
Здравствуйте, Сообщество stackoverflow :-)
В данный момент я изучаю Python и не совсем понимаю концепцию "Правда/Ложь".
В Python число 0 связано с "False", а 1 с "True".
Когда я пишу следующий код
x = 2
y = 1
if y == True:
print("Y is True")
if x == True:
print("X is True")
else:
print("X is False")
Я получаю "Y - это правда", потому что "1" - это правда. И я получаю "Х ложно", но я подумал, что это также должно быть "Истина", потому что есть значение (х = 2), а не "Нет, 0 и т.д."
Когда я пишу
if x:
print("X is True")
else:
print("X is False")
тогда я получаю "X - Истина", потому что х не пуст и, следовательно, правдив.
Какова точная разница между "если x:" и "если x == True"?
Ответы
Ответ 1
Разница в том, что if x:
проверяет значение истинности x
. Значение истинности всех целых чисел, кроме 0, является истинным (в данном случае 2).
Однако if x == True:
сравнивает x
со значением True
, которое является разновидностью 1
. Сравнение 2 == 1
приводит к ложному значению.
Чтобы быть точным, есть две смежные концепции:
* "Истинное значение" определяет поведение if
, while
и т.д.
* другие являются значениями True
и False
, которые имеют соответствующие значения истинности "истина" и "ложь", но не обязательно равны другим истинам, соответственно. ложные значения.
Если по какой-либо причине вам абсолютно необходимо проверить точные значения True
и False
, вы можете сделать это с помощью if x is True
или if x is False
. Это гарантирует, что если у точно True
пройдет тест, если это 1
, он не будет.
Ответ 2
Оператор ==
не сравнивает истинность своих операндов, он сравнивает их значения.
Когда логические значения используются в контексте, который требует чисел, например, при сравнении их с числами, они автоматически конвертируются: True
становится 1
, False
становится 0
.
Так
if some_boolean == some_number:
фактически эквивалентно:
if int(some_boolean) == some_number:
Вот почему
if True == 2:
не удается. int(True)
- это 1
, так что это эквивалентно
if 1 == 2:
Ответ 3
эквивалентные способы взглянуть на проблему:
"if x" <==> "if bool(x)"
так как ваш х является целым числом:
"if x" <==> "if x != 0"
и
"if x == True" <==> "if x == 1"