diff --git a/TEMA9/test.md b/TEMA9/test.md new file mode 100644 index 0000000..8884be8 --- /dev/null +++ b/TEMA9/test.md @@ -0,0 +1,111 @@ +# Индивидуальное контрольное задание по ТЕМЕ 9 + +Беженарь Алёна, А-02-23, Вариант 4 + +## Задание +1) Создайте модуль М1, содержащий две функции: + +- функция 1: аргументы - списки А и В с необязательно равными числами элементов; в функции по спискам вычисляются и возвращается список SPS со средними значениями МА, МВ, оценками дисперсий DА,DВ, а также с наибольшим и наименьшим значениями по совокупности данных из обоих списков; + +- функция 2 : аргументы - числовое значение х и списки А и В; в функции по спискам находится элемент z, для которого значение |z-x| будет наименьшим, и возвращается символьное значение А, если этот элемент будет найден в списке А, или В, если он найдется в В. + +2) Создайте еще один модуль М2, в котором должны выполняться операции: + +- запрашивается и вводится имя бинарного файла, проверяется его наличие, и если он существует, то из него считываются два списка: А и В; + +- с применением функции 1 рассчитываются и отображаются параметры данных; + +- у пользователя запрашивается значение х; с применением функции 2 определяется символ, указывающий имя списка с наиболее "близким" значением и отображается на экране; эта операция повторяется до тех пор, пока пользователь в ответ на запрос не введет пустое значение. + +3) Создайте модуль М0 - главную программу, которая вызывает М2 и записывает список SPS, полученный в функции 1 в текстовый файл Res000.txt. + +4) Для проверки программы запишите в бинарный файл с некоторым именем два списка: + +А: -440, -131, -456, 1419, -167, -322, -416, 1695, 421, 3209, 2665 + +В: 3359, 2051, 1496, 526, 2647, 4951, 10663, 7699, 5993 + +и введите контрольные значения х=-100 и х= 3500. + +## Решение +1) M1: +```py +import statistics + +def func_1(A,B): + # средние значения по спискам + MA = statistics.mean(A) + MB = statistics.mean(B) + # дисперсии значений по спискам + DA=statistics.variance(A) + DB=statistics.variance(B) + #минимум и максимум среди всех данных в обоих списках + combined_spis = A + B + min_all = min (combined_spis) + max_all = max (combined_spis) + return [MA, MB, DA, DB, min_all, max_all] + +def func_2(x,A,B): + abs_spis_A = list (map (lambda value: abs(value-x),A)) #список модулей разности |value-x| для каждого элемента списка A + abs_spis_B = list (map (lambda value: abs(value-x),B)) #список модулей разности |value-x| для каждого элемента списка B + if min(abs_spis_A) >= min(abs_spis_B): + return "B" # возращаем B, если минимальным оказался элемент в списке B + else: + return "A" # возращаем A, если минимальным оказался элемент в списке A +``` +2)M2: +```py +import pickle, os +from M1 import func_1, func_2 + +while True: #запрашивается и вводится имя бинарного файла, проверяется его наличие + file_name=input("Введите имя бинарного файла (например test.bin)") + if os.path.exists(file_name): break + print("Файл не найден, введите имя бинарного файла заново") +with open(file_name,"rb") as f: #если он существует, то из него считываются два списка: А и В + A = pickle.load(f) + B = pickle.load(f) + +print("Параметры данных:") +print(func_1(A,B)) #рассчитываются и отображаются параметры данных +while True: + x = input("Введите число x:") #у пользователя запрашивается значение х + if x=='': break #до тех пор, пока пользователь в ответ на запрос не введет пустое значение + print("Ближайшее значение к х находится в списке:", func_2(int(x),A,B)) + print("Чтобы прекратить воспроизведение данной операции введите пустое значение") +``` +3)M0: +```py +from M2 import * +SPS=func_1(A,B) +with open("Res000.txt","w") as f: + f.write(", ".join(str(val) for val in SPS)) +``` +4)Создание проверочного бинарного файла test.bin +```py +>>> import pickle +>>> A=[-440, -131, -456, 1419, -167, -322, -416, 1695, 421, 3209, 2665] +>>> B=[3359, 2051, 1496, 526, 2647, 4951, 10663, 7699, 5993] +>>> with open("test.bin","wb") as f: + pickle.dump(a,f) + pickle.dump(b,f) +``` +Работа программы: +```py +>>> import M0 + Введите имя бинарного файла (например test.bin)test.bin + Параметры данных: + [679.7272727272727, 4376.111111111111, 1810473.8181818181, 10757533.361111112, -456, 10663] + Введите число x:-100 #вводим контрольные значения х=-100 и х= 3500. + Ближайшее значение к х находится в списке: A + Чтобы прекратить воспроизведение данной операции введите пустое значение + Введите число x:3500 + Ближайшее значение к х находится в списке: B + Чтобы прекратить воспроизведение данной операции введите пустое значение + Введите число x: + #Ввела пустое значение и произошла запись в текстовый файл Res000.txt +``` +Вывод в файле Res000.txt: +```py +679.7272727272727, 4376.111111111111, 1810473.8181818181, 10757533.361111112, -456, 10663 +``` \ No newline at end of file