繁体   English   中英

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

[英]Matrix multiplication in Python (defining the input)

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'类型的非整数”。

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

您忽略了将输入转换为数字类型。 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同样如此。

那会让你感到困惑吗?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM