2013-10-21 35 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