Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.

113 строки
4.6 KiB
Markdown

This file contains invisible Unicode characters!

This file contains invisible Unicode characters that may be processed differently from what appears below. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to reveal hidden characters.

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

# Индивидуальное контрольное задание по Модулю 2
Кузьменко Елена, А-02-23, Вариант 8
## Задание
1) Создайте множество с 40 элементами - случайными числами, равномерно распределенными на интервале от -20 до +10. Числа должны быть округлены до двух знаков после точки.
2) Запросите у пользователя и введите имя бинарного файла для сохранения множества. Если во введенном имени есть пробелы, замените их на пустые строки.
3) Запишите множество в бинарный файл с указанным именем.
4) Удалите из памяти созданное множество.
5) Прочитайте множество из файла и рассчитайте по его элементам среднее значение. Отобразите его на экране по шаблону: " По <число элементов> среднее = <рассчитанное значение>". Выводимое среднее округлить до двух знаков после точки.
## Решение
### 1) Создание множества с 40 элементами.
```py
>>> import random
>>> import pickle
>>> import os
>>> os.chdir('C:\\Users\\u522-15\\Desktop\\TestModule2')
>>> os.getcwd()
'C:\\Users\\u522-15\\Desktop\\TestModule2'
>>> mnoz = set()
>>> while True: # проверка, что элементы множества = 40(из-за особенности удалять повторения)
... mnoz.clear()
... for i in range(40):
... s = round(random.uniform(-20, 10), 2)
... mnoz.add(s)
... if len(mnoz) == 40:
... break
...
...
>>> mnoz
{-0.71, 1.68, 2.38, 2.86, 4.56, 5.13, 6.64, 3.27, 6.79, 1.46, 2.3, 4.81, 5.11, 6.63, -3.58, -19.31, -5.56, -5.11, -5.3, -0.15, -11.07, -19.83, -18.65, -17.23, -17.11, -16.6, -14.61, -16.77, -13.11, -12.84, -10.52, -9.94, -10.63, -7.34, -10.91, -5.93, -4.67, -3.36, -2.28, -10.71}
>>> len(mnoz)
40
>>> type(mnoz)
<class 'set'>
```
### 2) Запрос на введения имени бинарного файла. Замена пробелов.
```py
>>> filename = input('Введите имя бинарного файла: ').replace(" ", "")
Введите имя бинарного файла: binn n.mnz
>>> filename
'binnn.mnz'
```
### 3) Запись множества в бинарный файл.
```py
>>> fp = open(filename, 'wb')
>>> pickle.dump(mnoz, fp)
>>> fp.close()
```
#### Содержимое файла binnn.mnz:
Ђ•m Џ”(GїжёQл…ёG?ъбG®zбG@
=pЈЧ
G@бG®zбG@=pЈЧ
=G@ёQл…G@Џ\(хВЏG@
(хВЏ\)G@(хВЏ\)G?ч\(хВЏ\G@ffffffG@=pЈЧ
=G@pЈЧ
=qG@ёQл…GА ЈЧ
=p¤GА3O\(хВЏGА=pЈЧ
=GАpЈЧ
=qGА333333GїГ333333GА&
=p¤GА3ФzбG®GА2¦fffffGА1:бG®{GА1(хВЏ\GА0™™™™™љGА-8Qл…ёGА0ЕёQл…GА*8Qл…ёGА)®zбG®GА%
=pЈЧ
GА#бG®zбGА%BЏ\(хГGА\(хВЏ\GА%Сл…ёRGАёQл…ёGА®zбG®GА
бG®zбGА=pЈЧ
=GА%k…ёQмђ.
### 4) Удаление созданного множества из памяти.
```py
>>> dir()
['__annotations__', '__builtins__', '__doc__', '__loader__', '__name__', '__package__', '__spec__', 'filename', 'fp', 'i', 'mnoz', 'num', 'os', 'pickle', 'random', 'x']
>>> del mnoz
>>> dir()
['__annotations__', '__builtins__', '__doc__', '__loader__', '__name__', '__package__', '__spec__', 'filename', 'fp', 'i', 'num', 'os', 'pickle', 'random', 'x']
>>> mnoz
Traceback (most recent call last):
File "<pyshell#101>", line 1, in <module>
mnoz
NameError: name 'mnoz' is not defined
```
### 5) Чтение множества и расчет среднего значения.
```py
>>> fp = open(filename, 'rb')
>>> l = pickle.load(fp)
>>> fp.close()
>>> l
{-0.71, 1.68, 2.38, 2.86, 4.56, 5.13, 6.64, 3.27, 6.79, 1.46, 2.3, 4.81, 5.11, 6.63, -5.3, -5.56, -0.15, -3.36, -9.94, -7.34, -5.93, -19.31, -19.83, -18.65, -17.23, -17.11, -16.6, -14.61, -16.77, -11.07, -13.11, -12.84, -10.52, -10.63, -10.91, -5.11, -4.67, -3.58, -2.28, -10.71}
>>> type(l)
<class 'set'>
>>> sred = round((sum(l) / len(l)),2); sred
-5.51
>>> print(f"По {len(l)} элементам среднее = {sred}")
По 40 элементам среднее = -5.51
```