Python代码未打印所需的结果
我对Python非常陌生,作为一种学习方法,我让自己处理这个问题,但无论我做什么,结果仍然会达到100000,即使值小于第一个条件或第二个条件,并且应该打印200000。请帮忙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
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可以简化它:如果500
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}")