# Идивидуальное контрольное задание по ТЕМЕ №9 Криштул Александр, А-03-23 ## Задание 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. ## Решение ```py # M1 import statistics import math def func1(A, B): combined = A + B MA = statistics.mean(A) MB = statistics.mean(B) DA = statistics.variance(A) DB = statistics.variance(B) max_val = max(combined) min_val = min(combined) SPS = [MA, MB, DA, DB, max_val, min_val] return SPS def func2(x, A, B): elements = [(val, 'A') for val in A] + [(val, 'B') for val in B] closest_element = min(elements, key=lambda item: abs(item[0] - x)) return closest_element[1] ``` ```py # M2 import os import pickle from M1 import func1, func2 def run_module2(): filename = input("Введите имя бинарного файла: ") with open(filename, 'rb') as f: data = pickle.load(f) A = data.get('A', []) B = data.get('B', []) SPS = func1(A, B) print("\n" + "="*50) print("Статистические параметры:") print(f"Среднее значение списка A (MA): {SPS[0]}") print(f"Среднее значение списка B (MB): {SPS[1]}") print(f"Дисперсия списка A (DA): {SPS[2]}") print(f"Дисперсия списка B (DB): {SPS[3]}") print(f"Наибольшее значение (max): {SPS[4]}") print(f"Наименьшее значение (min): {SPS[5]}") print("="*50) while True: x_input = input("Введите значение x: ").strip() x = float(x_input) result = func2(x, A, B) if result: print(f"Наиболее близкое значение находится в списке: {result}") return SPS, A, B else: break ``` ```py # M0 from M2 import run_module2 def main(): SPS, A, B = run_module2() if SPS: with open("Res000.txt", "w") as f: f.write(f"MA (среднее A) = {SPS[0]}\n") f.write(f"MB (среднее B) = {SPS[1]}\n") f.write(f"DA (дисперсия A) = {SPS[2]}\n") f.write(f"DB (дисперсия B) = {SPS[3]}\n") f.write(f"Максимальное значение = {SPS[4]}\n") f.write(f"Минимальное значение = {SPS[5]}\n") else: print("Нет данных для записи в файл") main() ```