форкнуто от main/python-labs
Вы не можете выбрать более 25 тем
Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.
111 строки
6.8 KiB
Markdown
111 строки
6.8 KiB
Markdown
# Индивидуальное контрольное задание по ТЕМЕ 9
|
|
|
|
Беженарь Алёна, А-02-23, Вариант 4
|
|
|
|
## Задание
|
|
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.
|
|
|
|
## Решение
|
|
1) M1:
|
|
```py
|
|
import statistics
|
|
|
|
def func_1(A,B):
|
|
# средние значения по спискам
|
|
MA = statistics.mean(A)
|
|
MB = statistics.mean(B)
|
|
# дисперсии значений по спискам
|
|
DA=statistics.variance(A)
|
|
DB=statistics.variance(B)
|
|
#минимум и максимум среди всех данных в обоих списках
|
|
combined_spis = A + B
|
|
min_all = min (combined_spis)
|
|
max_all = max (combined_spis)
|
|
return [MA, MB, DA, DB, min_all, max_all]
|
|
|
|
def func_2(x,A,B):
|
|
abs_spis_A = list (map (lambda value: abs(value-x),A)) #список модулей разности |value-x| для каждого элемента списка A
|
|
abs_spis_B = list (map (lambda value: abs(value-x),B)) #список модулей разности |value-x| для каждого элемента списка B
|
|
if min(abs_spis_A) >= min(abs_spis_B):
|
|
return "B" # возращаем B, если минимальным оказался элемент в списке B
|
|
else:
|
|
return "A" # возращаем A, если минимальным оказался элемент в списке A
|
|
```
|
|
2)M2:
|
|
```py
|
|
import pickle, os
|
|
from M1 import func_1, func_2
|
|
|
|
while True: #запрашивается и вводится имя бинарного файла, проверяется его наличие
|
|
file_name=input("Введите имя бинарного файла (например test.bin)")
|
|
if os.path.exists(file_name): break
|
|
print("Файл не найден, введите имя бинарного файла заново")
|
|
with open(file_name,"rb") as f: #если он существует, то из него считываются два списка: А и В
|
|
A = pickle.load(f)
|
|
B = pickle.load(f)
|
|
|
|
print("Параметры данных:")
|
|
print(func_1(A,B)) #рассчитываются и отображаются параметры данных
|
|
while True:
|
|
x = input("Введите число x:") #у пользователя запрашивается значение х
|
|
if x=='': break #до тех пор, пока пользователь в ответ на запрос не введет пустое значение
|
|
print("Ближайшее значение к х находится в списке:", func_2(int(x),A,B))
|
|
print("Чтобы прекратить воспроизведение данной операции введите пустое значение")
|
|
```
|
|
3)M0:
|
|
```py
|
|
from M2 import *
|
|
SPS=func_1(A,B)
|
|
with open("Res000.txt","w") as f:
|
|
f.write(", ".join(str(val) for val in SPS))
|
|
```
|
|
4)Создание проверочного бинарного файла test.bin
|
|
```py
|
|
>>> import pickle
|
|
>>> A=[-440, -131, -456, 1419, -167, -322, -416, 1695, 421, 3209, 2665]
|
|
>>> B=[3359, 2051, 1496, 526, 2647, 4951, 10663, 7699, 5993]
|
|
>>> with open("test.bin","wb") as f:
|
|
pickle.dump(a,f)
|
|
pickle.dump(b,f)
|
|
```
|
|
Работа программы:
|
|
```py
|
|
>>> import M0
|
|
Введите имя бинарного файла (например test.bin)test.bin
|
|
Параметры данных:
|
|
[679.7272727272727, 4376.111111111111, 1810473.8181818181, 10757533.361111112, -456, 10663]
|
|
Введите число x:-100 #вводим контрольные значения х=-100 и х= 3500.
|
|
Ближайшее значение к х находится в списке: A
|
|
Чтобы прекратить воспроизведение данной операции введите пустое значение
|
|
Введите число x:3500
|
|
Ближайшее значение к х находится в списке: B
|
|
Чтобы прекратить воспроизведение данной операции введите пустое значение
|
|
Введите число x:
|
|
#Ввела пустое значение и произошла запись в текстовый файл Res000.txt
|
|
```
|
|
Вывод в файле Res000.txt:
|
|
```py
|
|
679.7272727272727, 4376.111111111111, 1810473.8181818181, 10757533.361111112, -456, 10663
|
|
``` |