You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python代码问题:输入false时首付计算结果不符预期的原因?

房屋首付计算代码的问题分析与修复

原代码

housePrice = input("What's the price of House? ")
is_goodCredit = input("Does buyer have good credit? ")

if is_goodCredit:
    downPayment = 0.1 * float(housePrice)
else:
    downPayment = 0.2 * float(housePrice)
    
print(f"Down payment will be {downPayment}")

原运行结果

PS C:\Users\bandh> & C:/Users/bandh/AppData/Local/Programs/Python/Python311/python.exe c:/Users/bandh/Desktop/Untitled-1.py
What's the price of House? 1000
Does buyer have good credit? true
Down payment will be 100.0
PS C:\Users\bandh> & C:/Users/bandh/AppData/Local/Programs/Python/Python311/python.exe c:/Users/bandh/Desktop/Untitled-1.py
What's the price of House? 1000
Does buyer have good credit? false
Down payment will be 100.0

问题原因

核心问题出在输入值的类型判断逻辑:

  • Python的input()函数返回的永远是字符串类型,哪怕输入true或false,is_goodCredit存储的都是字符串,不是布尔值True/False。
  • 在Python的布尔判断规则里,所有非空字符串都会被视为True——哪怕字符串内容是"false",只要它不是空字符串,if is_goodCredit的条件就会成立,所以永远执行10%首付的计算分支。

修复方案

有两种实用的修复方式:

方式一:直接判断输入字符串内容

通过判断输入的字符串是否为指定值(支持忽略大小写,提升用户体验):

housePrice = input("What's the price of House? ")
# 去除首尾空格并转小写,兼容不同输入格式
is_goodCredit = input("Does buyer have good credit? ").strip().lower()

if is_goodCredit == "true":
    downPayment = 0.1 * float(housePrice)
else:
    downPayment = 0.2 * float(housePrice)
    
print(f"Down payment will be {downPayment}")

方式二:转换为布尔值判断

先将输入字符串转换为严格的布尔类型,再进行判断:

housePrice = input("What's the price of House? ")
credit_input = input("Does buyer have good credit? ").strip().lower()
# 只有输入"true"时才视为True,其他情况都为False
is_goodCredit = credit_input == "true"

if is_goodCredit:
    downPayment = 0.1 * float(housePrice)
else:
    downPayment = 0.2 * float(housePrice)
    
print(f"Down payment will be {downPayment}")

内容的提问来源于stack exchange,提问作者Noob Coder

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 20:40:44