rework report lab3, test lab3; report and task lab4

main
MakhnovGA 6 дней назад
Родитель 4bc65ebc86
Сommit 6a5e2f9a4c

@ -5,7 +5,7 @@
## Тема 3. Операции с объектами ## Тема 3. Операции с объектами
## Задание 2 Преобразование простых базовых типов объектов. ## Задание 2 Преобразование простых базовых типов объектов.
### 2.1 ### 2.1 Преобразование в логический тип с помощью функции bool(<Объект>).
``` ```
>>> logiz1=bool(56) >>> logiz1=bool(56)
>>> logiz2=bool(0) >>> logiz2=bool(0)
@ -21,7 +21,7 @@
>>> type(logiz4) >>> type(logiz4)
<class 'bool'> <class 'bool'>
``` ```
### 2.2 ### 2.2 2.2. Преобразование в целое десятичное число объекта с заданной системой счисления осуществ-ляется с помощью функции int(<Объект>[,<Система счисления, в которой определен объ-ект>]). По умолчанию система счисления принимается десятичной.
``` ```
>>> tt1=int(198.6) #Отбрасывается дробная часть >>> tt1=int(198.6) #Отбрасывается дробная часть
>>> tt2=int("-76") >>> tt2=int("-76")
@ -40,6 +40,9 @@
Traceback (most recent call last): Traceback (most recent call last):
File "<stdin>", line 1, in <module> File "<stdin>", line 1, in <module>
ValueError: invalid literal for int() with base 10: '98.76' ValueError: invalid literal for int() with base 10: '98.76'
```
Функция int() не может преобразовать строку с числом с плавающей точкой, из-за чего и возникла ошибка
```
>>> flt1=float(789) >>> flt1=float(789)
>>> flt2=float(-6.78e2) >>> flt2=float(-6.78e2)
>>> flt3=float("Infinity") >>> flt3=float("Infinity")
@ -53,7 +56,7 @@ inf
>>> flt4 >>> flt4
-inf -inf
``` ```
### 2.3 ### 2.3 Преобразование десятичных чисел в другие системы счисления
``` ```
>>> hh=123 >>> hh=123
>>> dv1=bin(hh) >>> dv1=bin(hh)
@ -75,7 +78,7 @@ inf
123 123
``` ```
## Задание 3.Изучим преобразования более сложных базовых типов объектов ## Задание 3.Изучим преобразования более сложных базовых типов объектов
### 3.1 ### 3.1 Преобразование в строку символов с помощью функции str(<Объект>).
``` ```
>>> strk1=str(23.6) >>> strk1=str(23.6)
>>> strk2=str(logiz3) >>> strk2=str(logiz3)
@ -93,7 +96,7 @@ inf
>>> strk5 >>> strk5
"{'A': 1, 'B': 2, 'C': 9}" "{'A': 1, 'B': 2, 'C': 9}"
``` ```
### 3.2 ### 3.2 Преобразование элементов объекта в список с помощью функции list(<Объект>).
``` ```
>>> spis2=list((124,236,-15,908)) >>> spis2=list((124,236,-15,908))
>>> spis3=list({"A":1,"B":2,"C":9}) >>> spis3=list({"A":1,"B":2,"C":9})
@ -107,7 +110,7 @@ inf
>>> spis_val >>> spis_val
[1, 2, 9] [1, 2, 9]
``` ```
### 3.3 ### 3.3 3.3. Преобразование элементов объектов в кортеж с помощью функции tuple(<Объект>).
``` ```
>>> kort7=tuple('Строка символов') >>> kort7=tuple('Строка символов')
>>> kort8=tuple(spis2) >>> kort8=tuple(spis2)
@ -119,7 +122,7 @@ inf
>>> kort9 >>> kort9
('A', 'B', 'C') ('A', 'B', 'C')
``` ```
### 3.4 ### 3.4 Удаление объектов.
``` ```
>>> del strk5, kort8 >>> del strk5, kort8
>>> strk5, kort8 >>> strk5, kort8
@ -130,6 +133,16 @@ NameError: name 'strk5' is not defined. Did you mean: 'strk1'?
Traceback (most recent call last): Traceback (most recent call last):
File "<stdin>", line 1, in <module> File "<stdin>", line 1, in <module>
NameError: name 'kort8' is not defined. Did you mean: 'kort7'? NameError: name 'kort8' is not defined. Did you mean: 'kort7'?
>>> my_fio = "Махнов Г.А."
>>> list_fio = list(my_fio)
>>> list_fio
['М', 'а', 'х', 'н', 'о', 'в', ' ', 'Г', '.', 'А', '.']
>>> tuple_fio = tuple(list_fio)
>>> tuple_fio
('М', 'а', 'х', 'н', 'о', 'в', ' ', 'Г', '.', 'А', '.')
>>> new_str_fio = "".join(tuple_fio)
>>> new_str_fio
'Махнов Г.А.'
``` ```
## Задание 4 Арифмитические операции ## Задание 4 Арифмитические операции
### 4.1 Сложение и вычитание (+ и -) ### 4.1 Сложение и вычитание (+ и -)
@ -143,12 +156,12 @@ NameError: name 'kort8' is not defined. Did you mean: 'kort7'?
>>> 14-56.7+89 >>> 14-56.7+89
46.3 46.3
``` ```
### 4.2 ### 4.2 Умножение (*)
``` ```
>>> -6.7*12 >>> -6.7*12
-80.4 -80.4
``` ```
### 4.3 ### 4.3 Деление (/).
``` ```
>>> -234.5/6 >>> -234.5/6
-39.083333333333336 -39.083333333333336
@ -158,7 +171,7 @@ NameError: name 'kort8' is not defined. Did you mean: 'kort7'?
>>> a >>> a
3.9555555555555557 3.9555555555555557
``` ```
### 4.4 ### 4.4 Деление с округлением вниз (//).
``` ```
>>> b=178//45 >>> b=178//45
>>> c=-24.6//12.1 >>> c=-24.6//12.1
@ -168,14 +181,14 @@ NameError: name 'kort8' is not defined. Did you mean: 'kort7'?
>>> bc >>> bc
3 3
``` ```
### 4.5 ### 4.5 Получение остатка от деления (%).
``` ```
>>> 148%33 >>> 148%33
16 16
>>> 12.6%3.8 >>> 12.6%3.8
1.2000000000000002 1.2000000000000002
``` ```
### 4.6 ### 4.6 Возведение в степень (**).
``` ```
>>> 14**3 >>> 14**3
2744 2744
@ -203,21 +216,30 @@ TypeError: unsupported operand type(s) for //: 'complex' and 'int'
(14.4+6j) (14.4+6j)
``` ```
## Задание 5 Операции с двоичными представлениями целых чисел ## Задание 5 Операции с двоичными представлениями целых чисел
### 5.1 ### 5.1 Двоичная инверсия (~).
``` ```
>>> dv1 = 9 >>> dv1 = 9
>>> dv2 = ~dv1 >>> dv2 = ~dv1
>>> dv2 >>> dv2
-10 -10
``` ```
### 5.2 ~1001
0110
1111 = 2^4
-1001
0110 = ~1001
~x = (2^N - 1 - x) = -(x+1)
Т.к. двоичная инверсия преобразует число по формуле -(x+1), где x - заданное число, то при задании числа 9 двоичная инверсия преобразует его в -10
### 5.2 Двоичное «И» (&)
``` ```
>>> 7&9 >>> 7&9
1 1
>>> 7&8 >>> 7&8
0 0
``` ```
### 5.3 ### 5.3 Двоичное «ИЛИ» (|)
``` ```
>>> 7|9 >>> 7|9
15 15
@ -226,12 +248,12 @@ TypeError: unsupported operand type(s) for //: 'complex' and 'int'
>>> 14|5 >>> 14|5
15 15
``` ```
### 5.4 ### 5.4 5.4. Двоичное «исключающее ИЛИ»(^)
``` ```
>> 14^5 >> 14^5
11 11
``` ```
### 5.5 ### 5.5 Сдвиг двоичного представления на заданное число разрядов влево (<<) или вправо (>>) с допол-нением нулями, соответственно справа или слева.
``` ```
>>> h=14 >>> h=14
>>> g = h<<2 >>> g = h<<2
@ -247,7 +269,7 @@ TypeError: unsupported operand type(s) for //: 'complex' and 'int'
3 3
``` ```
## Задание 6. Операции при работе с последовательностями (строками, списками, кортежами). ## Задание 6. Операции при работе с последовательностями (строками, списками, кортежами).
### 6.1 ### 6.1 Объединение последовательностей (конкатенация)(+)
``` ```
>>> 'Система ' +'регулирования' >>> 'Система ' +'регулирования'
'Система регулирования' 'Система регулирования'
@ -256,7 +278,7 @@ TypeError: unsupported operand type(s) for //: 'complex' and 'int'
>>> ('abc','de','fg')+('hi','jkl') >>> ('abc','de','fg')+('hi','jkl')
('abc', 'de', 'fg', 'hi', 'jkl') ('abc', 'de', 'fg', 'hi', 'jkl')
``` ```
### 6.2 ### 6.2 Повторение (*)
``` ```
>>> 'ля-'*5 >>> 'ля-'*5
'ля-ля-ля-ля-ля-' 'ля-ля-ля-ля-ля-'
@ -272,7 +294,7 @@ TypeError: unsupported operand type(s) for //: 'complex' and 'int'
>>> signal2 >>> signal2
(0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0) (0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0)
``` ```
### 6.3 ### 6.3 Проверка наличия заданного элемента в последовательности (in)
``` ```
>>> stroka='Система автоматического управления' >>> stroka='Система автоматического управления'
>>> 'автомат' in stroka >>> 'автомат' in stroka
@ -282,7 +304,7 @@ True
>>> 'ля-' in ('abc', 'de', 'fg', 'hi', 'jkl') >>> 'ля-' in ('abc', 'de', 'fg', 'hi', 'jkl')
False False
``` ```
### 6.4 ### 6.4 Подстановка значений в строку с помощью оператора «%»
#### Пример 1 #### Пример 1
``` ```
>>> stroka='Температура = %g %s %g' >>> stroka='Температура = %g %s %g'
@ -298,13 +320,13 @@ False
'Температура = 16 меньше 25' 'Температура = 16 меньше 25'
``` ```
## Задание 7 Оператор присваивания ## Задание 7 Оператор присваивания
### 7.1 ### 7.1 Обычное присваивание значения переменной (=)
``` ```
>>> zz = -12 >>> zz = -12
>>> zz >>> zz
-12 -12
``` ```
### 7.2 ### 7.2 Увеличение значения переменной на заданную величину (+=) или уменьшение (-=)
``` ```
>>> zz+=5 >>> zz+=5
>>> zz >>> zz
@ -317,7 +339,7 @@ False
>>> stroka >>> stroka
'Система регулирования' 'Система регулирования'
``` ```
### 7.3 ### 7.3 Умножение текущего значения переменной на заданную величину (*=) или деление (/=)
``` ```
>>> zz/=2 >>> zz/=2
>>> zz >>> zz
@ -326,7 +348,7 @@ False
>>> zz >>> zz
-25.0 -25.0
``` ```
### 7.4 ### 7.4 Операции деления с округлением вниз (//=), получения остатка от деления (%=) и возведе-ния в степень(**=)
``` ```
>>> zz//=5 >>> zz//=5
>>> zz >>> zz
@ -339,7 +361,7 @@ False
>>> zz >>> zz
8.0 8.0
``` ```
### 7.5 ### 7.5 Множественное присваивание
``` ```
>>> w=v=10 >>> w=v=10
>>> w,v >>> w,v
@ -360,8 +382,9 @@ False
>>> w,v >>> w,v
({1, 2, 3}, {1, 2, 3}) ({1, 2, 3}, {1, 2, 3})
``` ```
## Задание 8 Операции сравнение: равенство (==), не равно (!=), меньше (<), больше (>), меньше или равно (<=), больше или равно (>=) – придумайте примеры этих операций. Сравните ранее созданные переменные w и v. ## Задание 8 8. Логические операции – при создании логических выражений, дающих в результате вычисле-ния значения True или False.
### 8.1
### 8.1 Операции сравнение: равенство (==), не равно (!=), меньше (<), больше (>), меньше или равно (<=), больше или равно (>=) – придумаем примеры этих операций. Сравним ранее созданные переменные w и v.
``` ```
>>> 1==1 >>> 1==1
True True
@ -378,7 +401,7 @@ True
>>> w==v >>> w==v
True True
``` ```
### 8.2 ### 8.2 Проверка наличия заданного элемента в последовательности или во множестве, а также проверка наличия ключа в словаре (in).
``` ```
>>> mnoz1={'pen','book','pen','iPhone','table','book'} >>> mnoz1={'pen','book','pen','iPhone','table','book'}
>>> 'book' in mnoz1 >>> 'book' in mnoz1
@ -398,7 +421,7 @@ True
>>> dct1['Depart'][1] == 'MM' >>> dct1['Depart'][1] == 'MM'
False False
``` ```
### 8.3 ### 8.3 Создание больших логических выражений с использованием соединительных слов: логиче-ское «И» (and), логическое «ИЛИ» (or), логическое «НЕ» (not).
``` ```
>>> a=17 >>> a=17
>>> b=-6 >>> b=-6
@ -406,7 +429,7 @@ False
True True
>>> (a<b) or (a>=b) and (a==b) >>> (a<b) or (a>=b) and (a==b)
``` ```
### 8.4 ### 8.4 Проверка ссылок переменных на один и тот же объект (is).
``` ```
>>> w=v=10 >>> w=v=10
>>> w is v >>> w is v
@ -417,13 +440,13 @@ True
False False
``` ```
w1 и v1 не являются одним и тем же объектом в памяти, поэтому is выдал ответ False w1 и v1 не являются одним и тем же объектом в памяти, поэтому is выдал ответ False
## Задание 9 ## Задание 9 Операции с объектами, выполняемые с помощью методов.
``` ```
>>> stroka='Микропроцессорная система управления' >>> stroka='Микропроцессорная система управления'
>>> dir(stroka) >>> dir(stroka)
['__add__', '__class__', '__contains__', '__delattr__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__getnewargs__', '__getstate__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__iter__', '__le__', '__len__', '__lt__', '__mod__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__rmod__', '__rmul__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', 'capitalize', 'casefold', 'center', 'count', 'encode', 'endswith', 'expandtabs', 'find', 'format', 'format_map', 'index', 'isalnum', 'isalpha', 'isascii', 'isdecimal', 'isdigit', 'isidentifier', 'islower', 'isnumeric', 'isprintable', 'isspace', 'istitle', 'isupper', 'join', 'ljust', 'lower', 'lstrip', 'maketrans', 'partition', 'removeprefix', 'removesuffix', 'replace', 'rfind', 'rindex', 'rjust', 'rpartition', 'rsplit', 'rstrip', 'split', 'splitlines', 'startswith', 'strip', 'swapcase', 'title', 'translate', 'upper', 'zfill'] ['__add__', '__class__', '__contains__', '__delattr__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__getnewargs__', '__getstate__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__iter__', '__le__', '__len__', '__lt__', '__mod__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__rmod__', '__rmul__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', 'capitalize', 'casefold', 'center', 'count', 'encode', 'endswith', 'expandtabs', 'find', 'format', 'format_map', 'index', 'isalnum', 'isalpha', 'isascii', 'isdecimal', 'isdigit', 'isidentifier', 'islower', 'isnumeric', 'isprintable', 'isspace', 'istitle', 'isupper', 'join', 'ljust', 'lower', 'lstrip', 'maketrans', 'partition', 'removeprefix', 'removesuffix', 'replace', 'rfind', 'rindex', 'rjust', 'rpartition', 'rsplit', 'rstrip', 'split', 'splitlines', 'startswith', 'strip', 'swapcase', 'title', 'translate', 'upper', 'zfill']
``` ```
### 9.1 ### 9.1 Методы для работы со строками.
``` ```
>>> stroka.find('пр') >>> stroka.find('пр')
5 5
@ -451,7 +474,7 @@ w1 и v1 не являются одним и тем же объектом в п
>>> strk3.format(znch=89.7,num=2) >>> strk3.format(znch=89.7,num=2)
'Момент времени 2, значение = 89.7' 'Момент времени 2, значение = 89.7'
``` ```
### 9.2 ### 9.2 Методы для работы со списками.
``` ```
>>> spsk = [23,56,"str", 10, True] >>> spsk = [23,56,"str", 10, True]
>>> dir(spsk) >>> dir(spsk)
@ -463,7 +486,7 @@ w1 и v1 не являются одним и тем же объектом в п
>>> spsk >>> spsk
[23, 56, 'a', 10, True, 'c'] [23, 56, 'a', 10, True, 'c']
``` ```
### 9.3 ### 9.3 Самостоятельно создадим кортеж и изучим применение его методов.
``` ```
>>> my_cort = (1, "hi", 13, 5,86) >>> my_cort = (1, "hi", 13, 5,86)
>>> dir(my_cort) >>> dir(my_cort)
@ -473,7 +496,7 @@ w1 и v1 не являются одним и тем же объектом в п
>>> my_cort.index("hi") >>> my_cort.index("hi")
1 1
``` ```
### 9.4 ### 9.4 Также самостоятельно изучим методы словарей и множеств
``` ```
>>> my_dict = {"math":13, "physics": 11, "history": 15} >>> my_dict = {"math":13, "physics": 11, "history": 15}
>>> dir(my_dict) >>> dir(my_dict)

@ -0,0 +1,55 @@
# Тест по модулю 1
Махнов Георгий, А-01-23
## Задание
M1_10
1) Какова роль компилятора в среде Python? Чем отличаются файлы с расширением .pyc от файлов с расширением .py?
2) Напишите инструкцию, создающую список со словами из данного предложения. Подсчитайте и отобразите на экране число слов.
3) Создайте кортеж с именами 10 любых студентов вашей группы. Напишите инструкцию, доказывающую, что создан объект именно требуемого типа. Напишите инструкцию отображения списка атрибутов созданного объекта.
4) Превратите кортеж во множество. Подсчитайте число элементов множества и отобразите на экране с помощью формата по шаблону: "Во множестве ХХ студентов".
5) Напишите инструкцию, создающую строку из элементов списка из п.2. Отобразите строку на экране.
## Решение
1) Компилятор в Питоне преобразует исходный код в байт-код, который может быть выполнен компьютером и помогает повысить скорость и производительность. Файл .pyc отличается от файла .py тем, что в последнем содержится читаемый человеком код, и служит для разработки, в то время как .pyc содержит в себе байт-код и служит для ускорения запуска программы.
2)
```
>>> sttr = "Напишите инструкцию, создающую список со словами из данного предложения."
>>> list_sttr = list(sttr.split())
>>> list_sttr
['Напишите', 'инструкцию,', 'создающую', 'список', 'со', 'словами', 'из', 'данного', 'предложения.']
>>> len(list_sttr)
9
```
3)
```
>>> fio_tuple = ('Дима', 'Данил','Паша','Лиза','Георгий','Катя','Максим','Вадим','Артем','Никита')
>>> fio_tuple
('Дима', 'Данил', 'Паша', 'Лиза', 'Георгий', 'Катя', 'Максим', 'Вадим', 'Артем', 'Никита')
>>> type(fio_tuple)
<class 'tuple'>
>>> dir(fio_tuple)
['__add__', '__class__', '__class_getitem__', '__contains__', '__delattr__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__getnewargs__', '__getstate__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__iter__', '__le__', '__len__', '__lt__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__rmul__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', 'count', 'index']
```
4)
```
>>> list_tuple = set(fio_tuple)
>>> list_tuple
{'Паша', 'Максим', 'Артем', 'Данил', 'Никита', 'Лиза', 'Дима', 'Вадим', 'Катя', 'Георгий'}
>>> print("Во множестве ", len(list_tuple), " студентов")
Во множестве 10 студентов
```
5)
```
>>> print(" ".join(list_sttr))
Напишите инструкцию, создающую список со словами из данного предложения.
```

Двоичные данные
TEMA4/Ris1.png

Двоичный файл не отображается.

После

Ширина:  |  Высота:  |  Размер: 37 KiB

Двоичные данные
TEMA4/Ris2.png

Двоичный файл не отображается.

После

Ширина:  |  Высота:  |  Размер: 20 KiB

Двоичные данные
TEMA4/image-1.png

Двоичный файл не отображается.

После

Ширина:  |  Высота:  |  Размер: 13 KiB

Двоичные данные
TEMA4/image-2.png

Двоичный файл не отображается.

После

Ширина:  |  Высота:  |  Размер: 11 KiB

Двоичные данные
TEMA4/image.png

Двоичный файл не отображается.

После

Ширина:  |  Высота:  |  Размер: 26 KiB

@ -0,0 +1,297 @@
# Отчет по теме 4
Махнов Георгий, А-01-23
## Тема 4. Встроенные функции
### 2.1. Функция round – округление числа с заданной точностью.
```
>>> help(round)
Help on built-in function round in module builtins:
round(number, ndigits=None)
Round a number to a given precision in decimal digits.
The return value is an integer if ndigits is omitted or None. Otherwise
the return value has the same type as the number. ndigits may be negative.
>>> round(123.456,1)
123.5
>>> round(123.456,0)
123.0
>>> type(round(123.456,0))
<class 'float'>
```
Ответы различаются тем, что в первом вызове мы округляем до 1 знака после запятой, во втором вызове мы округляем до 0 знака после запятой (т.е. до целого числа)
```
>>> round(123.456)
123
>>> type(round(123.456))
<class 'int'>
```
### 2.2. Функция range – создание последовательности целых чисел с заданным шагом или, по умолчанию, с шагом 1.
```
>>> gg=range(76,123,9)
>>> gg
range(76, 123, 9)
>>> list(gg)
[76, 85, 94, 103, 112, 121]
>>> list(range(23))
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22]
```
Получается объект с целыми числами с шагом 1 от 0 до 22.
### 2.3. Функция zip – создание общего объекта, элементами которого являются кортежи, составленные из элементов двух или более объектов-последовательностей (zip – застежка-«молния»)
```
>>> qq = ['Махнов','Лазарев','Коваленко','Иванов']
>>> ff=zip(gg,qq)
>>> ff
<zip object at 0x0000018777428980>
>>> tuple(ff)
((76, 'Махнов'), (85, 'Лазарев'), (94, 'Коваленко'), (103, 'Иванов'))
>>> ff[0]
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'zip' object is not subscriptable
```
В кортеже содержится 4 элемента, так как zip() объединяет 2 объекта по длине меньшего из них (в нашем случае qq, 4 объекта).
### 2.4. Функция eval – вычисление значения выражения, корректно записанного на языке Python и представленного в виде символьной строки.
```
>>> fff=float(input('коэффициент усиления=')); dan=eval('5*fff-156')
коэффициент усиления=13.48
>>> dan
-88.6
```
### 2.5. Функция exec – чтение и выполнение объекта-аргумента функции.
```
>>> exec(input('введите инструкции:'))
введите инструкции:perem=-123.456;gg=round(abs(perem)+98,3)
>>> gg
221.456
```
### 2.6. Самостоятельно изучите и попробуйте применить функции abs, pow, max, min, sum, divmod, len, map.
```
>>> abs(-13)
13
>>> pow(-13, 2)
169
>>> max(-13, 12)
12
>>> min(-13, 12)
-13
>>> sum([-13, 12])
-1
>>> divmod(13, 3)
(4, 1)
>>> list(map(int, [14.3, 15.6]))
[14, 15]
```
## 3. Функции из стандартного модуля math – совокупность разнообразных математических функций.
```
>>> import math
>>> dir(math)
['__doc__', '__loader__', '__name__', '__package__', '__spec__', 'acos', 'acosh', 'asin', 'asinh', 'atan', 'atan2', 'atanh', 'cbrt', 'ceil', 'comb', 'copysign',
'cos', 'cosh', 'degrees', 'dist', 'e', 'erf', 'erfc', 'exp', 'exp2', 'expm1', 'fabs', 'factorial', 'floor', 'fmod', 'frexp', 'fsum', 'gamma', 'gcd', 'hypot', 'inf', 'isclose', 'isfinite', 'isinf', 'isnan', 'isqrt', 'lcm', 'ldexp', 'lgamma', 'log', 'log10', 'log1p', 'log2', 'modf', 'nan', 'nextafter', 'perm', 'pi', 'pow', 'prod', 'radians', 'remainder', 'sin', 'sinh', 'sqrt', 'sumprod', 'tan', 'tanh', 'tau', 'trunc', 'ulp']
>>> help(math.factorial)
Help on built-in function factorial in module math:
factorial(n, /)
Find n!.
Raise a ValueError if x is negative or non-integral.
>>> math.factorial(5)
120
>>> from math import *
>>> sin(pi/2)
1.0
>>> acos(0.5)
1.0471975511965979
>>> degrees(13)
744.8451336700703
>>> radians(pi/2)
0.027415567780803774
>>> exp(3)
20.085536923187668
>>> log(4)
1.3862943611198906
>>> log(4,2)
2.0
>>> log10(4)
0.6020599913279624
>>> ceil(3.1)
4
>>> ceil(-13.3)
-13
>>> floor(-13.3)
-14
>>> pi
3.141592653589793
>>> sin(2*pi/(7+exp(0.23)))
0.6895048136223223
```
### 4. Функции из модуля cmath – совокупность функций для работы с комплексными числами.
```
>>> import cmath
>>> from cmath import *
>>> dir(cmath)
['__doc__', '__loader__', '__name__', '__package__', '__spec__', 'acos', 'acosh', 'asin', 'asinh', 'atan', 'atanh', 'cos', 'cosh', 'e', 'exp', 'inf', 'infj', 'isclose', 'isfinite', 'isinf', 'isnan', 'log', 'log10', 'nan', 'nanj', 'phase', 'pi', 'polar', 'rect', 'sin', 'sinh', 'sqrt', 'tan', 'tanh', 'tau']
>>> sqrt(1.2-0.5j)
(1.118033988749895-0.22360679774997896j)
>>> cmath.phase(1-0.5j)
-0.4636476090008061
```
Начните с импорта модуля
import cmath
Отобразите атрибуты модуля, показывающие содержащиеся в нем функции:
dir(cmath)
Изучите функцию для извлечения квадратного корня из комплексного числа
cmath.sqrt(1.2-0.5j)
и функцию расчета фазы
cmath.phase(1-0.5j)
### 5. Стандартный модуль random – совокупность функций для выполнения операций с псевдослу-чайными числами и выборками.
```
>>> from random import *
>>> dir(random)
['__call__', '__class__', '__delattr__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getstate__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__module__', '__name__', '__ne__', '__new__', '__qualname__', '__reduce__', '__reduce_ex__', '__repr__', '__self__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__text_signature__']
>>> help(seed)
Help on method seed in module random:
seed(a=None, version=2) method of random.Random instance
Initialize internal state from a seed.
The only supported seed types are None, int, float,
str, bytes, and bytearray.
None or no argument seeds from current time or from an operating
system specific randomness source if available.
If *a* is an int, all bits are used.
For version 2 (the default), all of the bits are used if *a* is a str,
bytes, or bytearray. For version 1 (provided for reproducing random
sequences from older versions of Python), the algorithm for str and
bytes generates a narrower range of seeds.
>>> seed()
>>> random()
0.9886498397075144
>>> uniform(1, 4)
2.780130303169699
>>> randint(1, 5)
5
>>> gauss(1, 4)
-1.8813369397077917
>>> lst = [1,4,3,5,6]
>>> shuffle(lst)
>>> print(lst)
[4, 6, 3, 1, 5]
>>> sample(lst, 3)
[3, 1, 5]
>>> betavariate(1, 3)
0.13265164490875223
>>> gammavariate(1,3)
6.693731601234578
>>> [uniform(1,3), gauss(1,3), betavariate(1,3), gammavariate(1,3)]
[2.727738971034954, 0.6065095462022692, 0.454597873888903, 1.6408773406150745]
```
### 6. Функции из модуля time – работа с календарем и со временем.
```
>>> from time import *
>>> dir(time)
['__call__', '__class__', '__delattr__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getstate__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__module__', '__name__', '__ne__', '__new__', '__qualname__', '__reduce__', '__reduce_ex__', '__repr__', '__self__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__text_signature__']
>>> c1 = time()
>>> c1
1760084354.1531947
>>> c2=time()-c1
>>> c2
7.051163673400879
>>> gmtime()
time.struct_time(tm_year=2025, tm_mon=10, tm_mday=10, tm_hour=8, tm_min=19, tm_sec=40, tm_wday=4, tm_yday=283, tm_isdst=0)
>>> dat = gmtime()
>>> dat.tm_mon
10
>>> dat.tm_hour, dat.tm_min
(8, 20)
>>> localtime()
time.struct_time(tm_year=2025, tm_mon=10, tm_mday=10, tm_hour=11, tm_min=21, tm_sec=3, tm_wday=4, tm_yday=283, tm_isdst=0)
>>> asctime(localtime())
'Fri Oct 10 11:21:55 2025'
>>> ctime(c1)
'Fri Oct 10 11:19:14 2025'
>>> sleep(3)
>>> mktime(localtime())
1760084701.0
```
### 7. Графические функции.
```
>>> import pylab
>>> x=list(range(-3,55,4))
>>> t=list(range(15))
>>> pylab.plot(t,x)
[<matplotlib.lines.Line2D object at 0x000001E04A97D948>]
>>> pylab.title('Первый график')
Text(0.5, 1.0, 'Первый график')
>>> pylab.xlabel('время')
Text(0.5, 0, 'время')
>>> pylab.ylabel('сигнал')
Text(0, 0.5, 'сигнал')
>>> pylab.show()
```
![alt text](image.png)
```
>>> X1=[12,6,8,10,7]
>>> X2=[5,7,9,11,13]
>>> pylab.plot(X1)
[<matplotlib.lines.Line2D object at 0x000001E04B72CDC8>]
>>> pylab.plot(X2)
[<matplotlib.lines.Line2D object at 0x000001E04B8746C8>]
>>> pylab.show()
```
![alt text](Ris1.png)
```
>>> region=['Центр','Урал','Сибирь','Юг']
>>> naselen=[65,12,23,17]
>>> pylab.pie(naselen,labels=region)
([<matplotlib.patches.Wedge object at 0x000001E04C00AA48>, <matplotlib.patches.Wedge object at 0x000001E04C0021C8>, <matplotlib.patches.Wedge object at 0x000001E04A6BCCC8>, <matplotlib.patches.Wedge object at 0x000001E04C139A08>], [Text(-0.1910130855889933, 1.083288512416601, 'Центр'), Text(-0.8613283319035216, -0.6841882085072037, 'Урал'), Text(0.04429273729355889, -1.0991078898011077, 'Сибирь'), Text(0.9873752043868569, -0.4848610169543564, 'Юг')])
>>> pylab.show()
```
![alt text](Ris2.png)
```
>>> pylab.hist(X1, bins = 5)
(array([2., 1., 0., 1., 1.]), array([ 6. , 7.2, 8.4, 9.6, 10.8, 12. ]), <BarContainer object of 5 artists>)
>>> pylab.show()
```
![alt text](image-1.png)
```
>>> values = [13,14,10,18]
>>> categories = ['A', 'B', 'C', 'D']
>>> pylab.bar(categories, values)
<BarContainer object of 4 artists>
>>> pylab.show()
```
![alt text](image-2.png)
### 8. Самостоятельно изучите состав статистического модуля statistics. Попробуйте применить не менее 3-х функций из этого модуля.
```
>>> import statistics
>>> statistics
<module 'statistics' from 'C:\\Users\\gmack\\AppData\\Local\\Programs\\Python\\Python37\\lib\\statistics.py'>
>>> dir(statistics)
['Decimal', 'Fraction', 'StatisticsError', '__all__', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', '_coerce', '_convert', '_counts', '_exact_ratio', '_fail_neg', '_find_lteq', '_find_rteq', '_isfinite', '_ss', '_sum', 'bisect_left', 'bisect_right', 'collections', 'groupby', 'harmonic_mean', 'math', 'mean', 'median', 'median_grouped', 'median_high', 'median_low', 'mode', 'numbers', 'pstdev', 'pvariance', 'stdev', 'variance']
>>> lst = [1,4,3,5,6,7,83,5,63,5,78,12,5,7,1,4,19]
>>> mean(lst)
18.11764705882353
>>> median(lst)
5
>>> mode(lst)
5
```

@ -0,0 +1,49 @@
# Общее контрольное задание по теме 4
Махнов Георгий, А-01-23
## Задание
• Напишите и исполните единое выражение, реализующее последовательное выполнение следующих операций: вычисление фазы комплексного числа 0.2+0.8j, округление результата до двух знаков после запятой, умножение полученного значения на 20, получение кортежа из двух значений: округленное вниз значение от деления результата на 3 и остатка от этого деления.
• Создайте объект класса struct_time с временными параметрами для текущего московского времени. Создайте строку с текущим часом и минутами.
• Создайте список с элементами – названиями дней недели. Сделайте случайную выборку из этого списка с тремя днями недели.
• Напишите инструкцию случайного выбора числа из последовательности целых чисел от 14 до 32 с шагом 3.
• Сгенерируйте нормально распределенное число N с математическим ожиданием 15 и стан-дартным отклонением 4 и округлите его до целого значения. Создайте список с N элементами – случайно выбранными буквами латинского алфавита.
• Напишите инструкцию для определения временного интервала в минутах, прошедшего с момента предыдущего (из п.2) определения временных параметров.
## Решение
```
>>> from math import *
>>> from cmath import *
>>> from time import *
>>> from random import *
>>> import string
>>> divmod(round(phase(0.2+0.8j))*20, 3)
(6, 2)
>> struct_time = localtime()
>>> struct_time
time.struct_time(tm_year=2025, tm_mon=10, tm_mday=10, tm_hour=11, tm_min=57, tm_sec=56, tm_wday=4, tm_yday=283, tm_isdst=0)
>>> str_time = asctime(struct_time)
>>> str_time
'Fri Oct 10 11:57:56 2025'
>>> lst = ["понедельник", "вторник", "среда", "четверг", "пятница", "суббота", "воскресенье"]
>>> sample(lst)
>>> sample(lst, 3)
['вторник', 'четверг', 'понедельник']
>>> lst = list(range(14,32,3))
>>> choice(lst)
14
>>> choice(lst)
20
>>> N = round(gauss(15, 4))
>>> N
13
>>> abc_list = sample(list(string.ascii_letters), N)
>>> abc_list
['b', 'y', 's', 'a', 'm', 'U', 'A', 'u', 'X', 'o', 'k', 'Q', 't']
>>> (localtime().tm_hour - struct_time.tm_hour)*60 - struct_time.tm_min + localtime().tm_min
18
```
Загрузка…
Отмена
Сохранить