2011-06-11 174 views
-2

我在網上搜索了近一個小時,但找不到任何東西。但是我離題了,第6行一直回到TypeError: 'int' object is unsubscriptable。請幫我確定是什麼原因造成的。'int'對象不可訂閱

def __reassigner__(allL, currentRow, currentSpace): 
    changingRow=currentRow+1 
    newl=[-1]*24 
    while changingRow<8: 
     distance = changingRow-currentRow 
     newl[8:15]=allL[changingRow[0:7]] #Line 6, this one 
     if newl[currentSpace]==-1: 
      newl[currentSpace]= currentRow 
     if newl[currentSpace-distance]==-1: 
      newl[currentSpace-distance]= currentRow 
     if newl[currentSpace+distance]==-1: 
      newl[currentSpace+distance]= currentRow 
     allL[changingRow[0:7]]=newl[8:15] 
     changingRow+=1 
    return(allL) 
+1

與您的問題無關,但名稱\ _ \ _包圍\ _ \ _通過雙下劃線應該用於Python的內置功能和[樣式指南](http://www.python.org/dev/peps/pep-0008 /)禁止創建自己的。 – 2011-06-11 23:16:05

回答

4

變量changingRow是一個整數,但你嘗試用changingRow[0:7]切片它。由於整數不允許執行此操作,因此會出現錯誤。

我不知道你的意圖是什麼與該行。也許allL是一個列表清單,你要去allL[changingRow][0:7]

+0

謝謝!你確實很好地診斷出這部分代碼現在可以工作。涼! – BearFury 2011-06-11 23:22:03

0

changingRow在你的代碼似乎是一個整數(我假設行後說changingRow=currentRow+1)。不幸的是,在第6行中,您嘗試獲取:changingRow[0:7],這不起作用,因爲您試圖像訪問數組一樣訪問您的整數值。

0

changingRow是一個整數值。 changingRow[0:7]將提取類似列表(「可下標」)對象的前7個元素,但int沒有像列表和字符串中那樣的「元素」。

你想用changingRow[0:7]實現什麼?

0

changingRow是一個整數,你不能拿的indeces 0-7從中

0

,你不能訪問寫changingRow[0:7]因爲changingRow是一個整數。如果您必須使用切片符號(前8位數字或某物)訪問它,則可以執行str(changingRow)[0:7],但您可能有設計問題。