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

Python开发在线购物车时,使用列表作为另一列表索引触发TypeError的问题求助

解决Python购物车系统列表索引错误的问题

嘿,作为Python新手遇到这种问题很正常,咱们一步步拆解解决:

首先,你的错误根源

你触发的TypeError: list indices must be integers or slices, not list,本质是因为**code_inputed变成了嵌套列表**(列表里套着列表),而你试图用这个嵌套列表去索引productList——但Python规定列表的索引只能是整数或者切片,不能是另一个列表。

看你这段输入代码就明白了:

else: 
    code_input.append(i) 
    quan_input.append(s) 
    code_inputed.append(code_input) 
    quan_inputed.append(quan_input)

你每次把整个code_input列表(而不是单个商品代码i)添加到code_inputed里。比如用户输入第一个商品代码1,code_input变成[1],code_inputed就变成[[1]];再输入第二个代码2,code_input变成[1,2],code_inputed就变成[[1], [1,2]]——这里面的每个元素都是列表,自然没法当索引用。


第一步:修正输入逻辑

如果你的需求是存储每个商品的单个代码和对应数量,完全不需要中间的code_input和quan_input列表,直接把单个值加到目标列表里就行:

else:
    # 直接添加单个商品代码和数量,避免嵌套
    code_inputed.append(i)
    quan_inputed.append(s)

这样code_inputed就会变成类似[1, 3, 5]的整数列表,每个元素都是合法的索引值。

另外别忘了把用户输入的代码转换成整数(如果用户输入的是字符串,比如"1",也会触发索引错误):

# 接收输入时转成整数
i = int(input("请输入商品代码: "))
s = int(input("请输入商品数量: "))

第二步:修复display函数

原来的函数逻辑有点混乱,咱们用zip函数把商品代码和对应数量配对遍历,再用代码去索引productList。假设productList是类似[["商品0", 10], ["商品1", 20], ["商品2", 30]]的结构(每个元素是商品名称+价格的元组/列表),可以这样写:

def display():
    # 同时遍历商品代码和对应的数量
    for code, quan in zip(code_inputed, quan_inputed):
        # 用整数代码索引商品列表,取出名称和价格
        product_name, product_price = productList[code]
        # 格式化打印信息
        print(f"商品名称: {product_name} | 单价: {product_price} | 数量: {quan}")

测试示例

假设你的productList定义如下:

productList = [
    ["矿泉水", 2],
    ["面包", 5],
    ["牛奶", 6]
]
code_inputed = [0, 1, 2]
quan_inputed = [3, 2, 1]

调用display()后,会输出:

商品名称: 矿泉水 | 单价: 2 | 数量: 3
商品名称: 面包 | 单价: 5 | 数量: 2
商品名称: 牛奶 | 单价: 6 | 数量: 1

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.27 15:42:31