форкнуто от main/python-labs
Вы не можете выбрать более 25 тем
Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.
86 строки
5.3 KiB
Markdown
86 строки
5.3 KiB
Markdown
# Индивидуальное контрольное задание по теме 6
|
|
|
|
Коломейцев Дмитрий, А-02-23
|
|
|
|
## Задание
|
|
|
|
M2_11
|
|
|
|
1) Запросите у пользователя и введите имя функции из библиотеки math для обработки данных.
|
|
|
|
2) Создайте кортеж с 20 случайными равномерно распределенными числами из диапазона значений от 11 до 40.
|
|
|
|
3) Напишите инструкцию создания списка, содержащего значения, равные результату вычисления заданной пользователем функции от соответствующих элементов кортежа.
|
|
|
|
4) Выведите кортеж и результирующий список в бинарный файл с любым именем.
|
|
|
|
5) Рассчитайте среднее значение разностей элементов списка, находящихся на соседних четных и нечетных позициях. Отобразите результат на экране.
|
|
|
|
## Решение
|
|
|
|
|
|
```py
|
|
|
|
>>> import os
|
|
>>> import random
|
|
>>> import pickle
|
|
>>> import math
|
|
|
|
>>> # 1) Запросите у пользователя и введите имя функции из библиотеки math для обработки данных.
|
|
|
|
>>>
|
|
>>> func_name = input("Введите имя функции из библиотеки math (например sqrt, sin, cos): ")
|
|
Введите имя функции из библиотеки math (например sqrt, sin, cos): sin
|
|
>>> func_name
|
|
'sin'
|
|
>>> if not hasattr(math, func_name):
|
|
... print(f"Функция '{func_name}' не найдена в библиотеке math")
|
|
... exit()
|
|
...
|
|
...
|
|
>>> func = getattr(math, func_name)
|
|
>>> func
|
|
<built-in function sin>
|
|
|
|
# 2) Создайте кортеж с 20 случайными равномерно распределенными числами из диапазона значений от 11 до 40.
|
|
|
|
kort = tuple(random.uniform(11, 40) for _ in range(20))
|
|
|
|
kort
|
|
(16.808827380882583, 13.328126034808443, 18.508365438743773, 38.400181739145395, 30.74396638844783, 37.02011460254017, 18.87968576156089, 22.394000025760057, 23.062018003376906, 11.323633616339949, 36.2506853914364, 19.48084169593707, 31.425343980568798, 35.03973794703552, 36.48310456868603, 23.14357758721929, 30.09328844881235, 27.45402353941273, 19.232678017829635, 20.59891162619639)
|
|
|
|
# 3) Напишите инструкцию создания списка, содержащего значения, равные результату вычисления заданной пользователем функции от соответствующих элементов кортежа.
|
|
|
|
result_list = [func(x) for x in kort]
|
|
result_list
|
|
[-0.8915989855595101, 0.6901927749569217, -0.33460918876777096, 0.6450356200195559, -0.6225211991234381, -0.6280129896135037, 0.030125281547794338, -0.3920431155680488, -0.877617606249215, -0.9466694226202514, -0.9925221451754105, 0.590183211747677, 0.009417305468679018, -0.4637460639640912, -0.9377197913088371, -0.9137534675198252, -0.9693664369267251, 0.7313575170189571, 0.3738180373474736, 0.9841005857350538]
|
|
|
|
# 4) Выведите кортеж и результирующий список в бинарный файл с любым именем.
|
|
|
|
with open('/home/s0ba4/mpei/python-labs/TEMA6/binary.bin', 'wb+') as fp1:
|
|
pickle.dump({'kortezh': kort, 'list': result_list}, fp1)
|
|
|
|
with open('/home/s0ba4/mpei/python-labs/TEMA6/binary.bin', 'rb+') as fp2:
|
|
pickle.load(fp2)
|
|
|
|
{'kortezh': (16.808827380882583, 13.328126034808443, 18.508365438743773, 38.400181739145395, 30.74396638844783, 37.02011460254017, 18.87968576156089, 22.394000025760057, 23.062018003376906, 11.323633616339949, 36.2506853914364, 19.48084169593707, 31.425343980568798, 35.03973794703552, 36.48310456868603, 23.14357758721929, 30.09328844881235, 27.45402353941273, 19.232678017829635, 20.59891162619639), 'list': [-0.8915989855595101, 0.6901927749569217, -0.33460918876777096, 0.6450356200195559, -0.6225211991234381, -0.6280129896135037, 0.030125281547794338, -0.3920431155680488, -0.877617606249215, -0.9466694226202514, -0.9925221451754105, 0.590183211747677, 0.009417305468679018, -0.4637460639640912, -0.9377197913088371, -0.9137534675198252, -0.9693664369267251, 0.7313575170189571, 0.3738180373474736, 0.9841005857350538]}
|
|
|
|
# 5) Рассчитайте среднее значение разностей элементов списка, находящихся на соседних четных и нечетных позициях. Отобразите результат на экране.
|
|
|
|
diffs = []
|
|
for i in range(0, len(result_list) - 1, 2):
|
|
if i + 1 < len(result_list):
|
|
diff = result_list[i] - result_list[i + 1]
|
|
diffs.append(diff)
|
|
|
|
|
|
if diffs:
|
|
avg_diff = sum(diffs) / len(diffs)
|
|
print(f"\nСреднее значение разностей элементов на соседних четных и нечетных позициях:")
|
|
print(f"{avg_diff:.4f}")
|
|
|
|
|
|
|
|
Среднее значение разностей элементов на соседних четных и нечетных позициях:
|
|
-0.5509
|
|
``` |