# Туровец Евгений В18 ### M3_18 1) Создайте модуль М1, содержащий две функции: - функция 1: аргументы - два списка или кортежа - А и В; функция должна вычислить и вернуть список с 3 элементами: средние значения по каждому списку и значение Р, равное полусумме этих средних; - функция 2: аргументы - список или кортеж С и числовое значение порога М; в функции должны быть подсчитаны и возвращены число элементов в С, значения которых превышают значение М, и число элементов, значения которых не превышают М. 2) Создайте еще один модуль М2, в котором должны выполняться операции: - запрашивается и вводится имя бинарного файла, проверяется его наличие, и если он существует, то из него считываются два объекта-списка или кортежа: А и В; - с применением функции 1 рассчитываются и отображаются средние значения и пороговое значение Р; - функция 2 поочередно применяется к объектам А и В с порогом Р, рассчитанным в функции 1; отображаются результаты расчета; - объекты А и В отображаются на одном графике с разметкой осей 3) Создайте модуль М0 - главную программу, которая вызывает М2 и записывает список, полученный в функции 1 в текстовый файл Res1234.txt. 4) Для проверки программы запишите в бинарный файл с некоторым именем два списка: А: -440, -131, -456, 1419, -167, -322, -416, 1695, 421, 3209, 2665 В: 3359, 2051, 1496, 526, 2647, 4951, 10663, 7699, 5993 Проведите расчеты с этими данными. mo: ```py from m2 import obrabotka as ob def main(): """Основная функция программы""" print("=== ОБРАБОТКА ДВУХ СПИСКОВ ===") results = ob() if results is not None: try: with open('Res1234.txt', 'w', encoding='utf-8') as file: file.write("Результаты расчета:\n") file.write(f"Среднее значение A: {results[0]:.2f}\n") file.write(f"Среднее значение B: {results[1]:.2f}\n") file.write(f"Пороговое значение P: {results[2]:.2f}\n") file.write(f"Список результатов: {results}\n") print("\nРезультаты успешно записаны в файл 'Res1234.txt'") except Exception as e: print(f"Ошибка при записи в файл: {e}") else: print("Программа завершена с ошибкой.") if __name__ == "__main__": main() ``` m1: ```py def sred(A, B): avg_A = sum(A) / len(A) if len(A) > 0 else 0 avg_B = sum(B) / len(B) if len(B) > 0 else 0 P = (avg_A + avg_B) / 2 return [avg_A, avg_B, P] def colvo(C, M): up = 0 down = 0 for element in C: if element > M: up += 1 else: down += 1 return up, down ``` m2: ```py import pickle import os from m1 import sred, colvo def obrabotka(): filename = input("Имя файла: ") if not os.path.exists(filename): print("Файл не найден!") return with open(filename, 'rb') as f: data = pickle.load(f) A, B = data[0], data[1] print(f"A: {A}") print(f"B: {B}") avg_A, avg_B, P = sred(A, B) print(f"\nСреднее A: {avg_A:.2f}") print(f"Среднее B: {avg_B:.2f}") print(f"Порог P: {P:.2f}") up_A, down_A = colvo(A, P) up_B, down_B = colvo(B, P) print(f"\nA: выше {up_A}, ниже {down_A}") print(f"B: выше {up_B}, ниже {down_B}") return [avg_A, avg_B, P] ``` Скрипт для создания начальных данных: ```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] filename = input("Введите имя файла для сохранения тестовых данных (например: test_data.bin): ") try: with open(filename, 'wb') as file: pickle.dump([A, B], file) print(f"Тестовые данные успешно сохранены в файл '{filename}'") print(f"Список A: {A}") print(f"Список B: {B}") except Exception as e: print(f"Ошибка при сохранении файла: {e}") ``` """" Вывод: ``` Введите имя файла для сохранения тестовых данных: test1 Тестовые данные успешно сохранены в файл 'test1' Список A: [-440, -131, -456, 1419, -167, -322, -416, 1695, 421, 3209, 2665] Список B: [3359, 2051, 1496, 526, 2647, 4951, 10663, 7699, 5993] Имя файла: test1 A: [-440, -131, -456, 1419, -167, -322, -416, 1695, 421, 3209, 2665] B: [3359, 2051, 1496, 526, 2647, 4951, 10663, 7699, 5993] Среднее A: 679.73 Среднее B: 4376.11 Порог P: 2527.92 A: выше 2, ниже 9 B: выше 6, ниже 3 Результаты успешно записаны в файл 'Res1234.txt' ```