如何从用户输入中捕获矩阵并在用户输入时将其打印出来?

我正在用 numpy 尝试创建一个 3x3 矩阵。我想通过用户输入捕获矩阵输入,然后在用户输入时打印出矩阵。


这就是我现在所拥有的,它会抛出一个


ValueError: invalid literal for int() with base 10: 

当我运行它时,我不知道为什么。我不会在任何地方输入字母“a”,而只会输入数字。


def matrix():

    row = int(3)

    column = int(3)

    matrix_input = []

    print("Enter the entries in a single line (separated by space): ")

    for i in range(row):  # A for loop for row entries

        entries = []

        for j in range(column):  # A for loop for column entries

            entries.append(int(input()))

        matrix_input.append(entries)


    # matrix_input = np.array(entries).reshape(row, column)

    print(matrix_input)

目标是让用户在三个单独的行上输入 3 个数字。例子:


130

304

603

然后,程序会按照用户输入的内容以相同的格式准确地输入该内容。


130

304

603

任何指导将不胜感激。谢谢


蝴蝶不菲
浏览 149回答 4
4回答

摇曳的蔷薇

现在,您的代码分别要求每个元素。如果你输入数字直到它像这样结束111222333444555666777888999程序将返回[[111, 222, 333], [444, 555, 666], [777, 888, 999]]发生这种情况是因为input()位于最内层循环内,因此被调用了 9 次。因此,如果您想输入所示的由空格分隔的值,您可以使用列表理解将其转换为数字列表:row = int(3)matrix_input = []print("Enter the entries in a single line (separated by space): ")for i in range(row):  # A for loop for row entries    matrix_input.append([int(k) for k in input().split(' ')])for out in matrix_input:    print('{0} {1} {2}'.format(*out))这将要求三个条目,这些条目沿空格分割并转换为整数。如果你想要浮动,你可以使用float(k)而不是int(k)。print 命令使用解包并返回行for ... in。或者,您可以使用' '.join(),它更灵活:for out in matrix_input:    print(' '.join([str(el) for el in out]))这实际上是构造矩阵的逆运算。

大话西游666

def matrix():     row = int(3)    column = int(3)    matrix_input = []    print("Enter the entries in a single line (separated by space): ")    for i in range(row):  # A for loop for row entries        ints =input()        entries = []        for a in ints:          entries.append(int(a))        matrix_input.append(entries)    for ele in matrix_input:      for d in ele:        print(d,end='')      print('')matrix()输入:Enter the entries in a single line (separated by space): 130304603输出:130304603

弑天下

问题是您试图将整个字符串(每个 int 之间有空格的输入)转换为整数。相反,您需要拆分输入。见下文:def matrix():    row = int(3)    column = int(3)    matrix_input = []    print("Enter the entries in a single line (separated by space): ")        input_str = input()        entries = []    entries.extend([int(x) for x in input_str.split(' ')])        for item in entries:        print(item)

Cats萌萌

这可以解决问题。def matrix():    row = int(3)    column = int(3)    matrix_input = []    print("Enter the entries in a single line (separated by space): ")    for i in range(row):  # A for loop for row entries        # ints = input().split()        while True:            ints = input().split()            if len(ints) == 3:                break            print("Invalid Input Received")            print("Enter the entries in a single line (separated by space): ")        entries = []        for a in ints:            entries.append(int(a))        matrix_input.append(entries)    print("Output")    for ele in matrix_input:        for d in ele:            print(d, end=' ')        print('')
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python