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