2015-12-06 227 views
-1

我在這裏是新來的,但我想有人可以幫我解決一些我一直在努力的工作。'int'類型的對象沒有len

因此,我一直致力於在Toontown Fellowship源代碼上進行重新捕撈捕魚,但過了一段時間後,我發現了一個錯誤。該代碼與Traceback的圖片一起提供。

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 Object of type int has no len

與糾正任何幫助,這將不勝感激發生! (噢,這發生了,當我試圖一個新屬添加到列表中的魚)。

+0

785行對我們沒有多大意義。 – keyser

+0

提示在'for'循環之前加上'print(type(zoneList),repr(zoneList))'。 – DSM

+0

由於'speciesList'和'zoneList'在他們的名字中有'List',我認爲這些應該是他們不是的列表,顯然。假設我認爲使用'len()'是正確的,但你應該檢查這些變量來自哪裏,因爲它們是'int's而不是'list's。 – albert

回答

1

不能使用len(zoneList)zoneList是一個Python int
如果需要位數,請改用len(str(zoneList))

+0

謝謝。這解決了第785行的Traceback錯誤。現在在下一行有一個新的錯誤:元組索引超出範圍,但我會看看我是否無法弄清楚如何自己解決這個問題。 –

+0

正如我在上面的評論中所說的,你應該考慮一下錯誤的原因。你的代碼中只是有一個錯誤,或者你傳遞了錯誤的數據類型?如果第二種情況是真的,你應該檢查_where_你得到的數據... – albert

+0

啊,我明白了。 speciesList是從名爲__fishDict的上面的元組創建的,它又創建了另一個名爲speciesDesc的東西。 zoneList是使用ZONE_LIST_INDEX(來自ToontownGlobals)從speciesDesc創建的, –

相關問題