# Индивидуальное задание по модулю 3 Криви Анастасия, А-02-23 Вариант 7 # Задание 1) Создайте модуль М1, содержащий две функции: - функция 1: аргументы - три целочисленных параметра: Т1, Т2 и М; функция должна рассчитать и вернуть список СС с М неповторяющимися целыми числами в интервале значений между Т1 и Т2; - функция 2: аргументы - список СС с неповторяющимися целыми числами и список или кортеж КК с целыми числами; функция должна создать список НН, с числом элементов, равным длине СС, и с целыми значениями из КК, близкими к соответствующим элементам в СС; так, элемент КК[i] считается близким к элементу CC[j], если для него абсолютная разность |KK[i]-CC[j]| - наименьшая по всем CC[j]. 2) Создайте еще один модуль М2, в котором должны выполняться операции: - запрашиваются у пользователя целочисленные границы диапазона значений Т1 и Т2; проверяется T1(T2-T1), то принимается М=Т2-Т1; - с помощью функции 1 создается и отображается список СС; - создается список КК с 500 случайными целыми числами в диапазоне значений от Т1 до Т2; - с помощью функции 2 рассчитывается список НН; результат отображается на экране. 3) Создайте модуль М0 - главную программу, которая вызывает М2 и записывает списки КК, СС и НН в бинарный файл Res1212.bin. 4) Проверьте программу при двух наборах исходных данных: - Т1=34, Т2=78, М= 10 - Т1=25, Т2=30, М=8. # Решение ## Пункт первый - модуль М1 Создание первой функции: аргументы - три целочисленных параметра: Т1, Т2 и М; функция должна рассчитать и вернуть список СС с М неповторяющимися целыми числами в интервале значений между Т1 и Т2; ```py import random def func1(T1, T2, M): """ Рассчет списка СС с M неповторяющимися целыми числами в интервале между T1 и T2 """ if T2 - T1 < M: M = T2 - T1 CC = random.sample(range(T1, T2), M) return CC ``` Создание второй функции: аргументы - список СС с неповторяющимися целыми числами и список или кортеж КК с целыми числами; функция должна создать список НН, с числом элементов, равным длине СС, и с целыми значениями из КК, близкими к соответствующим элементам в СС; так, элемент КК[i] считается близким к элементу CC[j], если для него абсолютная разность |KK[i]-CC[j]| - наименьшая по всем CC[j] ```py def func2(CC, KK): """ Создание списка НН (с числом элементов, равным длине СС) с целыми значениями из КК, близкими к соответствующим элементам в СС """ HH = [] for i in CC: cl = min(KK, key= lambda x: abs(x - i)) HH.append(cl) return HH ``` ## Пункт второй - модуль М2 Запрос у пользователя целочисленных границ диапазона значений Т1 и Т2; проверка условия T1(T2-T1), то принимается М=Т2-Т1, иначе значение М не изменяется ```py if M > (T2 - T1): M = T2 - T1 ``` С помощью функции 1, созданной в пункте первом, создается и отображается список СС. Создание списка КК с 500 случайными целыми числами в диапазоне значений от Т1 до Т2. С помощью функции 2, созданной в пункте первом, рассчитывается список НН, а результат отображается на экране. ```py CC = M1.func1(T1, T2, M) print("Список СС:", CC) KK = [random.randint(T1, T2) for _ in range(500)] HH = M1.func2(CC, KK) print("Список НН:", HH) return KK, CC, HH ``` и завершение выполнение второго пункта, а именно создание модуля М2. ## Пункт третий Создание модуля М0 - главной программы, которая вызывает М2 и записывает списки КК, СС и НН в бинарный файл Res1212.bin. ```py import M2 import pickle CC, KK, HH = M2.main() data_M2 = {'CC': CC,'KK': KK,'HH': HH} filename = "Res1212.bin" with open(filename, 'wb') as file: pickle.dump(data_M2, file) ``` ## Тестирование Вывод с тестовыми значениями 1 (Т1=34, Т2=78, М= 10) ```py Введите первую границу: 34 Введите вторую границу: 78 Введите количество значений в списке СС: 10 Список СС: [73, 54, 66, 42, 46, 48, 58, 72, 52, 75] Список НН: [73, 54, 66, 42, 46, 48, 58, 72, 52, 75] ``` Фрагмент файла с бит(Res1212.bin) ```py Ђ• ]”(K.K&K4KMK6K?KEK3KGK0e]”(K9KNK8K2KDK;KKK3KKKNK;K+K6KJK%K/KGKHK*K=KAKBKIK"K:K(K4KLK$K(KMK0K6K#KKKHK5K?K0K+K7K&K/KEK3K1KDK?K;KCK,K?K3K/K3K