# Тест по модулю 3 Мамакин Ярослав, А-02-23 ## Задание M3_27 1) Создайте модуль М1, содержащий 2 функции: - функция 1: аргумент - список или кортеж с выборкой; определение по списку или кортежу номеров элементов с наименьшим и наибольшим значениями; - функция 2: аргументы - список или кортеж с выборкой и целочисленный параметр N; функция должна разделить выборку на непересекающиеся группы, содержащие по заданному числу N элементов с последовательными индексами (в последней группе число элементов может быть меньше N), и расчет по группам среднего значения их элементов; значения средних возвращаются в вызывающую программу в виде списка; 2) Создайте еще один модуль М2, в котором должны выполняться следующие операции: - запрашивается имя бинарного файла с выборкой, проверяется его наличие и при отсутствии - повторяется запрос; - выборка вводится из файла; - с помощью функции 1 производится определение номеров наименьшего и наибольшего элементов; - отображается число элементов в считанной последовательности и запрашивается у пользователя число элементов N для формирования групп; - с помощью функции 2 рассчитывается список со средними значениями по группам ; - на графике отображается исходная выборка. 3) Создайте модуль М0 - главную программу, которая вызывает М2 и отображает результаты расчета на экране. 4) Проведите расчеты при 2-х разных исходных файлах. ## Решение ```py def min_max(vibork): minim = 0 maxim = 0 for i in vibork: if i == min(vibork): minim = i if i == max(vibork): maxim = i return (minim, maxim) def avg_bins(vibork, N): sum = 0 avg = 0 outp = [] for i in range(len(vibork)): if i % N == 0: if i != 0: avg = sum / N outp.append(avg) sum = 0 sum += vibork[i] outp.append(sum / ((i % N) + 1)) return outp ``` ```py import os os.chdir(r'C:\Users\uprkt\Desktop\ПО\python-labs\TEMA9') while True: filename = os.path.abspath(input(f"Введите имя файла: ")) if os.path.isfile(filename): break import pickle fp=open(filename, 'rb') vib=pickle.load(fp) fp.close() import M1 min_and_max = M1.min_max(vib) print(f'Число элементов: {len(vib)}') N = int(input('Введите число N')) spis = M1.avg_bins(vib, N) import pylab pylab.plot(vib) pylab.show() ``` ```py import M2 print(f'Минимальное и максимальное значения: {M2.min_and_max}') print(f'Список средних: {spis}') ``` ```py import M0 Введите имя файла: binar1.bin Число элементов: 9 Введите число N3 Минимальное и максимальное значения: (1, 9) Список средних: [2.0, 5.0, 8.0] import M0 Введите имя файла: binar2.bin Число элементов: 16 Введите число N4 Минимальное и максимальное значения: (2, 56) Список средних: [4.5, 11.75, 19.0, 4.25] ``` ![12](t1.png) ![23](t2.png)