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

Python程序中更新产品成本的while循环无法终止问题

问题分析与修复方案

嘿,我一眼就发现问题所在了——你的内层while True循环在用户输入有效的正成本后,缺少终止循环的逻辑!当new_price_update > 0的条件满足时,你只执行了更新成本的部分代码(片段里没写完),但循环本身会一直跑下去,所以程序会反复要求输入成本。

修复后的完整代码示例

while True:
    update_choice = input("What would you like to update? (c)ost, (q)uantity, or (e)xit: ").lower()
    
    if update_choice == "c":
        while True:
            try:
                # 获取用户输入并转为浮点数
                new_price_update = float(input("Enter a product cost: "))
                
                if new_price_update > 0:
                    # 这里写入你的产品成本更新逻辑,比如:
                    # products[i].cost = new_price_update
                    print("Product cost updated successfully!")
                    break  # 关键:输入有效后跳出内层循环,回到主菜单
                else:
                    print("Error: Cost must be a positive number. Please try again.")
            except ValueError:
                # 处理用户输入非数字的情况
                print("Error: Invalid input. Please enter a numeric value.")
    
    elif update_choice == "q":
        # 这里添加你的数量更新逻辑
        print("Handling quantity update...")
        # 若数量更新也需要循环输入,可参考成本模块的逻辑实现
    
    elif update_choice == "e":
        print("Exiting update system. Goodbye!")
        break  # 退出外层循环,结束整个更新流程
    
    else:
        print("Invalid choice. Please enter 'c', 'q', or 'e'.")

关键修复点解释

  • 内层循环的break语句:这是解决你问题的核心——在用户输入有效的正成本并完成更新后,用break跳出输入成本的循环,回到外层的更新选择菜单。
  • 添加异常处理:用try-except捕获用户输入非数字时的ValueError,避免程序直接崩溃,让交互更友好。
  • 外层循环的退出选项:增加了'(e)xit'选项,让用户可以主动退出整个更新流程,让逻辑更完整。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 04:27:48