Python代码无法打印所需的结果

时间:2020-03-06 20:09:18

标签: python if-statement

我对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 个答案:

答案 0 :(得分:4)

您要在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}")

答案 1 :(得分:3)

代替

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

if credit_score > 700 and income > 80000:

直接将变量 放入if语句(即if credit_score)中的子句中,尝试将变量强制为布尔值。 任何非零数字任何非空字符串注册为true,这意味着您的代码始终在第一个分支。

相反,您应该做的是检查条件 credit_score > 700和条件income > 80000

答案 2 :(得分:1)

我希望您现在已经知道它是如何工作的。我将提供另一种方法:

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}")
相关问题