打印2x2矩阵

2024-09-29 21:46:36 发布

您现在位置:Python中文网/ 问答频道 /正文

我编写了一个程序来打印一个2x2矩阵,其中每个矩阵中的数字都是通过用户输入给出的。在

例如:

userin = 1 2     #two digit input with a spacing in between
userin2 = 3 4    #userin and userin2 is first matrix
userin3 = 5 6
userin4 = 7 8    #userin3 and userin4 is second matrix

The program would then print out: [[1,2],[3,4]],   #first matrix
                                  [[5,6],[7,8]]    #second matrix

我让程序按我想要的方式工作,但是我觉得我写的代码效率太低,以至于我创建了太多的空列表来满足用户的输入。在

^{pr2}$

程序以我想要的格式输出,即[[1,2],[3,4]],[[5,6],[7,8]],但我正在寻找一种更有效的方法来实现这一点。在

请注意,不建议我使用numpy和其他内置库。

谢谢你的帮助。在


Tags: and用户程序is矩阵数字matrixfirst
3条回答

为什么不放在while循环中得到任意数量的矩阵,为什么不一次接受所有4个元素?在

比如:

user_in = ['0']
matrices = []
while (user_in[0].lower() != 'q'):
   user_in = input("Input 2x2 matrix(space separated), enter 'q' to quit: ").split(' ')
   if len(user_in) == 4:
      a, b, c, d = user_in
      m2x2 = [[int(a), int(b)], [int(c), int(d)]]
      matrices.append(m2x2)

for matrix in matrices:
    print(matrix)

这里有几个替代方法的例子。我不确定第一个例子是什么,你正在寻找,但我把它扔在乐趣!在

>>> userin = '1 2'.split()
... userin2 = '3 4'.split()
... userin3 = '5 6'.split()
... userin4 = '7 8'.split()
>>> print('[[{}, {}], [{}, {}]]'.format(*userin, *userin2))
... print('[[{}, {}], [{}, {}]]'.format(*userin3, *userin4))
[[1, 2], [3, 4]]
[[5, 6], [7, 8]]
>>> print([[int(a) for a in pair] for pair in (userin, userin2)])
... print([[int(a) for a in pair] for pair in (userin3, userin4)])
[[1, 2], [3, 4]]
[[5, 6], [7, 8]]

我会这样做:

# make a list of lists with the input
userin = [[input("Enter first two digit for first 2x2 matrix: ").strip().split(' '),
                 input("Enter last two digit for first 2x2 matrix: ").strip().split(' ')],
          [input("Enter first two digit for second 2x2 matrix: ").strip().split(' '),
                 input("Enter last two digit for second 2x2 matrix: ").strip().split(' ')]]

for matrix in userin: # loop through inner lists
    for index, row in enumerate(matrix): # loop through each matrix
        matrix[index] = [int(item) for item in row] # convert input to integers

print(",\n".join(str(matrix) for matrix in userin)) # print

如果总是这4个输入语句,我认为这是好的。如果输入是可变的,那么创建一个函数将更有意义。在

输出:

^{pr2}$

相关问题 更多 >

    热门问题