Python代码未打印所需的结果

Python代码未打印所需的结果,python,if-statement,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

我对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}")

您将要测试的条件放在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}")
而不是

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

将一个变量直接作为if语句中的子句放入,即如果credit_score试图将该变量强制转换为布尔值。任何非零数字或任何非空字符串寄存器均为true,这意味着您的代码始终采用第一个分支


相反,您应该做的是检查条件信用评分>700和条件收入>80000

我希望您现在已经清楚了它的工作原理。我将提供另一种方法:

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}")

你希望信用评分>700,收入>80000能做什么?目前,这是一个结果被忽略的表达式。这同样适用于信用评分<700或收入<80000的情况。在if和elif语句中使用这些表达式。这是不合法的。请将您的条件更改为if credit_score>700且income>80000:downpayment=price*0.10。谢谢,它工作得很好。你能推荐一本免费的好书吗?对不起,我不知道推荐什么。@Raguhul谢谢你的意见。出于好奇,如果我想为elif语句中的每个条件设置一个between语句呢。例如,credit_分数在500到699之间,收入在70000到79999之间。解决方法是什么?您可以根据要执行的逻辑操作利用and和or:如果credit_分数>500,credit_分数<699且收入>70000,并且incomeIn Python可以简化它:如果500downpayment = 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}")