форкнуто от main/python-labs
Родитель
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">
|
||||
Загрузка…
Ссылка в новой задаче