0

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

2 回答 2

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()])
...
于 2016-05-06T17:04:32.260 回答
-1

在 Python 中,您可以直接接受列表作为输入。前任:

matrixA = input("Please enter Matrix A")

用户可以输入如下内容:

[[1,2],[3,4]]

现在您可以直接进行计算。在您的程序中使用您的方法,如果您使用拆分,则需要将输入转换为 int。Split 创建一个 str 对象数组。str 不能相乘,因此您遇到了 TypeError。尽管 Python 很智能,并且可以在许多情况下自动转换变量,但它不能总是这样做,我们需要对此有所不同。

于 2016-05-06T16:50:42.077 回答