ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 03.12.2023
Просмотров: 45
Скачиваний: 1
ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
import random, stringfrom time import *def check():#проверка на корректность вводаwhile True:try:a = input()return aexcept:print("Ошибка, повторите ввод")a = check()return adef autoword():#генерация словletters = string.ascii_lettersreturn ''.join(random.choice(letters) for _ in range(4))print("Введите размер матрицы (число от 2 до 5 включительно)")m = check()#ввод размера матрицы с последующей проверкойwhile not m.isdigit() or float(m) < 2 or float(m) > 5 or int(m) != float(m):print("Введено некорректное число, повторите ввод числа от 2 до 5")m = check()M = int(m)#генерация пустых списковmatrix = [[] for temp in range(M)]forsort = []print("Введите 1 для автозаполения, 2 для ввода слов вручную")v = check()while not v.isdigit() or float(v) != 1 and float(v) != 2:print("Введено некорректное число, повторите ввод 1 или 2")v = check()var = int(v)if var == 1:#добавление в матрицу сгенерированных словfor i in range(M):for j in range(M):word = autoword()matrix[i].append(word)forsort.append(int(str(ord(word[0])) + str(ord(word[1])) +str(ord(word[2])) + str(ord(word[3]))))if var == 2:#добавление в матрицу слов, введенных пользователемfor i in range(M):for j in range(M):print("Введите 4буквенное английское слово")word = check()while len(word) != 4 or not(word[0] in string.ascii_letters andword[1] in string.ascii_letters and word[2] in string.ascii_lettersand word[3] in string.ascii_letters): #поверяем, соответствует ли условиюprint("Введено некорректное слово")word = check()matrix[i].append(word)#добавляем во вспомогательный список числа из кодов букв каждого словаforsort.append(int(str(ord(word[0])) + str(ord(word[1])) +str(ord(word[2])) + str(ord(word[3]))))n = len(forsort)#сортируем вспомогательную матрицуunordered = Truewhile unordered:unordered = Falsefor j in range(n - 1):if forsort[j] > forsort[j+1]:forsort[j], forsort[j+1] = forsort[j+1], forsort[j]unordered = Truen -= 1for line in matrix:#печать исходной матрицыprint(*line)ans = [[] for temp in range(M)]k = 0print("Итоговая матрица:")for i in range(M):#преобразуем вспомогательный список в матрицуfor j in range(M):ans[i].append(forsort[k])k += 1for line in ans:#печать обработанной матрицыprint(*line)sleep(100)