From 5d981615c05434c34f5241c4769b9162597681d7 Mon Sep 17 00:00:00 2001 From: BerezhkovDA Date: Fri, 19 Dec 2025 08:03:21 +0000 Subject: [PATCH] =?UTF-8?q?=D0=98=D0=B7=D0=BC=D0=B5=D0=BD=D0=B8=D0=BB(?= =?UTF-8?q?=D0=B0)=20=D0=BD=D0=B0=20'TEMA9/test1.md'?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- TEMA9/test1.md | 242 +++++++++++++++++++++++++------------------------ 1 file changed, 125 insertions(+), 117 deletions(-) diff --git a/TEMA9/test1.md b/TEMA9/test1.md index 44032e5..cd24205 100644 --- a/TEMA9/test1.md +++ b/TEMA9/test1.md @@ -1,117 +1,125 @@ -# # Тест по модулю 3, тема 9 (вариант 7) - -Бережков Дмитрий А-01-23 -## Задание: -M3_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. - -## Решение: -```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 - -def func2(CC, KK): - """ - Создание списка НН (с числом элементов, равным длине СС) с целыми значениями из КК, - близкими к соответствующим элементам в СС - """ - HH = [] - for i in CC: - cl = min(KK, key= lambda x: abs(x - i)) - HH.append(cl) - return HH -``` -```py -import M1 -import random -def main(): - while True: - try: - T1 = int(input("Введите первую границу: ")) - T2 = int(input("Введите вторую границу: ")) - if T1 < T2: - break - else: - print("Ошибка. Первая граница должна быть меньше второй границы.") - except ValueError: - print("Ошибка: введите целое число.") - while True: - try: - M = int(input("Введите количество значений в списке СС: ")) - break - except ValueError: - print("Ошибка: введите целое число.") - if M > (T2 - T1): - M = T2 - T1 - 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 -``` -```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) -``` -## Тестированние: -```py -Введите первую границу: 34 -Введите вторую границу: 78 -Введите количество значений в списке СС: 10 -Список СС: [56, 50, 77, 36, 37, 53, 41, 75, 76, 70] -Список НН: [56, 50, 77, 36, 37, 53, 41, 75, 76, 70] -``` -```py -Ђ•0 }”(ЊCC”]”(K?K.K=K$K$K/KIK/KFKCKKK/KHKFK2K@KJK8KJK3K,K;KGK)K3K"KHK%K8K>KDKNK4K"K(K$KKKMK+K&KMKNKBK=K'K2K'K4KIKNKK0K5K"K,K0K@K6KDKBK(KCK(KIKLKLK5KIK;K6K)K(KMK"KLK:K:KCK-KLK)K9K7KJK/K@K9KHK%K,K(KIKNKK#K+K)K=K)KJK(K"K,KFK4K+KNK%KMKBKIK&K*K9K-K4K*K(K%K-K6K8K/K&KJK4K,K?KEK1K7K"K:K-K5K(K@K>K9K5K'K'K%K"K"K1KGK>K(KIK-K=KMKDKBK(KNKFKJK)K;K8KKKGK+K.KIKEK5K8K3K:K'K$K?KEKJK0K5K#KLKFK#KLK3K7K+K2K&KLK>K+K2KBK0K:K)K$K9KFK3KNKKNK@KJKMK5KDK;KIK:KK,K1K?KKK+KAK;K,K4KHKBKAK1K=KEK@K)KNK*K*K"KJK=K@KBK1KHK@K"KAK4K$K#K7K8KKK6K@KKK:KBK.KIK#K*K&K5K,K)K?KHK)K)K=K7KBK1KKK%K.KKK4K7K-K6K2K-KKKLK6KIK;K&K(KNK2KGK1K)K1K,KJKMKIK6KMK+K/K8KLK8KAKKKEK&K,K$K=KLK?K.K#K-K@K/K:K&K#K"K0K@KKKGK-KMK4KIK7K;KEK"K"K3K*KBK#KGK@KHK0K(KIKFK5K;KBK>K4K6K5K'K'K=K7K.K,K=K)KFK-KHKDKFKCK)K)KLKEK&K6KJK'K%K?K3K@K(K'eЊKK”]”(K8K2KMK$K%K5K)KKKLKFeЊHH”]”(K8K2KMK$K%K5K)KKKLKFeu. -``` -```py -Введите первую границу: 25 -Введите вторую границу: 30 -Введите количество значений в списке СС: 8 -Список СС: [28, 25, 27, 26, 29] -Список НН: [28, 25, 27, 26, 29] -``` -```py -Ђ• }”(ЊCC”]”(KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKeЊKK”]”(KKKKKeЊHH”]”(KKKKKeu. -``` +# # Тест по модулю 3, тема 9 (вариант 7) + +Бережков Дмитрий А-01-23 +## Задание: +M3_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. + +## Решение: +```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 + +def func2(CC, KK): + """ + Создание списка НН (с числом элементов, равным длине СС) с целыми значениями из КК, + близкими к соответствующим элементам в СС + """ + HH = [] + for i in CC: + cl = min(KK, key= lambda x: abs(x - i)) + HH.append(cl) + return HH +``` +```py +import M1 +import random +def main(): + while True: + try: + T1 = int(input("Введите первую границу: ")) + T2 = int(input("Введите вторую границу: ")) + if T1 < T2: + break + else: + print("Ошибка. Первая граница должна быть меньше второй границы.") + except ValueError: + print("Ошибка: введите целое число.") + while True: + try: + M = int(input("Введите количество значений в списке СС: ")) + break + except ValueError: + print("Ошибка: введите целое число.") + if M > (T2 - T1): + M = T2 - T1 + 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 +``` +```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 +Список СС: [56, 50, 77, 36, 37, 53, 41, 75, 76, 70] +Список НН: [56, 50, 77, 36, 37, 53, 41, 75, 76, 70] +``` +Бинарный файл: +```py +Ђ•0 }”(ЊCC”]”(K?K.K=K$K$K/KIK/KFKCKKK/KHKFK2K@KJK8KJK3K,K;KGK)K3K"KHK%K8K>KDKNK4K"K(K$KKKMK+K&KMKNKBK=K'K2K'K4KIKNKK0K5K"K,K0K@K6KDKBK(KCK(KIKLKLK5KIK;K6K)K(KMK"KLK:K:KCK-KLK)K9K7KJK/K@K9KHK%K,K(KIKNKK#K+K)K=K)KJK(K"K,KFK4K+KNK%KMKBKIK&K*K9K-K4K*K(K%K-K6K8K/K&KJK4K,K?KEK1K7K"K:K-K5K(K@K>K9K5K'K'K%K"K"K1KGK>K(KIK-K=KMKDKBK(KNKFKJK)K;K8KKKGK+K.KIKEK5K8K3K:K'K$K?KEKJK0K5K#KLKFK#KLK3K7K+K2K&KLK>K+K2KBK0K:K)K$K9KFK3KNKKNK@KJKMK5KDK;KIK:KK,K1K?KKK+KAK;K,K4KHKBKAK1K=KEK@K)KNK*K*K"KJK=K@KBK1KHK@K"KAK4K$K#K7K8KKK6K@KKK:KBK.KIK#K*K&K5K,K)K?KHK)K)K=K7KBK1KKK%K.KKK4K7K-K6K2K-KKKLK6KIK;K&K(KNK2KGK1K)K1K,KJKMKIK6KMK+K/K8KLK8KAKKKEK&K,K$K=KLK?K.K#K-K@K/K:K&K#K"K0K@KKKGK-KMK4KIK7K;KEK"K"K3K*KBK#KGK@KHK0K(KIKFK5K;KBK>K4K6K5K'K'K=K7K.K,K=K)KFK-KHKDKFKCK)K)KLKEK&K6KJK'K%K?K3K@K(K'eЊKK”]”(K8K2KMK$K%K5K)KKKLKFeЊHH”]”(K8K2KMK$K%K5K)KKKLKFeu. +``` + +Вывод с тестовыми значениями 1 (Т1=25, Т2=30, М= 8) + +```py +Введите первую границу: 25 +Введите вторую границу: 30 +Введите количество значений в списке СС: 8 +Список СС: [28, 25, 27, 26, 29] +Список НН: [28, 25, 27, 26, 29] +``` +Бинарный файл: +```py +Ђ• }”(ЊCC”]”(KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKeЊKK”]”(KKKKKeЊHH”]”(KKKKKeu. +```