n维矩阵乘法python

时间:2016-05-06 16:25:05

标签: python matrix input multiplication n-dimensional

我正在用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

2 个答案:

答案 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是智能的,并且在很多情况下可以自动转换变量,但它总是不能这样做,我们需要对它进行改变。