преобразование строки в ложное логическое значение - PullRequest
0 голосов
/ 07 января 2020

Я хочу знать, как я могу получить строковое значение для преобразования в значение False bool, потому что каждый раз, когда я запускаю код, он возвращает значение True.

high_income = input(“Do you have a high income?:”)
credit = input(“Do you have a credit line?”)
If high_income and credit: 
      Print(“eligible for loan”)
else:
     print(“not eligible”)

Ответы [ 2 ]

0 голосов
/ 07 января 2020
high_income = input("Do you have a high income?:")    
credit = input("Do you have a credit line?")   
if high_income == 'yes' and credit == 'yes':  

      print("ligible for loan")
else:

     print("not eligible")
#output
#Do you have a high income?:yes
#Do you have a credit line?yes
#ligible for loan
0 голосов
/ 07 января 2020

Оператор 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.

...