Python код не печатает желаемый результат - PullRequest
0 голосов
/ 06 марта 2020

Я очень плохо знаком с Python, просто как способ обучения, я поставил перед собой задачу решить эту проблему, но независимо от того, что я делаю, результат все равно достигает 100000, даже если значение меньше (первое условие или второе условие) и должен печатать 200000. Пожалуйста, помогите.

price = 1000000
credit_score = 300
income  = 70000


if credit_score and income:
    credit_score > 700 and income > 80000
    downpayment = price * 0.10
    print(f"Downpayment:  {downpayment}")
elif credit_score or income:
    credit_score < 700 or income < 80000
    downpayment = price * 0.20
    print(f"Downpayment:  {downpayment}")
else: 
    downpayment = price * 0.30
    print(f"Downpayment:  {downpayment}")

Ответы [ 3 ]

4 голосов
/ 06 марта 2020

Вы ставите условия, которые хотите проверить, после операторов if, а не в тех местах, где они принадлежат.

if credit_score > 700 and income > 80000:
    downpayment = price * 0.10
    print(f"Downpayment:  {downpayment}")
elif credit_score < 700 or income < 80000:
    downpayment = price * 0.20
    print(f"Downpayment:  {downpayment}")
else: 
    downpayment = price * 0.30
    print(f"Downpayment:  {downpayment}")
3 голосов
/ 06 марта 2020

Вместо

if credit_score and income:
    credit_score > 700 and income > 80000

Do

if credit_score > 700 and income > 80000:

Установка переменной напрямую в качестве предложения в выражении if (т.е. if credit_score) привести эту переменную в логическое значение. Любое ненулевое число или любая непустая строка регистрируется как true, что означает, что ваш код всегда принимает первую ветвь.

Вместо этого вам следует сделать следующее: проверка условия credit_score > 700 и условия income > 80000.

1 голос
/ 06 марта 2020

Надеюсь, вы уже поняли, как это работает сейчас. Я просто предоставлю другой способ сделать это:

downpayment = price * 0.10 if (credit_score > 700 and income > 80000) else (price * 0.20 if credit_score < 700 or income < 80000 else price * 0.30) 
print(f"Downpayment:  {downpayment}")
...