Игнорируется первая вводимая строка

Рейтинг: 0Ответов: 1Опубликовано: 17.07.2023

Помогите новичку! Только начал изучать списки. Нужно создать произвольную матрицу, изначально не задавая кол-во строк и столбцов. Попробовал подобное решение, но не могу понять почему питон просто игнорирует первую введённую строку, и не добавляет её в список, хотя остальные добавляются без проблем.

a = []
while 1 > 0:
    n = input()
    if n == 'end':
        break
    else:
        n = list(map(int, input().split()))
        a.append(n)
print(a)

Ответы

▲ 0Принят

Как написали в комментариях, в блоке else вы снова вызываете input(), и не используете то, что запросили до проверки. В вашем коде ещё и возникает ошибка

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

при вводе end в чётной строке.

Для решения этих проблем, не запрашивайте ввод снова в блоке else, а используйте прошлый:

a = []
while 1 > 0:
    n = input()
    if n == 'end':
        break
    else:
        n = list(map(int, n.split()))
        #                 ^ вместо `input()` здесь должно быть `n`
        a.append(n)
print(a)

Такая программа работает правильно:

1 2 3
4 5 6
7 8 9
end
[[1, 2, 3], [4, 5, 6], [7, 8, 9]]