我正在用Python编写一个程序,它将用户输入的维度的两个矩阵相乘。我遇到的问题是用户必须输入输入中每一行的值,我的程序只能为每个输入获取一个值。 我尝试过使用.split(),但是当它发生时,乘法就会发送给我 错误:
TypeError:不能将序列乘以'list'类型的非-int。
我的代码是:
matriza=[]
matrizb=[]
matrizc=[]
orden=int(input("Ingresa el orden de las matrices: "))
#Para obtener la primer matriz
for i in range(0,orden):
matriza.append([0]*orden)
for j in range(0,orden):
matrizb.append([0]*orden)
for k in range(0,orden):
matrizc.append([0]*orden)
for i in range(0,orden):
for j in range(0,orden):
matriza[i][j]=int(input("entrada renglon para la primer matriz"))
print "La primer matriz que introdujiste fue:" "\n" ,matriza, "\n"
#Para obtener la segunda matriz
for i in range(0,orden):
for j in range(0,orden):
matrizb[i][j]=int(input("entrada renglon para la segunda matriz"))
print "La segunda matriz que introdujiste fue:" "\n" ,matrizb, "\n"
#Para la multiplicación de las dos matrices
for i in range(0,orden):
for j in range(0,orden):
for k in range(0,orden):
matrizc[i][j]+=matriza[i][k]*matrizb[k][j]
print "La matriz que resulta de multiplicar las matrices que introdujiste es:" "\n" ,matrizc
答案 0 :(得分:1)
首先,由于您使用的是Python 2(根据print
语法判断),因此您应该使用raw_input
代替input
。
如果您希望用户在一行输入中提供行的所有值,则应使用[int(x) for x in raw_input().split()]
。您可能已将split
结果分配给矩阵单元格,而不是在您遇到问题时使用其元素填充整行:
matriza=[]
matrizb=[]
matrizc=[]
orden=int(input("Ingresa el orden de las matrices: "))
for i in range(orden):
matriza.append([int(x) for x in raw_input("Enter a row of matrix A:").split()])
...
答案 1 :(得分:-1)
在Python中,您可以直接接受列表作为输入。 例如:
matrixA = input("Please enter Matrix A")
用户可以输入以下内容:
[[1,2],[3,4]]
现在您可以直接进行计算了。 在您的程序中使用您的方法,如果您使用split,则需要将输入转换为int。 Split创建一个str对象数组。 str不能相乘,因此遇到TypeError。虽然Python是智能的,并且在很多情况下可以自动转换变量,但它总是不能这样做,我们需要对它进行改变。