Как определить размеры матрицы после ввода ее с клавиатуры

m = int(input())
n = int(input())
a = []
for i in range(m):
    line = input()
    a_str = line.split()
    a.append(a_str)

Как обойтись без ввода m, n?


Ответы (2 шт):

Автор решения: Zhihar

ну вам же какой-то разделитель всё равно нужен, ну можно сделать так:

с помощью

row = list(map(int, input().split()))

можно получить список чисел введённых через пробел

а дальше выработать критерии выхода из цикла ввода строк матрицы, например если кол-во цифр текущего ряда не равно кол-ву цифр предыдущего ряда

matrix = []

while True:
    # считать строку матрицы
    row = list(map(int, input().split()))
    
    # если введено только одно значение и оно '0' 
    # или если кол-во чисел текущего ряда отличается от ряда в матрице - выйти
    if len(row) == 1 and row[0] == 0 or len(matrix) > 0 and len(matrix[0]) != len(row):
        break
        
    # добавить строку в матрицу
    matrix.append(row)
    
# вывести размер матрицы
print(f'matrix size: {len(matrix[0])}x{len(matrix)}')
→ Ссылка
Автор решения: belo4ya

Можно считывать ввод построчно, до первой пустой строки:

i = 0
row = str(input(f"{i}: "))
matrix = []
while row:
    matrix.append([int(i) for i in row.split()])
    i += 1
    row = str(input(f"{i}: "))

print(matrix)
print("n =", len(matrix))
print("m =", len(matrix[0]))




0: 1 2 3
1: 4 5 6
2: 7 8 9
3: 
[[1, 2, 3], [4, 5, 6], [7, 8, 9]]
n = 3
m = 3

Единственное при работе с вводом нужно обработать множество нюансов.

→ Ссылка