如何修复Python列表仅重复显示最后一个元素、不显示其余元素的问题?
问题:购物车订单重复显示最后一个商品的解决方法
问题现象
运行代码后,所有订单行都重复显示最后一个商品「Chicken」,无法正确展示「Fries」「Nuggets」等其他商品的对应信息。
问题原因
原代码里的第一个for循环遍历商品列表时,每次把补全空格后的商品名赋值给变量carts,循环结束后carts只会保留最后一次循环的结果(也就是「Chicken」)。第二个循环遍历数量和价格时,一直复用这个固定的carts变量,自然所有行都显示同一个商品名。
修复后的代码
cart = ['Fries','Nuggets','Chicken'] quantity = [1, 2, 3] price = [123, 45, 65] amount = 0 def Check_Inventory(): print(f'Orders \t\t\t\t Qty. \t\t Price (php) \n') # 同时遍历商品、数量、价格三个列表,一次处理一行数据 for item, qty, prices in zip(cart, quantity, price): # 用ljust方法快速将商品名补全到10个字符宽度,比while循环更简洁 formatted_item = item.ljust(10) print(f'{formatted_item} \t\t\t {qty} \t\t {prices}') # 可选:计算总价 global amount amount += qty * prices print(f'\n Total: \t\t\t\t\t {amount} \n') Check_Inventory()
修复说明
- 用
zip(cart, quantity, price)同时遍历三个列表,确保每一行的商品、数量、价格一一对应。 - 用字符串的
ljust(10)方法替代原有的while循环,快速将商品名左对齐并补全空格到指定宽度,代码更简洁高效。 - 额外补充了总价计算的逻辑(如果不需要可以删掉),让功能更完整。
输出结果
Orders Qty. Price (php) Fries 1 123 Nuggets 2 45 Chicken 3 65 Total: 453
内容的提问来源于stack exchange,提问作者BugLover
相关产品推荐
相关产品推荐

