# Индивидуальное контрольное задание по теме 9 Коломейцев Дмитрий, А-02-23 ## Задание Вариант M3_5 1) Создайте модуль М1, содержащий две функции: - функция 1: аргумент - список СС с числовыми или символьными значениями; по этому списку рассчитывается новый список СС1 с неповторяющимися значениями из исходного списка и числовой список СС2 с целочисленными элементами, равными числам повторений значений из СС1 в СС; эти два списка - результаты функции. - функция 2: аргументы - имя текстового файла, список с числовыми или символьными значениями и целое число; элементы из входного списка должны быть записаны в указанный файл, причем число элементов в строке файла должно равняться указанному целому числу. 2) Создайте еще один модуль М2, в котором должны: - запрашиваться имя текстового файла с исходными данными, проверяться его наличие и при отсутствии - повторение запроса; - считывание значений из каждой строки файла и формирование из них списка ММ; - вызов функции 1 с ММ и отображение результатов; - вызов функции 2 с передачей ей списка СС1 из функции 1 для записи в файл RES2.txt по 3 элемента в строке. 3) Создайте модуль М0 - главную программу, которая вызывает М2 и отображает в виде графика полученный список СС2 и записывает его в бинарный файл RES2a.bin. 4) Подготовьте 2 файла: один с 50 целочисленными случайными значениями из диапазона от 20 до 27, второй - с некоторым набором повторяющихся символьных значений, например, фамилий, и проверьте с ними разработанную программу. ## Решение Содержание M1: ```py # M1.py def func1(CC): CC1 = [] CC2 = [] i = 0 while i < len(CC): value = CC[i] j = 0 exists = 0 while j < len(CC1): if CC1[j] == value: exists = 1 break j = j + 1 if exists == 0: CC1.append(value) i = i + 1 i = 0 while i < len(CC1): value = CC1[i] count = 0 j = 0 while j < len(CC): if CC[j] == value: count = count + 1 j = j + 1 CC2.append(count) i = i + 1 return CC1, CC2 def func2(filename, CC, n): with open(filename, "w", encoding="utf-8") as f: i = 0 in_line = 0 while i < len(CC): if in_line > 0: f.write(" ") f.write(str(CC[i])) in_line = in_line + 1 if in_line == n: f.write("\n") in_line = 0 i = i + 1 if in_line != 0: f.write("\n") ``` Содержание M2: ```py # M2.py import M1 def to_value(text): s = text.strip() if s.isdigit(): return int(s) return s def run(): filename = input() MM = [] with open(filename, "r", encoding="utf-8") as f: for line in f: parts = line.split() i = 0 while i < len(parts): MM.append(to_value(parts[i])) i = i + 1 CC1, CC2 = M1.func1(MM) print(CC1) print(CC2) M1.func2("RES2.txt", CC1, 3) return CC2 ``` Содержание главного модуля M0: ```py # M0.py import pickle import matplotlib.pyplot as plt import M2 def write_bin(filename,data): with open(filename,"wb") as f: pickle.dump(data,f) def main(): CC2=M2.run() x=[] i=0 while i