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。
在这里我需要用户自己放置他想要的矩阵,但是当我在代码编辑器中放入相同的矩阵时,它可以工作,所以我认为错误来自定义输入的方式......
答案 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做同样的事。
这会让你失意吗?