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

Python while循环实现持续输入商品价格输入Done后计算总账单问题求助

原代码核心问题
  • 第一行直接将输入强制转换为float类型,若用户输入Done会直接触发类型转换报错,后续判断逻辑完全无法执行
  • 循环逻辑存在漏洞:首次输入的金额没有被计入总账单,且循环终止条件为a>0,不符合仅输入Done才终止的需求
  • 类型不匹配:已经被转为浮点数的a永远不可能等于字符串Done,最终打印总金额的分支永远不会触发
修复后可运行代码
total = 0
while True:
    # 先拿到原始输入,不直接转类型
    input_content = input('Price? ')
    # 优先判断是否为终止指令
    if input_content == 'Done':
        break
    # 校验输入是否为合法金额
    try:
        price = float(input_content)
        total += price
    except ValueError:
        print("输入无效,请输入数字金额或者输入Done结束统计")
# 格式化输出总金额,保留两位小数更符合账单场景
print(f'Total is ${total:.2f}')
逻辑说明
  • 先捕获原始输入内容,优先判断是否为终止指令Done,避免提前转类型导致的报错
  • 增加了非法输入校验,避免用户输入非数字、非Done内容时程序崩溃
  • 所有合法金额都会被计入总账单,仅当输入Done时才终止统计输出结果

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 15:48:00