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

TypeError: 'type'对象不可下标访问问题求助(附Python代码)

错误原因与修复方案

核心错误原因

你写的r = int是把变量r赋值成了Python的整数类型对象,而不是可通过下标访问的容器(比如列表)。当你执行r[q] = q + 1或r[w] != i这类下标操作时,Python会报错,因为int类型本身不支持下标访问,这就是你看到的TypeError: 'type' object is not subscriptable的原因。

修复步骤与修正代码

  1. 正确初始化r为列表:根据你的循环范围,提前创建一个足够长度的列表,要么用空列表逐步添加元素,要么直接初始化对应长度的列表。
  2. 删除循环内多余的q = q + 1:for q in range(...)会自动迭代q的取值,手动修改q会破坏循环的正常逻辑。
  3. 修正print(q[w])的错误:这里q是循环变量,不是容器,应该改为print(r[w])。

修正代码示例(按索引赋值版本)

# 假设casovaJednotka和celkovaCasovaJednotka是已定义的变量
start = casovaJednotka - celkovaCasovaJednotka
# 初始化r为对应长度的列表,用0填充占位
r = [0] * (casovaJednotka + 1)

for q in range(start, casovaJednotka + 1):
    r[q] = q + 1

for i in range(casovaJednotka, 0, -1):
    for w in range(start, casovaJednotka):
        if r[w] != i:
            print(r[w])
        if casovaJednotka - 1 == w:
            print("0\n")

修正代码示例(动态添加元素版本)

r = []
start = casovaJednotka - celkovaCasovaJednotka

for q in range(start, casovaJednotka + 1):
    r.append(q + 1)

for i in range(casovaJednotka, 0, -1):
    for w in range(start, casovaJednotka):
        if r[w] != i:
            print(r[w])
        if casovaJednotka - 1 == w:
            print("0\n")

内容的提问来源于stack exchange,提问作者Christofer Kiňo

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 14:57:28