Python中矩阵计算程序的用户定义输入

Python中矩阵计算程序的用户定义输入,python,matrix,input,Python,Matrix,Input,我已经写下了我最终目标的“硬编码”版本。如您所见,我有一个特定的n值以及预定义的矩阵X和Y。该程序目前执行计算很好,但我遇到的问题是修改它以接受用户定义的n、X和Y输入,并根据用户输入的内容准确执行计算。我仍然习惯于Python和用户输入,因此非常感谢您在编写代码方面提供的任何帮助!我还应该注意到,为了学习的目的,我试图在没有NumPy的情况下完成这项工作。谢谢 # Program to add two matrices # using nested loop n = 3 X = [[12,

我已经写下了我最终目标的“硬编码”版本。如您所见,我有一个特定的n值以及预定义的矩阵X和Y。该程序目前执行计算很好,但我遇到的问题是修改它以接受用户定义的n、X和Y输入,并根据用户输入的内容准确执行计算。我仍然习惯于Python和用户输入,因此非常感谢您在编写代码方面提供的任何帮助!我还应该注意到,为了学习的目的,我试图在没有NumPy的情况下完成这项工作。谢谢

# Program to add two matrices
# using nested loop

n = 3

X = [[12,7,3],
    [4 ,5,6],
    [7 ,8,9]]

Y = [[5,8,1],
    [6,7,3],
    [4,5,9]]

result = [[0,0,0],
         [0,0,0],
         [0,0,0]]

# adds the matrices
# iterate through rows
for i in range(len(X)):
   # iterate through columns
   for j in range(len(X[0])):
       result[i][j] = X[i][j] + Y[i][j]

for r in result:
   print(r)


# subtracts the matrices
for i in range(len(X)):
   for j in range(len(X[0])):
       result[i][j] = X[i][j] - Y[i][j]

for r in result:
   print(r)

# multiplies the matrices
for i in range(len(X)):
   # iterate through columns
   for j in range(len(X[0])):
       result[i][j] = sum((X[i][v]*Y[v][j] for v in range(n)))

for r in result:
   print(r)

也许这会有帮助。首先从用户处获得n,然后读取X矩阵的n行数。每行中的值用逗号分隔

n  = int(input("Provide n: "))

X = [];

for rowi in range(n):
    row_list = list(map(float, input("row {}: ".format(rowi+1)).split(',')))
    X.append(row_list)

print(X)

请注意,这是在Python3.4中测试的,这里没有任何错误检查。因此,您可能需要添加一些条件来检查用户输入是否是数字,而不是字符串,以及每一行是否有相同数量的条目等。

因为我们知道matrx可以在Python中表示为嵌套列表,所以我们可以为每个元素提示用户输入。同一行中的元素首先包含在名为row[]的列表中然后它被附加到容器列表中,因此我们得到容器列表中的列表,从而得到矩阵

#Prints the sum of matrix of orders mxn
first_row_count = int(input('Enter the number of rows of 1st matrix :'))
first_col_count = int(input('Enter the number of columns of 1st matrix :'))

second_row_count = int(input('Enter the number of rows of 1st matrix :'))
second_col_count = int(input('Enter the number of columns of 1st matrix :'))

first_Matrix =[]
second_matrix=[]

if(first_row_count == second_row_count) and (second_row_count == second_col_count):
    print('############Enter the elements of first Matrix#################')
    for i in range(0,first_row_count):
        row = []
        input_variable = None
        for j in range(0,first_col_count):
            input_variable = int(input('Enter the element at mat[{0}][{1}]'.format(i,j)))
            row.append(input_variable)
       first_Matrix.append(row) 

    print('############Enter the elements of second Matrix#################')    
    for i in range(0,second_row_count):
        row = []
        input_variable = None
        for j in range(0,second_col_count):
            input_variable = int(input('Enter the element at mat[{0}][{1}]'.format(i,j)))
            row.append(input_variable)
        second_matrix.append(row)          

    print('############Resultant Matrix#################')   
    result = [[first_Matrix[i][j] + second_matrix[i][j]  for j in range(len(first_Matrix[0]))] for i in range(len(first_Matrix))]
    for r in result:
           print(r)
else:
    print('------------The matrix of given orders are not compatible-----------------')    
print('########The Matrix Sum performed##################')    

“有问题是修改它以接受用户定义的输入…”什么问题?任何代码示例,错误?没有错误。正如我所说,上面的代码运行良好。虽然我已经给出了预定义的输入,但我希望它能要求用户输入并使用它。请不要简单地发布一些代码,而是解释您认为解决方案是什么,并且只发布代码部分,其中包含您描述的实际答案或解决方案:)@Florian我已经添加了上述代码实现背后的逻辑。