我将在Python上添加矩阵(未完成)。但它显示出一个错误。
m, n = (int(i) for i in raw_input().split())
a = [[0 for i in range(m)] for j in range(n)]
b = [[0 for i in range(m)] for j in range(n)]
c = []
total = []
for i in range(m):
x = raw_input()
for j in range(n):
value = [int(i) for i in x.split()]
c[i][j] = a[i][j]
#c.append(value)
print a
for i in c:
print i
我想输入
3<-矩阵维数m*n
1 2 3>
3 2 1>矩阵A
1 3 2>
1 1 1>
1 1 1>矩阵B
1 1 1>
并表现为
2 3 4>
4 3 2>矩阵A+B
2 4 3>
发布于 2014-09-22 04:00:01
您在外部的i
循环中使用for
,它是一个int。然后在循环中有:
value = [int(i) for i in x.split()]
这使得i
成为一个字符串(这是split
返回的内容)。也许你认为[ ]
内部存在某种范围界定?没有。你有名字碰撞,换一个名字。
发布于 2014-09-22 03:59:17
在内部for循环中使用相同的变量。
for i in range(m):
x = raw_input()
for j in range(n):
# variable i is refering to outer loop
value = [int(p) for p in x.split()]
c[i][j] = a[i][j]
#c.append(value)
print a
for i in c:
print i
发布于 2014-09-22 04:06:57
除了前两个答案之外,您还会遇到以下问题:
c[i][j] = a[i][j]
当循环启动时,i
将是0,到目前为止还可以,但是c
是一个空列表,在第一个位置没有可迭代性,因此c[0][0]
将返回一个错误。去掉它并取消注释下面的一行:
#c.append(value)
编辑:
你的代码不会返回你想要的。你最好做这样的事情,用给定的边创建一个矩阵:
for i in range(m):
d = []
for j in range(n):
x = raw_input()
d.append(int(x))
c.append(d)
如果m
和n
都有3,那么将创建边3x3保存在变量c
中的矩阵。这样,您就不必拆分用户输入。用户可以一次给出一个数字。您甚至可以更改以下一行:
x = raw_input()
至:
x = raw_input("{0}. row, {1}. column: ".format(i+1, j+1))
试试看!
https://stackoverflow.com/questions/25973413
复制相似问题