Python中的矩阵乘法(定义输入)

时间:2015-11-09 19:53:37

标签: python

print("Hi sir!")
X=list(input("please enter the first matrix X="))
Y=list(input("Please enter the second matrix Y="))
result=list(input("please enter the template of the result matrix in the form of zeros (0)="))
# iterate through rows of X
for i in range(len(X)):
   # iterate through columns of Y
   for j in range(len(Y[0])):
       # iterate through rows of Y
       for k in range(len(Y)):
           result[i][j] += X[i][k] * Y[k][j]

for r in result:
   print(r)

使用此代码,我收到一条错误消息,指出"不能将序列乘以类型' str'"的非int。

在这里我需要用户自己放置他想要的矩阵,但是当我在代码编辑器中放入相同的矩阵时,它可以工作,所以我认为错误来自定义输入的方式......

1 个答案:

答案 0 :(得分:0)

您忽略了将输入转换为数字类型。 Python输入以字符串形式出现。而不是

X=list(input("please enter the first matrix X="))

您需要将单个元素提取为数字元素。那就是说...因为没有打印导致问题的值而感到羞耻。您编写了一个三重嵌套循环,但没有检查您发送到它的值。一个简单的

打印X

会显示基本问题。这是一种技术含量低但功能强大的调试工具:如果您患有病人,请询问它在哪里受伤;刺激几个地方。然后你不必来急诊室(StackOverflow)。 : - )

那就是说,让我们回到输入处理。我希望您能够一次一行地获取矩阵,获取单个数字,并将它们转换为浮点数。像这样......

in_line = input("please enter the first matrix X=")
value_list = in_line.split()
X = [float(x) for x in value_list]

您可以将此缩小为一行,但这有助于向您展示各个阶段。对矩阵中的每一行重复此操作,然后列出这些列表。为Y做同样的事。

这会让你失意吗?