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

Python while循环无限询问商品价格问题修复与功能实现

问题表现

运行提供的Python代码时,内层while循环无法正常终止,会持续弹出商品价格输入提示,无法实现逐人录入消费、统计个人总消费、生成[姓名, 个人总消费额]结果列表的预期功能。

故障根因
  • 缺失people_at_table(就餐人数)变量定义,外层循环本身就存在参数缺失问题
  • 内层循环终止条件逻辑完全错误:item_list存储的是每位用户上报的商品件数,录入商品过程中没有对「当前用户已录入商品数」做单独计数,判断条件len(item_list) < items和实际已录入商品数量完全无关,只要用户输入的商品件数大于1,该条件会永久成立,直接触发死循环
  • 个人总金额统计逻辑错误:TotalPrice被定义在内层循环内部,每次录入新商品时都会被重置为0,无法实现单用户消费额累加
  • 缺少最终结果组装逻辑,没有按要求生成[姓名, 对应总消费额]格式的结果列表
修复后完整代码
def NameAndPrice(people_at_table):
    final_result = []
    for _ in range(people_at_table):
        name = input("Enter your name: ").strip()
        item_count = int(input("How many items did you have? "))
        personal_total = 0
        # 逐件录入当前用户的商品
        for _ in range(item_count):
            price = float(input("Enter the price of the item: "))
            personal_total += price
            print(f"Current accumulated consumption: {personal_total}")
        # 按要求组装格式存入结果
        final_result.append([name, personal_total])
    print("Consumption statistics result:")
    print(final_result)
    return final_result

if __name__ == "__main__":
    # 运行时先录入就餐总人数
    people_num = int(input("Enter the total number of people at the table: "))
    NameAndPrice(people_num)
修复说明
  • 给函数增加就餐人数入参,启动时先收集总人数,外层循环逻辑可正常终止
  • 移除逻辑错误的item_list判断逻辑,针对每位用户直接按其上报的商品件数循环录入,从根源解决内层死循环问题
  • 将个人总消费额变量初始化在单用户录入逻辑的外层,录入商品时正常累加,不会被循环重置
  • 每位用户的所有商品录入完成后,直接组装要求的[姓名, 总消费额]结构存入结果,输出完全符合预期

内容的提问来源于stack exchange,提问作者KD The Lad

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 14:06:30