ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 03.12.2023
Просмотров: 11
Скачиваний: 1
ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
import random, string
from time import *
def check():#проверка на корректность ввода
while True:
try:
a = input()
return a
except:
print("Ошибка, повторите ввод")
a = check()
return a
def autoword():#генерация слов
letters = string.ascii_letters
return ''.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 and
word[1] in string.ascii_letters and word[2] in string.ascii_letters
and 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 = True
while unordered:
unordered = False
for j in range(n - 1):
if forsort[j] > forsort[j+1]:
forsort[j], forsort[j+1] = forsort[j+1], forsort[j]
unordered = True
n -= 1
for line in matrix:#печать исходной матрицы
print(*line)
ans = [[] for temp in range(M)]
k = 0
print("Итоговая матрица:")
for i in range(M):#преобразуем вспомогательный список в матрицу
for j in range(M):
ans[i].append(forsort[k])
k += 1
for line in ans:#печать обработанной матрицы
print(*line)
sleep(100)