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

