Python 类型为'的对象;int';没有透镜

Python 类型为'的对象;int';没有透镜,python,Python,我是新来的,但我想也许有人能帮我做一些我已经做了一段时间的事情 所以我一直致力于在Toontown Fellowship的源代码上重新吸血捕鱼,但过了一段时间,我发现了一个错误。代码与回溯的图片一起提供 for genus, speciesList in __fishDict.items(): for species in range(len(speciesList)): __totalNumFish += 1 speciesDesc = speciesL

我是新来的,但我想也许有人能帮我做一些我已经做了一段时间的事情

所以我一直致力于在Toontown Fellowship的源代码上重新吸血捕鱼,但过了一段时间,我发现了一个错误。代码与回溯的图片一起提供

for genus, speciesList in __fishDict.items():
    for species in range(len(speciesList)):
        __totalNumFish += 1
        speciesDesc = speciesList[species]
        rarity = speciesDesc[RARITY_INDEX]
        zoneList = speciesDesc[ZONE_LIST_INDEX]
        for zoneIndex in range(len(zoneList)):
            zone = zoneList[zoneIndex]
            effectiveRarity = getEffectiveRarity(rarity, zoneIndex)
            if zone == Anywhere:
                for rodIndex, rarityDict in __anywhereDict.items():
                    if canBeCaughtByRod(genus, species, rodIndex):
                        fishList = rarityDict.setdefault(effectiveRarity, [])
                        fishList.append((genus, species))
回溯发生在785行


如果您能帮我改正,我们将不胜感激!(哦,是的,这是在我试图将一个新属添加到鱼类列表时发生的。)

当python中的
zoneList
int
时,不能使用
len(zoneList)

如果需要位数,请使用
len(str(zoneList))

第785行对我们来说意义不大。提示添加
print(type(zoneList),repr(zoneList))
就在
for
循环的前面。由于
speciesList
zoneList
的名称中有
List
,我认为这些应该是列表,而它们显然不是。假设这一点,我认为使用
len()
是正确的,但是你应该检查这些变量来自哪里,因为它们是
int
s而不是
list
s。@albert“物种列表”部分是根据最小重量、最大重量、稀有性以及它们的发现位置来定义所有物种的。谢谢。这解决了785行的回溯错误。现在下一行出现了一个新错误:元组索引超出范围,但我会看看是否我自己无法解决这个问题。正如我在上面的评论中所说,您应该考虑一下错误的原因。只是代码中有错误,还是传递了错误的数据类型?如果第二种情况是真的,你应该检查一下你从哪里得到的数据……啊,我明白了。speciesList是从它上面名为_fishDict的元组创建的,而这个元组又创建了另一个名为speciesDesc的东西。zoneList是使用ZONE_LIST_索引(来自ToontownGlobals)从speciesDesc创建的