форкнуто от main/python-labs
Родитель
a3bc69180e
Сommit
3d2b48a7ff
@ -1,20 +1,21 @@
|
||||
-92
|
||||
58
|
||||
-42
|
||||
14
|
||||
-76
|
||||
10
|
||||
-80
|
||||
34
|
||||
94
|
||||
-30
|
||||
6
|
||||
-46
|
||||
-70
|
||||
-48
|
||||
-66
|
||||
44
|
||||
52
|
||||
20
|
||||
12
|
||||
-22
|
||||
32
|
||||
46
|
||||
-18
|
||||
16
|
||||
100
|
||||
-32
|
||||
-42
|
||||
-80
|
||||
66
|
||||
68
|
||||
66
|
||||
44
|
||||
92
|
||||
84
|
||||
78
|
||||
76
|
||||
58
|
||||
-86
|
||||
40
|
||||
|
||||
@ -1,20 +1,19 @@
|
||||
57
|
||||
-41
|
||||
17
|
||||
73
|
||||
-65
|
||||
49
|
||||
11
|
||||
-91
|
||||
-41
|
||||
31
|
||||
71
|
||||
13
|
||||
83
|
||||
-5
|
||||
51
|
||||
65
|
||||
29
|
||||
-41
|
||||
-7
|
||||
-83
|
||||
-27
|
||||
-69
|
||||
-67
|
||||
-1
|
||||
25
|
||||
-51
|
||||
-75
|
||||
-55
|
||||
93
|
||||
-79
|
||||
85
|
||||
51
|
||||
-89
|
||||
9
|
||||
-53
|
||||
71
|
||||
71
|
||||
-91
|
||||
|
||||
@ -0,0 +1,10 @@
|
||||
import M2
|
||||
|
||||
sps = M2.main()
|
||||
|
||||
if sps:
|
||||
f = open('Res000.txt', 'w')
|
||||
for v in sps:
|
||||
f.write(str(v) + '\n')
|
||||
f.close()
|
||||
print('\nРезультаты записаны в Res000.txt')
|
||||
@ -0,0 +1,22 @@
|
||||
def func1(a, b):
|
||||
ma = sum(a) / len(a)
|
||||
mb = sum(b) / len(b)
|
||||
|
||||
da = sum((x - ma) ** 2 for x in a) / (len(a) - 1)
|
||||
db = sum((x - mb) ** 2 for x in b) / (len(b) - 1)
|
||||
|
||||
ab = a + b
|
||||
maxv = max(ab)
|
||||
minv = min(ab)
|
||||
|
||||
sps = [ma, mb, da, db, maxv, minv]
|
||||
return sps
|
||||
|
||||
def func2(x, a, b):
|
||||
mina = min(abs(z - x) for z in a)
|
||||
minb = min(abs(z - x) for z in b)
|
||||
|
||||
if mina < minb:
|
||||
return 'A'
|
||||
else:
|
||||
return 'B'
|
||||
@ -0,0 +1,38 @@
|
||||
import pickle
|
||||
import os
|
||||
from M1 import func1, func2
|
||||
|
||||
def main():
|
||||
fname = input('Имя бинарного файла: ')
|
||||
|
||||
if not os.path.exists(fname):
|
||||
print('Файл не существует')
|
||||
return None
|
||||
|
||||
f = open(fname, 'rb')
|
||||
a = pickle.load(f)
|
||||
b = pickle.load(f)
|
||||
f.close()
|
||||
|
||||
print('\nСписок A:', a)
|
||||
print('Список B:', b)
|
||||
|
||||
sps = func1(a, b)
|
||||
|
||||
print('\nПараметры данных:')
|
||||
print('Среднее A:', sps[0])
|
||||
print('Среднее B:', sps[1])
|
||||
print('Дисперсия A:', sps[2])
|
||||
print('Дисперсия B:', sps[3])
|
||||
print('Максимум:', sps[4])
|
||||
print('Минимум:', sps[5])
|
||||
|
||||
while True:
|
||||
xstr = input('\nВведите x (Enter для выхода): ')
|
||||
if xstr == '':
|
||||
break
|
||||
x = float(xstr)
|
||||
rez = func2(x, a, b)
|
||||
print('Список с наиболее близким значением:', rez)
|
||||
|
||||
return sps
|
||||
Двоичный файл не отображается.
@ -0,0 +1,129 @@
|
||||
# Индивидуальное задание по модулю 3
|
||||
|
||||
|
||||
|
||||
Грудинин Егор, А-03-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.
|
||||
|
||||
## Решение
|
||||
Запись данных в бинарный файл
|
||||
```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]
|
||||
|
||||
f = open('data.bin', 'wb')
|
||||
pickle.dump(a, f)
|
||||
pickle.dump(b, f)
|
||||
f.close()
|
||||
|
||||
print('Данные записаны в data.bin')
|
||||
```
|
||||
M1
|
||||
```py
|
||||
def func1(a, b):
|
||||
ma = sum(a) / len(a)
|
||||
mb = sum(b) / len(b)
|
||||
|
||||
da = sum((x - ma) ** 2 for x in a) / (len(a) - 1)
|
||||
db = sum((x - mb) ** 2 for x in b) / (len(b) - 1)
|
||||
|
||||
ab = a + b
|
||||
maxv = max(ab)
|
||||
minv = min(ab)
|
||||
|
||||
sps = [ma, mb, da, db, maxv, minv]
|
||||
return sps
|
||||
|
||||
def func2(x, a, b):
|
||||
mina = min(abs(z - x) for z in a)
|
||||
minb = min(abs(z - x) for z in b)
|
||||
|
||||
if mina < minb:
|
||||
return 'A'
|
||||
else:
|
||||
return 'B'
|
||||
```
|
||||
M2
|
||||
```py
|
||||
import pickle
|
||||
import os
|
||||
from M1 import func1, func2
|
||||
|
||||
def main():
|
||||
fname = input('Имя бинарного файла: ')
|
||||
|
||||
if not os.path.exists(fname):
|
||||
print('Файл не существует')
|
||||
return None
|
||||
|
||||
f = open(fname, 'rb')
|
||||
a = pickle.load(f)
|
||||
b = pickle.load(f)
|
||||
f.close()
|
||||
|
||||
print('\nСписок A:', a)
|
||||
print('Список B:', b)
|
||||
|
||||
sps = func1(a, b)
|
||||
|
||||
print('\nПараметры данных:')
|
||||
print('Среднее A:', sps[0])
|
||||
print('Среднее B:', sps[1])
|
||||
print('Дисперсия A:', sps[2])
|
||||
print('Дисперсия B:', sps[3])
|
||||
print('Максимум:', sps[4])
|
||||
print('Минимум:', sps[5])
|
||||
|
||||
while True:
|
||||
xstr = input('\nВведите x (Enter для выхода): ')
|
||||
if xstr == '':
|
||||
break
|
||||
x = float(xstr)
|
||||
rez = func2(x, a, b)
|
||||
print('Список с наиболее близким значением:', rez)
|
||||
|
||||
return sps
|
||||
```
|
||||
M0
|
||||
```py
|
||||
import M2
|
||||
|
||||
sps = M2.main()
|
||||
|
||||
if sps:
|
||||
f = open('Res000.txt', 'w')
|
||||
for v in sps:
|
||||
f.write(str(v) + '\n')
|
||||
f.close()
|
||||
print('\nРезультаты записаны в Res000.txt')
|
||||
```
|
||||
Загрузка…
Ссылка в новой задаче