如何从stdin(控制台)读取矩阵?

时间:2016-03-19 17:07:45

标签: python

我正在尝试从标准输入读取,第一行指定矩阵的维数总是方矩阵

但我的代码只读取第一行

示例输入

  3
     0   2   3  
     2   4   1 
     3   1   4  

我的代码

def read_matrix(formatted_string):
    list_of_lists = [list(map(int, row.split())) for row in formatted_string.split('\n')]

    return list_of_lists

x = input("enter the list of lists of numbers?")
print(read_matrix(x))

2 个答案:

答案 0 :(得分:1)

您只询问行数而不是行本身的内容。以下代码显示了如何生成完整矩阵:

def read_matrix(count):
    list_of_lists = [list(map(int, input('Enter a row: ').split())) for _ in range(count)]

    return list_of_lists

x = input("enter the list of lists of numbers?")
print(read_matrix(int(x)))

它将首先向用户查询行数并将该数字传递给read_matrix,这将要求用户输入每一行。

答案 1 :(得分:0)

根据official documentation

  

然后从输入读取一行的函数,   将其转换为字符串(剥离尾随换行符)

请注意读取一行。但是在这里你试图通过一次调用input来读取4行。您可能希望运行循环来获取此输入。