Напишите программу, на вход которой подаётся прямоугольная матрица в виде последовательности строк. После последней строки матрицы идёт строка, содержащая только строку "end" (без кавычек).
Программа должна вывести результат транспонирования исходной матрицы. Элементы строк выводить через пробел.
Sample Input:
3 2
1 4
end
Sample Output:
3 1
2 4
Программу написать в Python.
Ответы
#Непосредственно ввод матрицы
main_list = []
final_end_check = 0
input_row_order = -1
row_end_check = 0
while (final_end_check == 0):
input_row_order += 1
input_list = []
while (row_end_check == 0):
a = input("Введите число в матрицу")
try:
a = int(a)
except ValueError:
if (a == "end"):
if (len(input_list) == len(main_list[input_row_order - 1])):
main_list.append(input_list)
final_end_check = 1
break
else:
input_list.append(a)
if (input_row_order == 0 and a == "next"):
main_list.append(input_list)
print(input_list, "\nВы ввели строку номер", input_row_order + 1, ", её длина равна", len(input_list), ", теперь введите числа в следующую\n")
break
if (input_row_order > 0): #Переход на следующую строку с помощью ввода "next"
if (a == "next" and len(input_list) != len(main_list[input_row_order - 1])):
print("Длина текущей строки не совпадает с длиной предыдущей (", len(main_list[input_row_order - 1]), "),введите строку заново")
input_row_order -= 1
break
if (a == "next" and (len(input_list) == len(main_list[input_row_order - 1]))):
print(input_list, "\nВы ввели", input_row_order + 1, "строку, теперь введите числа в следующую\n")
main_list.append(input_list)
break
#Транспонирование матрицы
print("\nОсновная матрица\n")
for i in range(len(main_list)):
print(main_list[i])
final_list = [[row[i] for row in main_list] for i in range(len(main_list[0]))]
print("\nТранспонированная матрица:\n")
for i in range(len(final_list)):
print(final_list[i])