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

如何在Python代码中添加循环,实现输入错误后重新输入而不退出程序

实现方案

核心逻辑是为每一处需要校验的输入添加while死循环,输入内容符合要求时用break跳出循环继续执行后续代码,不符合要求则提示错误后重新进入输入流程,避免程序直接退出。本次修改同时修复了原代码中婚姻状态判断的逻辑bug(原代码直接对输入字符串做布尔判断,无论输入内容是True还是False都会判定为已婚)。

关键改动说明

  • 所有可能出现格式错误的数值输入都嵌套了try-except捕获类型转换异常,避免输入非数字内容时程序崩溃
  • 数值输入额外增加了范围校验,收入、抚养人数为负数时会要求重新输入
  • 婚姻状态输入增加了合法值校验,仅接受True/False两种输入,转换为布尔值后再做后续判断

修改后完整代码

# 初始化常量
TAX_RATE = 0.15
TAX_RATE_MARRIED = 0.14
STANDARD_DEDUCTION = 10000.0
DEPENDENT_DEDUCTION = 3000.0

# 收集输入
taxFile = input("请输入您的税档编号:")

# 总收入输入校验
while True:
    try:
        grossIncome = float(input("请输入您的总收入:"))
        if grossIncome < 0:
            print("收入不能为负数,请重新输入")
        else:
            break
    except ValueError:
        print("输入格式错误,请输入合法数字")

# 抚养人数输入校验
while True:
    try:
        numDependents = int(input("请输入抚养人数:"))
        if numDependents < 0:
            print("抚养人数不能为负数,请重新输入")
        else:
            break
    except ValueError:
        print("输入格式错误,请输入整数")

firstName = input("请输入您的名:")
lastName = input("请输入您的姓:")

# 婚姻状态输入校验
while True:
    marrige_input = input("您是否已婚?请输入True/False:").strip()
    if marrige_input in ("True", "False"):
        marrigeStatus = marrige_input == "True"
        break
    else:
        print("输入无效,请输入True或False")

address = input("请输入您的地址:")

# 邮编输入校验
while True:
    try:
        postcode = int(input("请输入您的邮编:"))
        break
    except ValueError:
        print("邮编格式无效,请输入数字格式的邮编")

# 计算个税
taxableIncome = grossIncome - STANDARD_DEDUCTION - numDependents * DEPENDENT_DEDUCTION
incomeTax = taxableIncome * TAX_RATE
incomeTaxMarried = taxableIncome * TAX_RATE_MARRIED

# 输出结果
print("您的税档编号为:", taxFile)
print("您的个人信息为:", firstName, lastName)
print("您的地址为:", address, postcode)
print("您的年度总收入为:$", grossIncome)
if marrigeStatus:
    print("您的应缴个税总额为:$" + str(round(incomeTaxMarried, 2)))
else:
    print("您的应缴个税总额为:$" + str(round(incomeTax, 2)))
print("感谢使用本程序,按回车键即可关闭")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 21:36:03