Оператор if
оценивает то, что вы даете ему как логическое значение (bool
), и воздействует на его значение истинности. Если строка оценивается как логическое значение, пустая строка ''
равна False
, а любая непустая строка равна True
.
Поэтому, что бы вы ни вводили, оно всегда будет иметь значение True
, если вы ничего не введете.
Вам нужно оценить заданную строку c, поэтому у вас есть два варианта; во-первых, нужно напрямую проверить строки, которые означают «True»:
if high_income.lower() in ['yes', 'y', 'true']:
Обратите внимание, что .lower()
приводит к преобразованию ответа в нижний регистр, поэтому 'Yes'
также True
.
Второй - оценить, что пользователь набрал, и использовать это значение:
if eval(high_income):
Но это, как правило, плохая идея, поскольку любые типы пользователей будут оцениваться как действительные Python выражение, и это может вызвать неожиданные результаты или даже небезопасные ситуации. Кроме того, если пользователь вводит 2+2
, это также True
, поскольку он оценивается как целочисленное значение 4
, а любое целочисленное значение, отличное от 0
, всегда равно True
.