2013-10-21 63 views
-3
x = int (raw_input('Introduceti Ziua in care doriti adaugarea: ')) 
print 
print "  Options Available" 
print "---------------------------------" 
print "1 -- FOOD" 
print "2 -- BOOKS" 
print "3 -- SPORTS" 
print "4 -- Clothing" 
print "5 -- Transport" 
y = int (raw_input('Introduceti tipul dorit: ')) 
m = int (raw_input('Introduceti valoarea dorita: ')) 
a[x][y]=a[x][y] + m 

這是我的一個功能。 a是全局的並且被定義爲所有值都設置爲0的矩陣,例如a = [[0,0,0,0,0],[0,0,0,0,0,0]]。如果我嘗試a[1][2] = a[1][2] + m,我會看到錯誤消息List index out of range需要幫助 - 列表索引超出範圍

請幫忙。

+0

這不是導致這個問題,你提供了什麼價值? – DevC

+0

@DevC:'m'的價值無關緊要。流氓'm'值可能會導致唯一的一個'TypeError'。 –

+0

嘗試在最後一行之前放置一個打印字符(a)。然後將控制檯文本複製並粘貼到您的問題中,包括輸入,輸出和錯誤。如上所述, – sdanzig

回答

4

不能在這裏重現此:

>>> a = [[0,0,0,0,0],[0,0,0,0,0,0]] 
>>> a[1][2] = a[1][2] + 999 
>>> a 
[[0, 0, 0, 0, 0], [0, 0, 999, 0, 0, 0]] 

你知道,[1]訪問列表的元素?

如果你想創建的x將與每y零的數組,做

a = [[0] * y for _ in xrange(x)] 

例如:

>>> x = 4 
>>> y = 5 
>>> a = [[0] * y for _ in xrange(x)] 
>>> a 
[[0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0]] 

您可能會問自己:爲什麼不簡單地做a = [[0] * y] * x?繼續,嘗試一下,看看會發生什麼。它有效,不是嗎?現在做a[0][0] = 1,看看會發生什麼......

+0

a主要構建爲全球性的。我輸入的值在1,31和1.5之間。一個在我的主要看起來像這樣。 a = [[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]] –

+0

@MuresanIonut:更重要的是,請展示你的感受建立'a',以及爲'x'和'y'輸入什麼。 –

+2

如果您輸入x大於1的任何東西,您將超出範圍。 x只能是0或1,因爲a只有2個元素。 – Pines