4.1 KiB
Тест по модулю 3
Мамакин Ярослав, А-02-23
Задание
M3_27
- Создайте модуль М1, содержащий 2 функции:
-
функция 1: аргумент - список или кортеж с выборкой; определение по списку или кортежу номеров элементов с наименьшим и наибольшим значениями;
-
функция 2: аргументы - список или кортеж с выборкой и целочисленный параметр N; функция должна разделить выборку на непересекающиеся группы, содержащие по заданному числу N элементов с последовательными индексами (в последней группе число элементов может быть меньше N), и расчет по группам среднего значения их элементов; значения средних возвращаются в вызывающую программу в виде списка;
- Создайте еще один модуль М2, в котором должны выполняться следующие операции:
-
запрашивается имя бинарного файла с выборкой, проверяется его наличие и при отсутствии - повторяется запрос;
-
выборка вводится из файла;
-
с помощью функции 1 производится определение номеров наименьшего и наибольшего элементов;
-
отображается число элементов в считанной последовательности и запрашивается у пользователя число элементов N для формирования групп;
-
с помощью функции 2 рассчитывается список со средними значениями по группам ;
-
на графике отображается исходная выборка.
-
Создайте модуль М0 - главную программу, которая вызывает М2 и отображает результаты расчета на экране.
-
Проведите расчеты при 2-х разных исходных файлах.
Решение
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
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()
import M2
print(f'Минимальное и максимальное значения: {M2.min_and_max}')
print(f'Список средних: {spis}')
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]

