Файл: Import random, string from time import .docx

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 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)