' INT'对象不支持项目分配

时间:2015-01-12 00:21:24

标签: python typeerror

这是我的代码,它似乎是一个像主题一样的问题。我是初级学习者,我不知道问题出在哪里。你可以帮我修改代码并告诉我需要审查哪部分知识。提前谢谢。

x = int(raw_input("enter the value of x:"))
y = int(raw_input("enter the value of y:"))
i = 0
j = 0
array=[x*y]
for i in range(x):
    array.append([0 for j in range(y)])
for i in range(x-1):
for j in range(y-1):
    array[i][j]=i * j
print array

3 个答案:

答案 0 :(得分:0)

您的语法错误。首先,如果您存储变量i=0, j=0,那么为什么要在for循环中使用它们呢?它没有任何意义。

其次,只需调试它,将print (array)放在列表之后。

如果x = 5且y = 5;

  

[25,[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]]

这是你的数组,这一行;

array[i][j]=i * j

投掷错误?为什么?因为;

j=0
i=0
array[i]=25
array[i][j] = 2

这就是你收到错误的原因。这里的2的互动员并不支持项目分配。尝试修复语法。

答案 1 :(得分:0)

问题是您正在创建混合类型,整数和列表的列表,然后尝试访问整数值,就好像它是一个列表一样。

让我们用一个简单的例子:

x = 2
y = 3
i = 0
j = 0
array = [x*y]

现在,让我们看一下array目前包含的内容:

array
>> 6

现在我们运行你的第一个for循环:

for i in range(x):
    array.append([0 for j in range(y)])

让我们检查array的新值:

array
>> [6, [0, 0, 0], [0, 0, 0]]

现在我们看到array的第一个元素是一个整数。其余元素都是包含三个元素的列表。

第一次通过嵌套for循环时会发生错误。在第一遍中,i和j均为零。

array[0][0] = 0*0
>> TypeError: 'int' object does not support item assignment 

由于array[0]是一个整数,因此您无法使用第二个[0]。没有什么可以得到的。所以,就像Ashalynd所说,array = x*y似乎是个问题。

根据您真正想做的事情,可能会有很多解决方案。假设您希望列表的第一个元素是长度为y的列表,每个值等于x*y。然后将array = [x*y]替换为:

array = [x*y for i in range(y)]

答案 2 :(得分:0)

尝试检查你的阵列。

array [2 * 3]将导致[6]。

array.append([0,范围(3)]中的j)将导致[6,[0,0,0]],您的第一个元素不是数组。

for循环存在缩进错误。

我认为你要做的是:

array2=[]
for i in range(2):
   array2.append([0 for j in range(3)])