繁体   English   中英

Python 代码没有打印出想要的结果

[英]Python code not printing the desired result

我对 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 > 700 and income > 80000:

将变量直接作为if语句中的子句(即if credit_score )试图将该变量强制转换为布尔值。 任何非零数字任何非空字符串注册为真,这意味着您的代码始终采用第一个分支。

相反,您应该做的是检查条件credit_score > 700和条件income > 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}")

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM