Я собираюсь получить входные данные для моего скрипта Python при использовании канала. Первые два элемента - это номера столбцов и строк в матрице, за которыми следуют элементы матрицы.
cat input | python3 matrix.py
Проблема в том, что файл может содержать один матричный элемент в одной строке или всю строку матрицы в одной строке.
Написание программы на C для этого просто. Scanf () автоматически запускает новый ввод, как только он сталкивается с пробелом, будь то пробел или новая строка, но это не относится к python.
Рассмотрим следующие два входных файла:
Файл 1
2
2
1 2
3 4
Файл 2
2
2
1
2
3
4
и следующая функция ввода:
def getter():
col = int(input())
row = int(input())
matrix = []
for i in range(0, row):
temp = input()
matrix.append(temp)
Эта функция работает для файла 1, но не для файла 2. Но, если я изменю цикл на этот:
for i in range(0,row):
temp = []
for j in range(0,col):
temp.append(int(input))
matrix.append(temp)
Тогда это будет работать для файла 2, а не для файла 1.
Есть ли общий способ написания программы на python3, чтобы она работала с обоими файлами?