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
相关产品推荐
相关产品推荐

