форкнуто от main/python-labs
Вы не можете выбрать более 25 тем
Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.
128 строки
4.1 KiB
Markdown
128 строки
4.1 KiB
Markdown
# Тест по модулю 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]
|
|
```
|
|
|
|

|
|

|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|