diff --git a/TEMA9/M0.py b/TEMA9/M0.py new file mode 100644 index 0000000..1a7fa96 --- /dev/null +++ b/TEMA9/M0.py @@ -0,0 +1,5 @@ +import M2 + +print(f'Минимальное и максимальное значения: {M2.min_and_max}') +print(f'Список средних: {M2.spis}') + diff --git a/TEMA9/M1.py b/TEMA9/M1.py new file mode 100644 index 0000000..8eeea4c --- /dev/null +++ b/TEMA9/M1.py @@ -0,0 +1,23 @@ +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 diff --git a/TEMA9/M2.py b/TEMA9/M2.py new file mode 100644 index 0000000..eaa825a --- /dev/null +++ b/TEMA9/M2.py @@ -0,0 +1,25 @@ +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() diff --git a/TEMA9/binar1.bin b/TEMA9/binar1.bin new file mode 100644 index 0000000..9987ab8 Binary files /dev/null and b/TEMA9/binar1.bin differ diff --git a/TEMA9/binar2.bin b/TEMA9/binar2.bin new file mode 100644 index 0000000..916b28f Binary files /dev/null and b/TEMA9/binar2.bin differ diff --git a/TEMA9/t1.png b/TEMA9/t1.png new file mode 100644 index 0000000..b7b5a31 Binary files /dev/null and b/TEMA9/t1.png differ diff --git a/TEMA9/t2.png b/TEMA9/t2.png new file mode 100644 index 0000000..d5f5685 Binary files /dev/null and b/TEMA9/t2.png differ diff --git a/TEMA9/test.md b/TEMA9/test.md new file mode 100644 index 0000000..f636b8b --- /dev/null +++ b/TEMA9/test.md @@ -0,0 +1,127 @@ +# Тест по модулю 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) + + + + + + + + + + + + +