Alex 4 дней назад
Родитель c0ff7dc282
Сommit 1cede94bc2

@ -0,0 +1,129 @@
# Идивидуальное контрольное задание по ТЕМЕ №9
Криштул Александр, А-03-23
## Задание
1) Создайте модуль М1, содержащий две функции:
- функция 1: аргументы - списки А и В с необязательно равными числами элементов; в функции по спискам вычисляются и возвращается список SPS со средними значениями МА, МВ, оценками дисперсий DА,DВ, а также с наибольшим и наименьшим значениями по совокупности данных из обоих списков;
- функция 2 : аргументы - числовое значение х и списки А и В; в функции по спискам находится элемент z, для которого значение |z-x| будет наименьшим, и возвращается символьное значение А, если этот элемент будет найден в списке А, или В, если он найдется в В.
2) Создайте еще один модуль М2, в котором должны выполняться операции:
- запрашивается и вводится имя бинарного файла, проверяется его наличие, и если он существует, то из него считываются два списка: А и В;
- с применением функции 1 рассчитываются и отображаются параметры данных;
- у пользователя запрашивается значение х; с применением функции 2 определяется символ, указывающий имя списка с наиболее "близким" значением и отображается на экране; эта операция повторяется до тех пор, пока пользователь в ответ на запрос не введет пустое значение.
3) Создайте модуль М0 - главную программу, которая вызывает М2 и записывает список SPS, полученный в функции 1 в текстовый файл Res000.txt.
4) Для проверки программы запишите в бинарный файл с некоторым именем два списка:
А: -440, -131, -456, 1419, -167, -322, -416, 1695, 421, 3209, 2665
В: 3359, 2051, 1496, 526, 2647, 4951, 10663, 7699, 5993
и введите контрольные значения х=-100 и х= 3500.
## Решение
```py
# M1
import statistics
import math
def func1(A, B):
combined = A + B
MA = statistics.mean(A)
MB = statistics.mean(B)
DA = statistics.variance(A)
DB = statistics.variance(B)
max_val = max(combined)
min_val = min(combined)
SPS = [MA, MB, DA, DB, max_val, min_val]
return SPS
def func2(x, A, B):
elements = [(val, 'A') for val in A] + [(val, 'B') for val in B]
closest_element = min(elements, key=lambda item: abs(item[0] - x))
return closest_element[1]
```
```py
# M2
import os
import pickle
from M1 import func1, func2
def run_module2():
filename = input("Введите имя бинарного файла: ")
with open(filename, 'rb') as f:
data = pickle.load(f)
A = data.get('A', [])
B = data.get('B', [])
SPS = func1(A, B)
print("\n" + "="*50)
print("Статистические параметры:")
print(f"Среднее значение списка A (MA): {SPS[0]}")
print(f"Среднее значение списка B (MB): {SPS[1]}")
print(f"Дисперсия списка A (DA): {SPS[2]}")
print(f"Дисперсия списка B (DB): {SPS[3]}")
print(f"Наибольшее значение (max): {SPS[4]}")
print(f"Наименьшее значение (min): {SPS[5]}")
print("="*50)
while True:
x_input = input("Введите значение x: ").strip()
x = float(x_input)
result = func2(x, A, B)
if result:
print(f"Наиболее близкое значение находится в списке: {result}")
return SPS, A, B
else:
break
```
```py
# M0
from M2 import run_module2
def main():
SPS, A, B = run_module2()
if SPS:
with open("Res000.txt", "w") as f:
f.write(f"MA (среднее A) = {SPS[0]}\n")
f.write(f"MB (среднее B) = {SPS[1]}\n")
f.write(f"DA (дисперсия A) = {SPS[2]}\n")
f.write(f"DB (дисперсия B) = {SPS[3]}\n")
f.write(f"Максимальное значение = {SPS[4]}\n")
f.write(f"Минимальное значение = {SPS[5]}\n")
else:
print("Нет данных для записи в файл")
main()
```
<image src = "Photo2.png">
Загрузка…
Отмена
Сохранить