【问题标题】:How to make a matrix from a single line input without using libraries in Python?如何在不使用 Python 库的情况下从单行输入制作矩阵?
【发布时间】:2021-09-04 22:19:24
【问题描述】:

我需要制作一个大小为 M*M(这是用户输入值)的方阵,然后,我应该用一行空格分隔的数字制作一个矩阵。

sizeOfMatrix = int(input())
matrix_input = input()
matrix = [[]*3]*3
for i in range(sizeOfMatrix):
    for j in range (sizeOfMatrix):
    # And this is where I got stuck
        matrix[i][j].append()

【问题讨论】:

  • 提前感谢所有花时间解决这个问题的人......
  • 您能否先提供示例输入和预期输出?例如,如果 sizeOfMatrix 是 9,matrix_input 是什么?好像没用过?
  • @Daniel Hao 和其他人,matrix_input() 是矩阵的单行输入,如 matrix_input = "2 37 18 34 23 9 65 4 78" (在 sizeOfMatrix = 3 的情况下).. . 现在,我想将每个变量分成 3 部分,并将它们附加到列表类型的变量矩阵中。
  • 这些帖子对您有帮助吗?

标签: python list matrix


【解决方案1】:

您可以试试这个 - 它遵循原始 PO,但不需要两个循环。 [注意] 它基于 PO 指示的示例输入 - 将 matrix_input (numbers) 收集在一行中(如问题标题所述)。

size  = int(input('Enter the size of this Square Matrix: '))  # eg. 3; R == C
numbers = list(map(int, input(f' Enter {size*size} numbers: ').split()))  # all 3x3 numbers 

matrix = []        # [[]*3]*3

for i in range(0, len(numbers), size):
    matrix.append(numbers[i: i+size]) 

print(matrix)

交互运行和输出:

Enter the size of this Square Matrix: 3
Enter 9 numbers: 1 2 3 4 5 6 7 8 9
[[1, 2, 3], [4, 5, 6], [7, 8, 9]]

或者为这个方阵搭配更漂亮的单行:

M = []
while not M or len(M) < len(M[0]):
    M.append(list(map(int,  input('Enter the number for a row: ').split())))

跑步:

Enter the number for a row: 1 2 3
Enter the number for a row: 4 5 6
Enter the number for a row: 7 8 9
>>> M
[[1, 2, 3], [4, 5, 6], [7, 8, 9]]

【讨论】:

    【解决方案2】:

    如果你想要方阵使 R=C

    R = int(input("Enter the number of rows:")) 
    C = int(input("Enter the number of columns:")) 
      
    # Initialize matrix 
    matrix = [] 
    print("Enter the entries rowwise:") 
      
    # For user input 
    for i in range(R):          # A for loop for row entries 
        a =[] 
        for j in range(C):      # A for loop for column entries 
             a.append(int(input())) 
        matrix.append(a) 
    

    用于打印矩阵

    for i in range(R): 
        for j in range(C): 
            print(matrix[i][j], end = " ") 
        print() 
    

    【讨论】:

    • 感谢您的回答,但请参阅有关该问题的新 cmets。
    • 根据定义,在方阵中,R == C。你应该问一个input
    【解决方案3】:

    这就是创建方阵的方式。

    sizeOfMatrix = int(input('Matrix Size: '))
    mat = []
    
    for i in range(sizeOfMatrix):
        rows = list(map(int, input('Enter space separated values: ').split()))[:sizeOfMatrix]
        mat.append(rows)
    
    print(f'\nMatrix:')
    for i in mat:
        print(*i)
    
    Matrix Size: 3
    Enter space separated values: 2 1 6
    Enter space separated values: 0 21 8
    Enter space separated values: 6 9 7
    
    Matrix:
    2 1 6
    0 21 8
    6 9 7
    

    【讨论】:

    • 感谢您的回答,但请参阅有关该问题的新 cmets。
    • 相应地更新您的答案。你的问题还不清楚。
    • PO表示一步收集所有输入的数字?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-18
    • 1970-01-01
    • 2022-07-01
    • 2022-01-20
    • 2022-01-18
    相关资源
    最近更新 更多