|
|
# Индивидуальное контрольное задание по Модулю 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
|
|
|
```
|