Сравнить коммиты

...

28 Коммитов
main ... main

Автор SHA1 Сообщение Дата
TabolinIA 44dedc6983 2 ред. ИКЗ
2 недель назад
TabolinIA 5c448263d6 1 ред. ИКЗ
2 недель назад
TabolinIA 51a80555a6 Merge branch 'main' of http://uit.mpei.ru/git/TabolinIA/python-labs
2 недель назад
TabolinIA 19eb7b4037 ИКЗ 11
2 недель назад
TabolinIA 5e4a59394e ред. ОКЗ
2 недель назад
TabolinIA ebc29143f2 ред. отчета
2 недель назад
TabolinIA 8d6ef9e2ee 1 ред. ОКЗ
2 недель назад
TabolinIA 5250cedf47 ОКЗ
2 недель назад
TabolinIA ca5f76dc63 1 ред. отчёта
2 недель назад
TabolinIA 5f9fa115b0 Merge branch 'main' of http://uit.mpei.ru/git/TabolinIA/python-labs
2 недель назад
TabolinIA 0c7aa1f909 Отчет по Теме 4
2 недель назад
TabolinIA c7c1f29632 2 ред. ТЕСТ 1
2 недель назад
TabolinIA 4ba71d4abb 1 ред. ТЕСТ 1
2 недель назад
TabolinIA 9dbd830a77 ТЕСТ 1
2 недель назад
TabolinIA b80d5a6828 2 ред. ОКЗ
2 недель назад
TabolinIA abc4d1f7c6 ред. ОКЗ Тема 3
2 недель назад
TabolinIA 36f8fafbad Отчет Тема 3
4 недель назад
TabolinIA 49c4252245 Merge branch 'main' of http://uit.mpei.ru/git/TabolinIA/python-labs
4 недель назад
TabolinIA c0fb6de1f3 ИКЗ Тема 2
4 недель назад
TabolinIA fc1b0c8ce9 Правки 1
4 недель назад
TabolinIA 9555567b3f ОКЗ ТЕМА2
4 недель назад
TabolinIA 48b6c2271e отчет
4 недель назад
TabolinIA ae7937980d Изменил(а) на 'TEMA1/test.md'
1 месяц назад
TabolinIA 06a5c48fb2 Merge branch 'main' of http://uit.mpei.ru/git/TabolinIA/python-labs
1 месяц назад
TabolinIA 4883e7fbbe TEMA1 question2
1 месяц назад
TabolinIA 8b2deb5f05 TEMA1 report v2.1
1 месяц назад
TabolinIA 34a6e0f653 TEMA1 report md
1 месяц назад
TabolinIA 0835599324 TEMA1 report
1 месяц назад

@ -0,0 +1,118 @@
# Отчёт по теме 1. Знакомство с интерпретатором и интерактивной оболочкой IDLE
Таболин Иван Андреевич А-01-23
# 1. Создал свою папку на диске, а в ней создал папки TEMAn
# 2. Запустил на выполнение программу-интерпретатор, выбрав ее ярлык «Python 3.13».
# 3. Изучил содержание открывающегося диалогового окна интерпретатора. Вывел "hello".
```py
>>> print('Hello')
Hello
```
# 4. Запросил от пользователя имя и ввёл с клавиатуры.
```py
>>> h=input('Your name=')
Your name=Ivan
```
# 5. Завершил работу интерпретатора.
```py
>>> exit()
```
# 6. Запустил интерактивную графическую оболочку IDLE среды Python.
# 7. Изучил устройство главного командного окна среды.
# 8. Настроил рабочий каталог среды
```py
import os
os.chdir('C:\MPEI\POAS\Tabolin\Tema1\python-labs\TEMA1')
```
# 9. Изучил предложения главного меню и настроил интерфейс оболочки IDLE.
# 10. Создал файл программы и сохранил под именем Pr0.py.
```py
--------Pr0.py--------
Программа по Теме 1 Таболин Иван Андреевич
print('Hello')
h=input('Your name=')
import os
os.chdir('C:\MPEI\POAS\Tabolin\Tema1\python-labs\TEMA1')
----------------------
```
Запустил программу на выполнение разными способами.
```py
import Pr0
Hello
Your name=Ivan
```
# 11. Запустил на выполнение Prb1.py
```py
import prb1
Как Вас зовут? Ivan
Привет, Ivan
```
# 12.
Содержание файла Pr0.cpython-313.pyc:
```py
у
;Dµh° г  уP • \ " S 5 \" S5 rSSKr\R " S5 g)ЪHelloz
Your name=й NzC:\MPEI\POAS\Tabolin\Tema1\)ЪprintЪinputЪosЪchdir© у Ъ!C:\MPEI\POAS\Tabolin\Tema1\Pr0.pyЪ<module>r  s& рб Ђg„Щ УЂЫ Ш Р +Х ,r
```
В папке `__pycache__` содержится скомпилированный двоичный код, который нужен для повторных запусков.
# 13. Создал файл протокола темы.
# 14. Изучил раздел "Help"
```py
help(print)
Help on built-in function print in module builtins:
print(*args, sep=' ', end='\n', file=None, flush=False)
Prints the values to a stream, or to sys.stdout by default.
sep
string inserted between values, default a space.
end
string appended after the last value, default a newline.
file
a file-like object (stream); defaults to the current sys.stdout.
flush
whether to forcibly flush the stream.
help(print),help(input)
Help on built-in function print in module builtins:
print(*args, sep=' ', end='\n', file=None, flush=False)
Prints the values to a stream, or to sys.stdout by default.
sep
string inserted between values, default a space.
end
string appended after the last value, default a newline.
file
a file-like object (stream); defaults to the current sys.stdout.
flush
whether to forcibly flush the stream.
Help on built-in function input in module builtins:
input(prompt='', /)
Read a string from standard input. The trailing newline is stripped.
The prompt string, if given, is printed to standard output without a
trailing newline before reading input.
If the user hits EOF (*nix: Ctrl-D, Windows: Ctrl-Z+Return), raise EOFError.
On *nix systems, readline is used if available.
(None, None)
```
# 15.
Открыл файл prb1.py в текстовом редакторе среды.
С помощью предложения "Window" переключался между окнами.
Запустил программу prb1.py на выполнение с помощью предложения "Run".
```py
============================ RESTART: C:\MPEI\POAS\Tabolin\Tema1\prb1.py ===========================
Как Вас зовут? Ivan
Привет, Ivan
```
Открыл файл Pr0.py в текстовом редакторе среды и переключал окна.
Закрыл два окна текстового редактора с помощью предложения "Close window".
Запустил на выполнение программу tdemo_chaos.py и открыл сам код в текстовом редакторе.
```py
import tdemo_chaos
```

@ -0,0 +1,112 @@
# Отчёт по теме 1. Знакомство с интерпретатором и интерактивной оболочкой IDLE
Таболин Иван Андреевич А-01-23
1. Создал свою папку на диске, а в ней создал папки TEMAn
2. Запустил на выполнение программу-интерпретатор, выбрав ее ярлык «Python 3.13».
3. 3.Изучил содержание открывающегося диалогового окна интерпретатора. Вывел "hello".
```
>>> print('Hello')
Hello
```
4. Запросил от пользователя имя и ввёл с клавиатуры.
```
>>> h=input('Your name=')
Your name=Ivan
```
5. Завершил работу интерпретатора.
```
>>> exit()
```
6. Запустил интерактивную графическую оболочку IDLE среды Python.
7. Изучил устройство главного командного окна среды.
8. Настроил рабочий каталог среды
```
import os
os.chdir('C:\MPEI\POAS\Tabolin\Tema1\python-labs\TEMA1')
```
9. Изучил предложения главного меню и настроил интерфейс оболочки IDLE.
10. Создал файл программы и сохранил под именем Pr0.py.
--------Pr0.py--------
#Программа по Теме 1 Таболин Иван Андреевич
print('Hello')
h=input('Your name=')
import os
os.chdir('C:\MPEI\POAS\Tabolin\Tema1\python-labs\TEMA1')
----------------------
Запустил программу на выполнение разными способами.
```
import Pr0
Hello
Your name=Ivan
```
11. Запустил на выполнение Prb1.py
```
import prb1
Как Вас зовут? Ivan
Привет, Ivan
```
12.
Содержание файла Pr0.cpython-34.pyc:
у
;Dµh° г  уP • \ " S 5 \" S5 rSSKr\R " S5 g)ЪHelloz
Your name=й NzC:\MPEI\POAS\Tabolin\Tema1\)ЪprintЪinputЪosЪchdir© у Ъ!C:\MPEI\POAS\Tabolin\Tema1\Pr0.pyЪ<module>r  s& рб Ђg„Щ УЂЫ Ш Р +Х ,r
В папке __pycache__ содержится скомпилированный двоичный код, который нужен для оптимизации
13. Создал файл протокола темы.
14. Изучил раздел "Help"
```
help(print)
Help on built-in function print in module builtins:
print(*args, sep=' ', end='\n', file=None, flush=False)
Prints the values to a stream, or to sys.stdout by default.
sep
string inserted between values, default a space.
end
string appended after the last value, default a newline.
file
a file-like object (stream); defaults to the current sys.stdout.
flush
whether to forcibly flush the stream.
help(print),help(input)
Help on built-in function print in module builtins:
print(*args, sep=' ', end='\n', file=None, flush=False)
Prints the values to a stream, or to sys.stdout by default.
sep
string inserted between values, default a space.
end
string appended after the last value, default a newline.
file
a file-like object (stream); defaults to the current sys.stdout.
flush
whether to forcibly flush the stream.
Help on built-in function input in module builtins:
input(prompt='', /)
Read a string from standard input. The trailing newline is stripped.
The prompt string, if given, is printed to standard output without a
trailing newline before reading input.
If the user hits EOF (*nix: Ctrl-D, Windows: Ctrl-Z+Return), raise EOFError.
On *nix systems, readline is used if available.
(None, None)
```
15.
Открыл файл prb1.py в текстовом редакторе среды.
С помощью предложения "Window" переключался между окнами.
Запустил программу prb1.py на выполнение с помощью предложения "Run".
```
============================ RESTART: C:\MPEI\POAS\Tabolin\Tema1\prb1.py ===========================
Как Вас зовут? Ivan
Привет, Ivan
```
Открыл файл Pr0.py в текстовом редакторе среды и переключал окна.
Закрыл два окна текстового редактора с помощью предложения "Close window".

@ -0,0 +1,8 @@
# Индивидуальное контрольное задание по Теме 1
Таболин Иван, А-01-23
## Вопрос
Можно ли работать со средой без использования интерактивной оболочки IDLE?
## Ответ
Да, можно. Интерктивная оболочка IDLE - это один из способов взаимодействия со средой программирования Python.
Можно рабоать напрямую через командную строку или другие среды разработки, такие как PyCharm, VisualStudio и др.
Плюсы этих сред разработки в том, что там есть подсветка команд, автодополнение и некотоые другие удобные функции.

@ -0,0 +1,570 @@
# Отчет по Теме 2
Таболин Иван Андреевич А-01-23
## 1. Запуск оболочки IDLE и начальная настройка.
```py
import os
os.chdir('C:\\MPEI\\TEMA2')
```
## 2. Изучение простых объектов.
Присваивание
```py
f1=16
f2=3
```
Просмотр значения переменной
```py
f1,f2
(16, 3)
f1;f2
16
3
```
Просмотр существующих объектов
```py
dir()
['__annotations__', '__builtins__', '__doc__', '__loader__', '__name__', '__package__', '__spec__', 'f1', 'f2', 'os']
```
Получение списка атрибутов любого объекта
```py
dir(f1)
['__abs__', '__add__', '__and__', '__bool__', '__ceil__', '__class__', '__delattr__', '__dir__', '__divmod__', '__doc__', '__eq__', '__float__', '__floor__', '__floordiv__', '__format__', '__ge__', '__getattribute__', '__getnewargs__', '__getstate__', '__gt__', '__hash__', '__index__', '__init__', '__init_subclass__', '__int__', '__invert__', '__le__', '__lshift__', '__lt__', '__mod__', '__mul__', '__ne__', '__neg__', '__new__', '__or__', '__pos__', '__pow__', '__radd__', '__rand__', '__rdivmod__', '__reduce__', '__reduce_ex__', '__repr__', '__rfloordiv__', '__rlshift__', '__rmod__', '__rmul__', '__ror__', '__round__', '__rpow__', '__rrshift__', '__rshift__', '__rsub__', '__rtruediv__', '__rxor__', '__setattr__', '__sizeof__', '__str__', '__sub__', '__subclasshook__', '__truediv__', '__trunc__', '__xor__', 'as_integer_ratio', 'bit_count', 'bit_length', 'conjugate', 'denominator', 'from_bytes', 'imag', 'is_integer', 'numerator', 'real', 'to_bytes']
```
Определение классовой принадлежности любого объекта
```py
type(f2)
<class 'int'>
```
Удаление объекта из оперативной памяти и проверка его отсутствия
```py
del f1,f2
dir()
['__annotations__', '__builtins__', '__doc__', '__loader__', '__name__', '__package__', '__spec__', 'os']
```
## 3. Изучение правил наименований в Python.
Операции наименований переменных
```py
gg1=1.6
hh1='Строка'
73sr=3
SyntaxError: invalid decimal literal
and=7
SyntaxError: invalid syntax
dir()
['__annotations__', '__builtins__', '__doc__', '__loader__', '__name__', '__package__', '__spec__', 'gg1', 'hh1', 'os']
```
Задать наименование переменной "73sr" не удалось, так как имя не может начинаться с цифры, а наименование "and" совпадает с ключевым словом.
Только переменные `gg1` и `hh1` получили свое название.
## 4. Изучение списка ключевых слов.
Просмотр ключевых слов.
```py
import keyword
keyword.kwlist
['False', 'None', 'True', 'and', 'as', 'assert', 'async', 'await', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'nonlocal', 'not', 'or', 'pass', 'raise', 'return', 'try', 'while', 'with', 'yield']
```
Сохранение в переменную `kw`.
```py
kw=keyword.kwlist
kw
['False', 'None', 'True', 'and', 'as', 'assert', 'async', 'await', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'nonlocal', 'not', 'or', 'pass', 'raise', 'return', 'try', 'while', 'with', 'yield']
```
## 5. Изучение списка встроенных идентификаторов.
Вывод списка встроенных идентификаторов.
```py
import builtins
dir(builtins)
['ArithmeticError', 'AssertionError', 'AttributeError', 'BaseException', 'BaseExceptionGroup', 'BlockingIOError', 'BrokenPipeError', 'BufferError', 'BytesWarning', 'ChildProcessError', 'ConnectionAbortedError', 'ConnectionError', 'ConnectionRefusedError', 'ConnectionResetError', 'DeprecationWarning', 'EOFError', 'Ellipsis', 'EncodingWarning', 'EnvironmentError', 'Exception', 'ExceptionGroup', 'False', 'FileExistsError', 'FileNotFoundError', 'FloatingPointError', 'FutureWarning', 'GeneratorExit', 'IOError', 'ImportError', 'ImportWarning', 'IndentationError', 'IndexError', 'InterruptedError', 'IsADirectoryError', 'KeyError', 'KeyboardInterrupt', 'LookupError', 'MemoryError', 'ModuleNotFoundError', 'NameError', 'None', 'NotADirectoryError', 'NotImplemented', 'NotImplementedError', 'OSError', 'OverflowError', 'PendingDeprecationWarning', 'PermissionError', 'ProcessLookupError', 'PythonFinalizationError', 'RecursionError', 'ReferenceError', 'ResourceWarning', 'RuntimeError', 'RuntimeWarning', 'StopAsyncIteration', 'StopIteration', 'SyntaxError', 'SyntaxWarning', 'SystemError', 'SystemExit', 'TabError', 'TimeoutError', 'True', 'TypeError', 'UnboundLocalError', 'UnicodeDecodeError', 'UnicodeEncodeError', 'UnicodeError', 'UnicodeTranslateError', 'UnicodeWarning', 'UserWarning', 'ValueError', 'Warning', 'WindowsError', 'ZeroDivisionError', '_', '_IncompleteInputError', '__build_class__', '__debug__', '__doc__', '__import__', '__loader__', '__name__', '__package__', '__spec__', 'abs', 'aiter', 'all', 'anext', 'any', 'ascii', 'bin', 'bool', 'breakpoint', 'bytearray', 'bytes', 'callable', 'chr', 'classmethod', 'compile', 'complex', 'copyright', 'credits', 'delattr', 'dict', 'dir', 'divmod', 'enumerate', 'eval', 'exec', 'exit', 'filter', 'float', 'format', 'frozenset', 'getattr', 'globals', 'hasattr', 'hash', 'help', 'hex', 'id', 'input', 'int', 'isinstance', 'issubclass', 'iter', 'len', 'license', 'list', 'locals', 'map', 'max', 'memoryview', 'min', 'next', 'object', 'oct', 'open', 'ord', 'pow', 'print', 'property', 'quit', 'range', 'repr', 'reversed', 'round', 'set', 'setattr', 'slice', 'sorted', 'staticmethod', 'str', 'sum', 'super', 'tuple', 'type', 'vars', 'zip']
```
Изучение некоторых встроенных функций с помощью команды `help()` (на примере `pow`)
```py
help(pow)
Help on built-in function pow in module builtins:
pow(base, exp, mod=None)
Equivalent to base**exp with 2 arguments or base**exp % mod with 3 arguments
Some types, such as ints, are able to use a more efficient algorithm when
invoked using the three argument form.
```
abs - возвращает абсолютное значение числа (модуль)
len - возвращает длину списка
max/min -возвращает максимальное/минимальное значения
pow - возводит число в степень
round - возвращает целое округленное значение
sorted - сортировка (по умолчанию - по возрастанию)
sum - суммирует значения
zip - объединяет аргументы в кортеж
Примеры
```py
len('ruchka')
6
pow(2,5)
32
round(3.7676)
4
sorted([12,3,1,0,111])
[0, 1, 3, 12, 111]
sum([0,1,2,3,4,5])
15
list(zip('abcd','efg'))
[('a', 'e'), ('b', 'f'), ('c', 'g')]
```
## 6. Разница регистров в именах переменных.
```py
Gg1=90
gg1,Gg1
(1.6, 90)
```
## 7.1 Логические переменные
Задание двух логических переменных, просмотр класса переменной и простейшие операции с логическими переменными
```py
bb1=True;bb2=False
bb1;bb2
True
False
bb1+bb2
1
bb1*bb2
0
type(bb1)
<class 'bool'>
```
## 7.2 Другие простые типы
```py
ii1=-1234567890
type(ii1)
<class 'int'>
```
Экспоненциальная форма записи вещественного числа
```py
ff1=-8.9876e-12
ff1
-8.9876e-12
type(ff1)
<class 'float'>
```
Двоичное число
```py
dv1=0b1101010
dv1
106
type(dv1)
<class 'int'>
```
Восьмеричное число
```py
vsm1=0o52765
vsm1;type(vsm1)
22005
<class 'int'>
```
Шестнадцатиричное число
```py
shest1=0x7109af6
shest1;type(shest1)
118528758
<class 'int'>
```
Комплексное число. Создание комплексного числа из двух вещественных
```py
cc1=2-3j
cc1;type(cc1)
(2-3j)
<class 'complex'>
a=3.76;b=-0.45
cc2=complex(a,b)
cc2;type(cc2)
(3.76-0.45j)
<class 'complex'>
```
## 7.3 Строка символов
Строки можно задавать как в одинарных, так и в двойных кавычках.
```py
ss1='Это -строка символов'
ss1="Это - строка символов"
ss1
'Это - строка символов'
```
Использование экранированных последовательностей
```py
ss1a="Это - \" строка символов \", \n \t выводимая на двух строках"
print(ss1a)
Это - " строка символов ",
выводимая на двух строках
```
Вывод ФИО
```py
ss1b= 'Меня зовут: \n Таболин И. А.'
print(ss1b)
Меня зовут:
Таболин И. А.
```
Многострочные строки, задаваемые тройными кавычками
```py
mnogo="""Нетрудно заметить, что в результате операции
над числами разных типов получается число,
имеющее более сложный тип из тех, которые учавствуют в операции"""
print(mnogo)
Нетрудно заметить, что в результате операции
над числами разных типов получается число,
имеющее более сложный тип из тех, которые учавствуют в операции
```
Обращение к частям строки символов с использованием индексов по их порядку, начиная с 0
При знаке "-" отсчёт идет от конца строки.
```py
ss1[0] # Это символ Э
'Э'
ss1[8] # Это символ р
'р'
ss1[-2] # это символ "о"
'о'
```
Операция «разрезания» или «создания среза», создающая новый объект
```py
ss1[0] # Это символ Э
'Э'
ss1[8] # Это символ р
'р'
ss1[-2] # это символ "о"
'о'
ss1[6:9] # часть строки с 6 по 8 символ, не включая 9-й
'стр'
ss1[13:] # символы с 13 и до конца
'символов'
ss1[:13] # символы с начала и до 12, не включая 13-й
'Это - строка '
ss1[5:-8] # символы с 5-го по 8-й с конца
' строка '
ss1[3:17:2] # символы с 3-го по 16 с шагом 2
' тоасм'
```
Символы с 3-го по 17 с шагом 2, но в обратном порядке
```py
ss1[17:3:-2]
'омсаот '
```
```py
ss1[-4:3:-2]
'омсаот '
```
Строка неизменяемый объект, его можно изменить тольк переопределением
```py
ss1[4]='='
Traceback (most recent call last):
File "<pyshell#95>", line 1, in <module>
ss1[4]='='
TypeError: 'str' object does not support item assignment
ss1=ss1[:4]+'='+ss1[5:]
ss1
'Это = строка символов'
```
Самостоятельно создал срез из `ss1b`
```py
ss1b;ss1b[-13:]
'Меня зовут: \n Таболин И. А.'
'Таболин И. А.'
print(ss1b,ss1b[-13:])
Меня зовут:
Таболин И. А. Таболин И. А.
print(ss1b,"\n",ss1b[-13:])
Меня зовут:
Таболин И. А.
Таболин И. А.
```
Самостоятельно создал переменные комплексного типа
```py
a=5.45;b=7.62
p_plus=complex(a,b);p_minus=complex(a,-b)
p_plus;p_minus
(5.45+7.62j)
(5.45-7.62j)
type(p_plus)
<class 'complex'>
```
## 8. Изучение списков, кортежей, словарей и множеств.
## 8.1 Списки.
Список - упорядоченная по местоположению коллекция объектов произвольных типов.
```py
spis1=[111,'Spisok',5-9j]
spis1
[111, 'Spisok', (5-9j)]
stup=[0,0,1,1,1,1,1,1,1]
stup
[0, 0, 1, 1, 1, 1, 1, 1, 1]
```
Ввод списка на нескольких строках
```py
spis=[1,2,3,4,
5,6,7,
8,9,10]
spis
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
```
При работе со списками индексы используются также как и при работе со строками
```py
spis[-1]
10
stup[-8::2]
[0, 1, 1, 1] # это часть списка начиная с 8-го с конца элемента до конца с шагом 2
stup
[0, 0, 1, 1, 1, 1, 1, 1, 1]
```
Изменение списка
```py
spis1
[111, 'Spisok', (5-9j)]
spis1[1]='Список'
spis1
[111, 'Список', (5-9j)]
```
Текущее число элементов в списке
```py
len(spis1)
3
```
Добавление элемента в конец списка
```py
spis1.append('New item 1')
spis1
[111, 'Список', (5-9j), 'New item 1']
spis1+['New item']
[111, 'Список', (5-9j), 'New item 1', 'New item']
```
Добавление строки `ss1b` в конец списка `spis1`
```py
print(ss1b)
Меня зовут:
Таболин И. А.
spis1.append(ss1b)
print(spis1)
[111, 'Список', (5-9j), 'New item 1', 'Меня зовут: \n Таболин И. А.']
```
Удаление элемента списка с индексом 1
```py
spis1.pop(1)
'Список'
spis1
[111, (5-9j), 'New item 1', 'Меня зовут: \n Таболин И. А.']
```
Команда `.insert` добавляет элемент в список перед элементом с указанным индексом
```py
spis1
[111, (5-9j), 'New item 1', 'Меня зовут: \n Таболин И. А.']
spis1.insert(2, '3')
spis1
[111, (5-9j), '3', 'New item 1', 'Меня зовут: \n Таболин И. А.']
```
Команда `.remove` удаляет только первый найденный элемент из списка
```py
spis1.remove(123)
Traceback (most recent call last):
File "<pyshell#20>", line 1, in <module>
spis1.remove(123)
ValueError: list.remove(x): x not in list
spis1.append(111)
spis1.remove(111)
spis1
[(5-9j), '3', 'New item 1', 'Меня зовут: \n Таболин И. А.', 111]
```
Команда `.extend` расширяет список
```py
spis1
[(5-9j), '3', 'New item 1', 'Меня зовут: \n Таболин И. А.', 111]
spis1.extend(['Hello','world','!'])
spis1
[(5-9j), '3', 'New item 1', 'Меня зовут: \n Таболин И. А.', 111, 'Hello', 'world', '!']
```
Сортировка элементов в списке с помощью `.sort` и удаление всех элементов списка с помощью `.clear`
```py
spis2=[0,1,2,44,55,67,100,80,5]
spis2
[0, 1, 2, 44, 55, 67, 100, 80, 5]
spis2.sort()
spis2
[0, 1, 2, 5, 44, 55, 67, 80, 100]
spis2.clear()
spis2
[]
```
Команда `.reverse` переставляет все элементы с последнего по первый
```py
spis1.reverse()
spis1
['!', 'world', 'Hello', 111, 'Меня зовут: \n Таболин И. А.', 'New item 1', '3', (5-9j)]
```
Команда `.copy` копирует список
```py
spis1_copy=spis1.copy()
spis1_copy
[(5-9j), '3', 'New item 1', 'Меня зовут: \n Таболин И. А.', 111, 'Hello', 'world', '!']
```
Команда `.count` возвращает количество элементов, совпадающих с аргументом
```py
spis1.count('3')
1
```
Команда `.index` возвращает индекс первого элемента, совпадающего с указанным
```py
spis1.append(111)
spis1
[(5-9j), '3', 'New item 1', 'Меня зовут: \n Таболин И. А.', 111, 'Hello', 'world', '!', 111]
spis1.index(111)
4
```
Вложенный список
```py
spis2=[spis1,'a','b']
spis2
[[(5-9j), '3', 'New item 1', 'Меня зовут: \n Таболин И. А.', 111, 'Hello', 'world', '!', 111], 'a', 'b']
```
Обращение к первому элементу первого списка
```py
spis2[0][0]
(5-9j)
```
Изменение элемента вложенного списка
```py
spis2[0][1]=78
spis2
[[(5-9j), 78, 'New item 1', 'Меня зовут: \n Таболин И. А.', 111, 'Hello', 'world', '!', 111], 'a', 'b']
```
Изменяется элемент не только вложенного списка, но и элемент изначального списка. Чтобы этого избежать, необходимо использовать копию списка.
Создание своего списка
```py
my_spis=[(2-9j),True, 20, 'Ivan']
my_spis
[(2-9j), True, 20, 'Ivan']
my_spis=[my_spis, '23','02','2005']
my_spis
[[(2-9j), True, 20, 'Ivan'], '23', '02', '2005']
```
## Объект - кортеж
Создание и переопределение кортежа
```py
kort1=(222,'Kortezh',77+8j)
kort1= kort1+(1,2)
kort1
(222, 'Kortezh', (77+8j), 1, 2)
ss1b='Меня зовут: \n Таболин И. А.'
kort1= kort1+(ss1b,)
kort1
(222, 'Kortezh', (77+8j), 1, 2, 'Меня зовут: \n Таболин И. А.')
kort2=kort1[:2]+kort1[3:]
kort2
(222, 'Kortezh', 1, 2, 'Меня зовут: \n Таболин И. А.')
```
Подсчёт значениё в кортеже
```py
kort1.index(2)
4
kort1.count(222)
1
```
Кортежи невозможно изменять
```py
kort1[2]=90
Traceback (most recent call last):
File "<pyshell#13>", line 1, in <module>
kort1[2]=90
TypeError: 'tuple' object does not support item assignment
```
Создание своего кортежа
```py
my_kort=(123,'Python',[0,1,2,3],(456, 'stroka'))
my_kort
(123, 'Python', [0, 1, 2, 3], (456, 'stroka'))
```
## Изучение объекта-словаря
Создание словаря и обращение к его элементу
```py
dic1={'Saratov':145, 'Orel':56, 'Vologda':45}
dic1
{'Saratov': 145, 'Orel': 56, 'Vologda': 45}
dic1['Orel']
56
```
Пополнение словаря
```py
dic1['Pskov']=78
dic1
{'Saratov': 145, 'Orel': 56, 'Vologda': 45, 'Pskov': 78}
```
Сортировка словаря по ключам или по значениям
```py
sorted(dic1.keys())
['Orel', 'Pskov', 'Saratov', 'Vologda']
sorted(dic1.values())
[45, 56, 78, 145]
```
Создание словаря, два элемента которого являются словарями, и обращение к одному из элементов
```py
dic2={1:'mean',2:'standart deviation',3:'correlation'}
dic3={'statistics':dic2,'POAS':['base','elementary','programming']}
dic2;dic3
{1: 'mean', 2: 'standart deviation', 3: 'correlation'}
{'statistics': {1: 'mean', 2: 'standart deviation', 3: 'correlation'}, 'POAS': ['base', 'elementary', 'programming']}
dic3['statistics'][2]
'standart deviation'
```
Создание словаря с использованием dict
```py
dic4=dict([(1,['A','B','C']),(2,[4,5]),('Q','Prim'),('Stroka',ss1b)])
dic4
{1: ['A', 'B', 'C'], 2: [4, 5], 'Q': 'Prim', 'Stroka': 'Меня зовут: \n Таболин И. А.'}
```
Создание словаря с использованием dict и zip
```py
dic5=dict(zip(['A','B','C','Stroka'],[16,-3,9,ss1b]))
dic5
{'A': 16, 'B': -3, 'C': 9, 'Stroka': 'Меня зовут: \n Таболин И. А.'}
```
Создание своего словаря
```py
my_slov_kort=('game','football','computer','university','dictionary','english','russian')
my_slov_spis=['игра','футбол','компьютер','университет','словарь']
my_dictionary=dict(zip(my_slov_kort,my_slov_spis))
my_dictionary
{'game': 'игра', 'football': 'футбол', 'computer': 'компьютер', 'university': 'университет', 'dictionary': 'словарь'}
```
Словарь с обучающимися ИВТИ
```py
AVTI={'Курс I':[22,23,17,24,30,29,28,25,23,0,4,31,30,33,18,12,27],'Курс II':[18,16,12,15,29,18,21,23,13,0,4,20,31,26,16,], 'Курс III':[17,12,0,6,17,15,19,19,0,0,5,17,22,18,12], 'Курс IV':[27,16,0,13,17,15,19,20,0,0,2,15,18,16,17]}
AVTI[' Курс III '][5]
AVTI['Курс III'][5]
15
```
## 8.4 Изучение объектов-множеств
Создание множества, определение числа элементов, проверка наличия элемента, добавление элемента и удаление элемента
```py
mnoz1={'двигатель','датчик','линия связи','датчик','микропроцессор','двигатель'}
len(mnoz1)
4
'датчик' in mnoz1
True
mnoz1.add('реле')
mnoz1.remove('линия связи')
```
Создание своего множества и работа с ним
```py
my_mnoz={1,2,3,4,5,67,8}
my_mnoz
{1, 2, 3, 4, 5, 67, 8}
67 in my_mnoz
True
my_mnoz.remove(67)
my_mnoz.remove(8)
my_mnoz.add(6)
my_mnoz.add(7)
my_mnoz.add(8)
my_mnoz
{1, 2, 3, 4, 5, 6, 7, 8}
```

@ -0,0 +1,29 @@
# Общее контрольное задание по Теме 2
Таболин Иван А-01-23
## Задание
Реализовать, записать в текстовый файл и проанализировать результаты последовательности инструкций
```py
familia='Tabolin'
fl=familia[0]
fl
'T'
import keyword
sp_kw=keyword.kwlist
sp_kw
['False', 'None', 'True', 'and', 'as', 'assert', 'async', 'await', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'nonlocal', 'not', 'or', 'pass', 'raise', 'return', 'try', 'while', 'with', 'yield']
sp_kw.remove('nonlocal')
'nonlocal' in sp_kw
False
kort_nam=('Ivan','Dmitriy','Victor','Alexander')
type(kort_nam)
<class 'tuple'>
kort_nam=('Ivan','Dmitriy','Victor','Alexander')
kort_nam=kort_nam+('Daniil', 'Nikita')
kort_nam
('Ivan', 'Dmitriy', 'Victor', 'Alexander', 'Daniil', 'Nikita')
kort_nam.count('Dmitriy')
1
dict_bas={'строка':familia,'список':sp_kw,'кортеж':kort_nam}
dict_bas
{'строка': 'Tabolin', 'список': ['False', 'None', 'True', 'and', 'as', 'assert', 'async', 'await', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'not', 'or', 'pass', 'raise', 'return', 'try', 'while', 'with', 'yield'], 'кортеж': ('Ivan', 'Dmitriy', 'Victor', 'Alexander', 'Daniil', 'Nikita')}
```

@ -0,0 +1,17 @@
# Индивидуальное контрольное задание по Теме 2
Таболин Иван, А-01-23
## Задание
Пусть создан объект
`dd=[11,2,-4,23,12,56]`
К какому классу относится этот объект? Как расположить его элементы в порядке убывания?
## Решение
Объект `dd` относится к классу списков. Расположить объекты в порядке убывания можно с помощью метода `.sort`, указав аргумент `reverse=True`
```py
dd=[11,2,-4,23,12,56];dd
[11, 2, -4, 23, 12, 56]
type(dd)
<class 'list'>
dd1=dd.copy()
dd1.sort(reverse=True);dd1
[56, 23, 12, 11, 2, -4]
```

@ -0,0 +1,727 @@
# Отчёт по Теме 3
Таболин Иван А-01-23
## 1. Запуск и настройка
Запустил IDLE и выполнил начальную настройку, установив рабочий каталог.
```py
import os
os.chdir('C:\\Users\\User\\Desktop\\python-labs\\TEMA3')
```
## 2. Преобразование простых базовых типов объектов
## 2.1. Преобразование в логический тип
Функция bool() преобразует элемент в логическую переменную
```py
logiz1=bool(56);logiz1
True
logiz2=bool(0);logiz2
False
logiz3=bool("Beta");logiz3
True
logiz4=bool("");logiz4
False
```
## 2.2. Преобразование в целое десятичное число объекта с заданной системой счисления с помощью функции int()
```py
tt1=int(198.6);tt1
198
tt2=int("-76");tt2
-76
tt3=int("B",16);tt3
11
tt4=int("71",8);tt4
57
tt5=int("98.76");tt5
Traceback (most recent call last):
File "<pyshell#13>", line 1, in <module>
tt5=int("98.76");tt5
ValueError: invalid literal for int() with base 10: '98.76'
```
Преобразование целых чисел или строк в вещественное число с помощью float()
```py
flt1=float(789);flt1
789.0
flt2=float(-6.78e2);flt2
-678.0
flt3=float("Infinity");flt3
inf
flt4=float("-inf");flt4
-inf
```
## 2.3. Преобразование десятичных чисел в другие СС
Преобразования в двоичную систему с помощью bin(), в восьмеричную систему с помощью oct(), в шестнадцатиричную систему с помощью hex()
```py
hh=123
dv1=bin(hh);dv1
'0b1111011'
vos1=oct(hh);vos1
'0o173'
shs1=hex(hh);shs1
'0x7b'
```
Обратное преобразования
```py
int(dv1)
Traceback (most recent call last):
File "<pyshell#25>", line 1, in <module>
int(dv1)
ValueError: invalid literal for int() with base 10: '0b1111011'
int(vos1)
Traceback (most recent call last):
File "<pyshell#26>", line 1, in <module>
int(vos1)
ValueError: invalid literal for int() with base 10: '0o173'
int(shs1)
Traceback (most recent call last):
File "<pyshell#27>", line 1, in <module>
int(shs1)
ValueError: invalid literal for int() with base 10: '0x7b'
```
## 3. Изучение преобразований более сложных базовых типов объектов
## 3.1. Преобразование в строку
Преобразование в строку символов осуществляется функцией str()
```py
strk1=str(23.6);strk1
'23.6'
strk2=str(logiz3)
strk2
'True'
strk3=str(["A","B","C"]);strk3
"['A', 'B', 'C']"
strk4=str(("A","B","C"));strk4
"('A', 'B', 'C')"
strk5=str({"A":1,"B":2,"C":3});strk5
"{'A': 1, 'B': 2, 'C': 3}"
```
## 3.2. Преобразование в список
Преобразование в список осуществляется функцией list()
```py
spis1=list("Строка символов");spis1
['С', 'т', 'р', 'о', 'к', 'а', ' ', 'с', 'и', 'м', 'в', 'о', 'л', 'о', 'в']
spis2=list((124,236,-15,908));spis2
[124, 236, -15, 908]
spis3=list({"A":1,"B":2,"C":9});spis3
['A', 'B', 'C']
```
Чтобы в список попадали не ключи, а сами значения из словаря, необходимо дополнить аргумент функции:
```py
spis4=list({"A":1,"B":2,"C":9}.values());spis4
[1, 2, 9]
```
## 3.3. Преобразование в кортеж
Преобразование в кортеж осуществляется функцией tuple()
```py
kort7=tuple("Строка символов");kort7
('С', 'т', 'р', 'о', 'к', 'а', ' ', 'с', 'и', 'м', 'в', 'о', 'л', 'о', 'в')
kort8=tuple(spis2);kort8
(124, 236, -15, 908)
kort9=tuple({"A":1,"B":2,"C":9});kort9
('A', 'B', 'C')
kort99=tuple({"A":1,"B":2,"C":9}.values());kort99
(1, 2, 9)
```
## 3.4. Удаление объектов
Удаление объектов производится с помощью инструкции `del`
```py
del strk5, kort8
dir()
['__annotations__', '__builtins__', '__doc__', '__loader__', '__name__', '__package__', '__spec__', 'dv1', 'flt1', 'flt2', 'flt3', 'flt4', 'hh', 'kort1', 'kort7', 'kort9', 'kort99', 'logiz1', 'logiz2', 'logiz3', 'logiz4', 'os', 'shs1', 'spis1', 'spis2', 'spis3', 'spis4', 'strk1', 'strk2', 'strk3', 'strk4', 'tt1', 'tt2', 'tt3', 'tt4', 'tt6', 'vos1']
```
Создание строки с фамилией и инициалами и последующие преобразования: строка -> список -> кортеж -> строка
```py
my_name="TabolinIA"
my_name_spis=list(my_name);my_name_spis
['T', 'a', 'b', 'o', 'l', 'i', 'n', 'I', 'A']
my_name_kort=tuple(my_name_spis);my_name_kort
('T', 'a', 'b', 'o', 'l', 'i', 'n', 'I', 'A')
my_name_str=str(my_name_kort);my_name_str
"('T', 'a', 'b', 'o', 'l', 'i', 'n', 'I', 'A')"
my_name==my_name_str
False
```
## 4. Арифметические операции
## 4.1. Сложение и вычитание
```py
12+7+90
109
5.689e-1-0.456
0.11289999999999994
23.6+54
77.6
14-56.7+89
46.3
```
## 4.2. Умножение
```py
-6.7*12
-80.4
```
## 4.3. Деление
```py
-234.5/6
-39.083333333333336
a=178/45
a;type(a)
3.9555555555555557
<class 'float'>
b=25/5;b;type(b)
5.0
<class 'float'>
```
Результат деления - всегда вещественное число
## 4.4. Деление с округлением вниз
```py
b=178//45
b
3
c=-24.6//12.1;c
-3.0
c1=-24.6/12.1;c1
-2.0330578512396698
type(b)
<class 'int'>
type(c)
<class 'float'>
```
```py
c2=12/3.99999
c2;type(c2)
3.00000750001875
<class 'float'>
c2=12//3.99999
c2;type(c2)
3.0
<class 'float'>
c3=12.000001//4;c3;type(c3)
3.0
<class 'float'>
c4=12//4;c4;type(c4)
3
<class 'int'>
c5=12//5;c5;type(c5)
2
<class 'int'>
```
Если хотя бы один элемент в выражении является вещественным числом, результат будет вещественным.
## 4.5. Получение остатка от деления
```py
148%33
16
12.6%3.8
1.2000000000000002
12%4
0
12%0
Traceback (most recent call last):
File "<pyshell#79>", line 1, in <module>
12%0
ZeroDivisionError: integer modulo by zero
2.5%1
0.5
2.5%0.5
0.0
5%1.5
0.5
```
## 4.6. Возведение в степень
```py
14**3
2744
e=2.7**3.6;e
35.719843790663525
2**2.5
5.656854249492381
2.5**2
6.25
True**4
1
0**2
0
2**0
1
-12**2
-144
(-12)**2
144
```
Операции с комплексными числами
```py
compl1=(2-3j)
type(compl1)
<class 'complex'>
compl2=(3+5j)
sum_compl=compl1+compl2
sum_compl
(5+2j)
razn_compl=compl2-compl1
razn_compl
(1+8j)
proizved_compl=compl1*compl2;proizved_compl
(21+1j)
del_compl=compl2/compl1
del_compl
(-0.6923076923076924+1.4615384615384617j)
compl1//compl2
Traceback (most recent call last):
File "<pyshell#95>", line 1, in <module>
compl1//compl2
TypeError: unsupported operand type(s) for //: 'complex' and 'complex'
compl1//2
Traceback (most recent call last):
File "<pyshell#96>", line 1, in <module>
compl1//2
TypeError: unsupported operand type(s) for //: 'complex' and 'int'
2//compl1
Traceback (most recent call last):
File "<pyshell#97>", line 1, in <module>
2//compl1
TypeError: unsupported operand type(s) for //: 'int' and 'complex'
0.5//compl1
Traceback (most recent call last):
File "<pyshell#98>", line 1, in <module>
0.5//compl1
TypeError: unsupported operand type(s) for //: 'float' and 'complex'
compl1%compl2
Traceback (most recent call last):
File "<pyshell#99>", line 1, in <module>
compl1%compl2
TypeError: unsupported operand type(s) for %: 'complex' and 'complex'
```
Такие операции как сложение, вычитание, умножение и деление можно производить с комплексными числами, но операции целочисленного деления и взятия остатка от деления производить с комплексными числами нельзя.
## 5. Операции с двоичными представлениями целых чисел
## 5.1. Двоичная инверсия
Двоичная инверсия - значение каждого бита в представлении числа заменяется на противоположное с помощью `=~`
```py
dv1=9
dv2=~dv1
bin(dv1);bin(dv2)
'0b1001'
'-0b1010'
dv1;dv2
9
-10
```
Двоичная инверсия - это не только смена "1" на "0", а "0" на "1", но и смена знака. Это связано с тем, что двоичные числа представлены "по кругу".
9 -> -(9+1), то есть n -> -(n+1)
## 5.2 Двоичное И
Побитовое совпадение двоичных прдставлений чисел
```py
7&9
1
bin(7);bin(9);bin(7&9)
'0b111'
'0b1001'
'0b1'
7&8
0
bin(7);bin(8);bin(7&8)
'0b111'
'0b1000'
'0b0'
bin(7);bin(12);bin(7&12)
'0b111'
'0b1100'
'0b100'
int("0100",2)
4
```
## 5.3. Двоичное ИЛИ
Побитовое сравнение двоичных представлений чисел
```py
7|9;bin(7);bin(9);bin(7|9)
15
'0b111'
'0b1001'
'0b1111'
7|8;bin(7);bin(8);bin(7|8)
15
'0b111'
'0b1000'
'0b1111'
14|5;bin(14);bin(5);bin(14|5)
15
'0b1110'
'0b101'
'0b1111'
10|8;bin(10);bin(8);bin(10|8)
10
'0b1010'
'0b1000'
'0b1010'
```
## 5.4. Двоичное исключающее ИЛИ
Побитовое сравнение двоичных представлений чисел, "0" получается только если оба сравниваемых разряда имеют одинаковые значения.
```py
14^5;bin(14);bin(5);bin(14^5)
11
'0b1110'
'0b101'
'0b1011'
```
## 5.5. Сдвиг двоичного представления числа
Сдвиг двоичного представления числа на заданное число разрядов влево (<<) или вправо (>>) с дополнением нулями
```py
h=14;g=h<<2;bin(h);bin(g)
'0b1110'
'0b111000'
g1=h>>1;bin(h);bin(g1)
'0b1110'
'0b111'
g2=h>>2;bin(h);bin(g2)
'0b1110'
'0b11'
```
```py
dv3=int("100100101",2);dv4=int("101010101",2)
dv5=~dv3;dv5;bin(dv3);bin(dv5)
-294
'0b100100101'
'-0b100100110'
dv3&dv4;bin(dv3);bin(dv4);bin(dv3&dv4)
261
'0b100100101'
'0b101010101'
'0b100000101'
dv3|dv4;bin(dv3);bin(dv4);bin(dv3|dv4)
373
'0b100100101'
'0b101010101'
'0b101110101'
dv3^dv4;bin(dv3);bin(dv4);bin(dv3^dv4)
112
'0b100100101'
'0b101010101'
'0b1110000'
g3=dv3<<2;bin(dv3);bin(g3)
'0b100100101'
'0b10010010100'
g3
1172
g4=dv4>>3;bin(dv4);bin(g4);g4
'0b101010101'
'0b101010'
42
```
## 6. Операции при работе с последовательностями
## 6.1. Объединение последовательностей
Соединение двух строк, объединение двух списков, двух кортежей
```py
'Система'+'регулирования'
'Системарегулирования'
['abc','de','fg']+['hi','jkl']
['abc', 'de', 'fg', 'hi', 'jkl']
('abc','de','fg')+('hi','jkl')
('abc', 'de', 'fg', 'hi', 'jkl')
```
## 6.2. Повторение
```py
'ля-'*5
'ля-ля-ля-ля-ля-'
['ку','-']*3
['ку', '-', 'ку', '-', 'ку', '-']
signal1=[0]*3+[1]*99;signal1
[0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]
signal2=(0,)*3+(1,)*5+(0,)*7;signal2
(0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0)
```
## 6.3. Проверка наличия заданного элемента в последовательности
```py
stroka='Система автоматического управления'
'автомат' in stroka
True
'ку' in ['ку','-']*3
True
'ля-' in ('abc','de','fg','hi','jkl')
False
```
## 6.4. Подстановка значений в строку
Подстановка значений в строку выполняется с помощью оператора `%`
```py
stroka='Температура = %g %s %g'
stroka % (16, ' меньше ',25)
'Температура = 16 меньше 25'
stroka='Температура = %(zn1)g %(sravn)s %(zn2)g'
stroka % {'zn1':16,'sravn':' меньше ','zn2':25}
'Температура = 16 меньше 25'
```
## 7. Оператор присваивания
## 7.1. Обычное присваивание
Обычное присваивание значения переменной выполняется с помощью `=`
```py
zz=-12
```
## 7.2. Увеличение значения переменной на заданную величину
`+=` увеличивает переменную, а `-=` - уменьшает
```py
zz+=5;zz
-7
zz-=3;zz
-10
```
Для последовательностей эта операция означает конкатенацию
```py
stroka='Система'
stroka+='регулирования'
stroka
'Системарегулирования'
```
## 7.3. Умножение текущего значения
Умножение текущего значения переменной на заданную величину с помощью `*=` или умножение с помощью `/=`
```py
zz/=2;zz
-5.0
zz*=-5;zz
25.0
```
Для строк операция `*=` означает повторение текущего значения объекта заданное число раз
```py
str1='ля-'
str1*=5;str1=str1[:-1];str1
'ля-ля-ля-ля-ля'
```
## 7.4. Операции деления с округлением вниз, получения остатка от деления и возведения в степень
Деление с округлением вниз осуществляется с помощью `//=`, получение остатка от деления - `%=`, возведение в степень `**=`
```py
n1=10
n1//=3
n1
3
n1%=2;n1
1
n1=3;n1**=3;n1
27
```
## 7.5. Множественное присваивание
```py
w=v=10;w;v
10
10
n1,n2,n3=(11,-3,'all');n1,n2,n3
(11, -3, 'all')
n1,n2,n3=(11,-3,'Строка символов');n1;n2;n3
11
-3
'Строка символов'
n1,n2,n3=(11,-3,[-1,-2,-3,-4,-5]);n1;n2;n3
11
-3
[-1, -2, -3, -4, -5]
n1,n2,n3=(11,-3,{'A':1,"B":2,"C":3});n1;n2;n3
11
-3
{'A': 1, 'B': 2, 'C': 3}
```
## 8. Логические операции
Операции при создании логических выражений, дающих в результате вычисления значения True или False
## 8.1. Операции равенства, не равно, меньше, больше, меньше или равно, больше или равно
```py
w,v
(10, 10)
w==v
True
w!=v
False
w<v
False
w>v
False
w<=v
True
w>=v
True
5>8
False
(1+5j)>(-1-5j)
Traceback (most recent call last):
File "<pyshell#90>", line 1, in <module>
(1+5j)>(-1-5j)
TypeError: '>' not supported between instances of 'complex' and 'complex'
```
## 8.2. Проверка наличия заданного элемента в последовательности или во множестве, проверка наличия ключа в словаре
Проверка наличия выполняется с помощью `in`
```py
mnoz1={'pen','book','pen','iPhone','table','book'}
'book'in mnoz1
True
'cap' in mnoz1
False
dic1={'Saratov':145,'Orel':56,'Vologda':45}
'Vologda' in dic1
True
'Pskov' in dic1
False
56 in dic1.values()
True
dct1={'Institut':['AVTI','IEE','IBB'],'Depart':['UII','PM','VMSS','MM'],'gruppa': ['A-01-15','A-02-15']}
dct1
{'Institut': ['AVTI', 'IEE', 'IBB'], 'Depart': ['UII', 'PM', 'VMSS', 'MM'], 'gruppa': ['A-01-15', 'A-02-15']}
'UII' in dct1['Depart']
True
dct1['Depart'][1]=='MM'
False
dct1['Depart'][3]=='MM'
True
```
## 8.3. Создание больших логических выражений с использованием соединительных слов
Логическое "И", логическое "ИЛИ", логическое "НЕ"
```py
a=17;b=-6
(a>=b)and('book' in mnoz1) and not ('Pskov' in dic1)
True
not (b>a) and (12==12) or not('pen' in mnoz1)
True
(('abc'=='def') or ('123'=='1234')) and ('1' in '0123')
False
```
## Проверка ссылок переменных на один и тот же объект
Выполняется с помощью `is`
```py
w=v=10
w is v
True
w1=['A','B']
v1=['A','B']
w1 is v1
False
w1==v1
True
```
Так как переменные `w` и `v` были созданы вместе в одну строку, они имеют не только одно и то же значение, но и ссылаются на один и тот же участок памяти.
Списки `w1` и `v1` же созданы в разных строках и ссылаются на разные частки памяти, несмотря на одинаковое содержимое.
## Операции с объектами, выполняемые с помощью методов
Получение списка атрибутов объекта с помощью `dir()`
```py
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']
```
## 9.1. Методы для работы со строками
```py
stroka.find('пр') # возвращает номер позиции первого вхождения указанного контекста
5
stroka.count("с") # подсчет числа вхождений строки “с” в stroka
4
stroka.replace(' у',' автоматического у') # замена ` у` на ` автоматического у`
'Микропроцессорная система автоматического управления'
spis22=stroka.split(' ') # возвращает список подстрок, между которыми в строке стоит заданный разделитель
spis22
['Микропроцессорная', 'система', 'управления']
stroka.upper() # возвращает строку со всеми заглавными буквами
'МИКРОПРОЦЕССОРНАЯ СИСТЕМА УПРАВЛЕНИЯ'
stroka3=" ".join(spis22) # возвращает строку, собранную из элементов списка
stroka3
'Микропроцессорная система управления'
stroka3.partition("с") # возвращает кортеж с результатами поиска «с» слева
('Микропроце', 'с', 'сорная система управления')
stroka3.rpartition("с") # возвращает кортеж с результатами поиска «с» справа
('Микропроцессорная си', 'с', 'тема управления')
```
Метод `.format` используется, когда нобходимо в символьную строку подставить значения некоторых объектов
```py
strk1='Момент времени {}, значение = {}'
strk1.format(1,89.7)
'Момент времени 1, значение = 89.7'
strk2='Момент времени {1}, значение = {0}:{2}'
strk2.format(36.7,2,'норма!')
'Момент времени 2, значение = 36.7:норма!'
strk3='Момент времени {num}, значение = {znch}'
strk3.format(znch=89.7,num=2)
'Момент времени 2, значение = 89.7'
```
## 9.2. Методы для работы со списками
```py
spsk=['Apple','Banana','Watermelon','Pineapple','Orange']
dir(spsk)
['__add__', '__class__', '__class_getitem__', '__contains__', '__delattr__', '__delitem__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__getstate__', '__gt__', '__hash__', '__iadd__', '__imul__', '__init__', '__init_subclass__', '__iter__', '__le__', '__len__', '__lt__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__reversed__', '__rmul__', '__setattr__', '__setitem__', '__sizeof__', '__str__', '__subclasshook__', 'append', 'clear', 'copy', 'count', 'extend', 'index', 'insert', 'pop', 'remove', 'reverse', 'sort']
spsk.pop(2)
'Watermelon'
spsk.append('c')
spsk
['Apple', 'Banana', 'Pineapple', 'Orange', 'c']
spsk.insert(2,'a')
spsk
['Apple', 'Banana', 'a', 'Pineapple', 'Orange', 'c']
spsk.count('a')
1
```
Операция `.pop` удаляет из списка первый найденный элемент, который соответствует указанному контексту.
Операция `append` добавляет указанный элемент в конец списка.
Операция `insert` добавляет указанный элемент перед элементом с указанным индексом.
Операция `count` подсчитывает количество указанных элементов в списке.
## 9.3. Методы кортежей
```py
kort1=('Tabolin','Berezhkov','Krishtul','Filippov','Timchenko','Volodin')
dir(kort1)
['__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']
kort1.count('Tabolin')
1
kort1.index('Berezhkov')
1
```
## 9.4. Методы словарей и множеств
```py
dict1={"A":1,"B":2,"C":3}
dir(dict1)
['__class__', '__class_getitem__', '__contains__', '__delattr__', '__delitem__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__getstate__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__ior__', '__iter__', '__le__', '__len__', '__lt__', '__ne__', '__new__', '__or__', '__reduce__', '__reduce_ex__', '__repr__', '__reversed__', '__ror__', '__setattr__', '__setitem__', '__sizeof__', '__str__', '__subclasshook__', 'clear', 'copy', 'fromkeys', 'get', 'items', 'keys', 'pop', 'popitem', 'setdefault', 'update', 'values']
dict2=dict1.copy()
dict2
{'A': 1, 'B': 2, 'C': 3}
dict1.get('A')
1
```
```py
mnoz1={'A','B','C','D'}
mnoz1.add('F')
mnoz1
{'A', 'D', 'F', 'C', 'B'}
mnoz1.remove('F')
mnoz1
{'A', 'D', 'C', 'B'}
mnoz2=mnoz1.copy()
mnoz1;mnoz2
{'A', 'D', 'C', 'B'}
{'A', 'B', 'C', 'D'}
```

@ -0,0 +1,56 @@
# Общее контрольное задание по Теме 3
Таболин Иван, А-01-23
## Задание
Реализовать, записать в текстовый файл и проанализировать результаты последовательности ин-струкций, выполняющих следующие действия:
• Преобразовать восьмеричное значение 45 в целое число.
• Создать объект-словарь D со значениями {"усиление":23, "запаздывание":12, "постоянная време-ни":78} и затем осуществить его преобразование в два списка: ключей и значений, а затем – эти два списка преобразовать в один кортеж. Чем отличается кортеж от списка?
• Напишите и выполните единое выражение, осуществляющее деление числа 1768 на 24.8 с округ-лением вниз, с определением после этого остатка от деления получившегося значения на 3 и затем возведения результата в степень 2.4.
• Напишите и выполните единое выражение, последовательно осуществляющее следующие опера-ции: двоичное И для чисел 13 и 27, инверсия полученного значения, двоичное исключающее ИЛИ для полученного значения и числа 14, сдвиг полученного значения на два разряда влево.
• Создать список с 4 одинаковыми элементами 'колебат' и написать оператор проверки наличия комбинации символов 'аткол' в результате конкатенации второго и третьего элементов этого спи-ска.
• Определить список методов, доступных у ранее созданного словаря D. Поочередно использовать его методы keys и values, определить, что можно получить с применением этих методов.
• Создать объект - символьную строку с текстом данного предложения. Из символьной строки соз-дать список, элементами которого будут отдельные слова из созданной строки. Заменить в списке элемент «-» на «,». Удалить из списка элемент со значением «данного». Отобразить получившийся список.
## Решение
```py
import os
os.chdir('C:\\Users\\User\\Desktop\\python-labs\\TEMA3')
int('45',8)
37
D={"усиление":23,"запаздывание":12,"постоянная времени":78}
spis_keys=list(D);spis_keys
['усиление', 'запаздывание', 'постоянная времени']
spis_znach=list(D.values());spis_znach
[23, 12, 78]
kort1=tuple(spis_keys)
kort2=tuple(spis_znach)
kort=kort1+kort2
kort
('усиление', 'запаздывание', 'постоянная времени', 23, 12, 78)
```
Кортеж отличается от списка тем, что его нельзя изменять
```py
((1768//24.8)%3)**2.4
5.278031643091577
(~(13&27)^14)<<2
-32
spis1=['колебат']*4
'аткол' in spis1[1]+spis1[2]
True
dir(D)
['__class__', '__class_getitem__', '__contains__', '__delattr__', '__delitem__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__getstate__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__ior__', '__iter__', '__le__', '__len__', '__lt__', '__ne__', '__new__', '__or__', '__reduce__', '__reduce_ex__', '__repr__', '__reversed__', '__ror__', '__setattr__', '__setitem__', '__sizeof__', '__str__', '__subclasshook__', 'clear', 'copy', 'fromkeys', 'get', 'items', 'keys', 'pop', 'popitem', 'setdefault', 'update', 'values']
```
```py
D.keys()
dict_keys(['усиление', 'запаздывание', 'постоянная времени'])
D.values()
dict_values([23, 12, 78])
```
С помощью `keys` можно получить ключи словаря, а с помощью `values` - значения.
```py
str1='Создать объект - символьную строку с текстом данного предложения.'
spis2=str1.split(); spis2
['Создать', 'объект', '-', 'символьную', 'строку', 'с', 'текстом', 'данного', 'предложения.']
spis2[spis2.index('-')]=','; spis2
['Создать', 'объект', ',', 'символьную', 'строку', 'с', 'текстом', 'данного', 'предложения.']
spis2.remove('данного'); spis2
['Создать', 'объект', ',', 'символьную', 'строку', 'с', 'текстом', 'предложения.']
```

@ -0,0 +1,76 @@
# Индивидуальное контрольное задание по Теме 3
Таболин Иван, А-01-23
Вариант 4
## Задание
M1_4
1) Как установить рабочий (текущий) каталог в среде? Какую пользу можно получить от такой установки?
2) Напишите инструкции, обеспечивающие подсчет числа букв (без запятой, скобок и пробелов) в данном предложении. Отобразите результат с использованием формата по шаблону: " в предложении ХХ букв".
3) Создайте числовой объект со значением 2345. Поочередно представьте и отобразите на экране это число в двоичном, восьмеричном и шестнадцатеричном виде. Определите класс созданного объекта и отобразите список его атрибутов. Напишите инструкцию определения числа разрядов в двоичном представлении числа.
4) Создайте объект со значением {-45,78,90,-3,56}. Определите класс этого объекта. Атрибуты объекта запишите в объект-кортеж. Напишите инструкцию, позволяющую проверить наличие метода clear у этого кортежа.
5) Подсчитайте сумму элементов в объекте, созданном в п.4. Отобразите результат по шаблону: "Сумма элементов=ХХХ".
## Решение
1) Рабочий каталог устанавливается следующим образом:
```py
import os
os.chdir('')
```
Внутри кавычек указывается путь к рабочему каталогу.
Польза установки рабочего каталога заключается в том, что можно не указывать путь к файлам, находящимся в этом же каталоге.
2)
```py
str1='Напишите инструкции, обеспечивающие подсчет числа букв (без запятой, скобок и пробелов) в данном предложении.';str1
'Напишите инструкции, обеспечивающие подсчет числа букв (без запятой, скобок и пробелов) в данном предложении.'
str1=str1.replace(' ','');str1=str1.replace(',','');str1=str1.replace('.','');str1=str1.replace('(','');str1=str1.replace(')','')
str1
'Напишитеинструкцииобеспечивающиеподсчетчислабуквбеззапятойскобокипробеловвданномпредложении'
l=len(str1);l
91
out='В предложении %d букв'
print(out % l)
В предложении 91 букв
```
3)
```py
n10=2345
n2=bin(n10);n2;type(n2);dir(n2)
'0b100100101001'
<class 'str'>
['__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']
kol_razr=len(bin(n10)) - 2; kol_razr
12
n8=oct(n10);n8;type(n8);dir(n8)
'0o4451'
<class 'str'>
['__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']
n16=hex(n10);n16;type(n16);dir(n16)
'0x929'
<class 'str'>
['__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']
```
4)
```py
mnoz1={-45,78,90,-3,56}
type(mnoz1);dir(mnoz1)
<class 'set'>
['__and__', '__class__', '__class_getitem__', '__contains__', '__delattr__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getstate__', '__gt__', '__hash__', '__iand__', '__init__', '__init_subclass__', '__ior__', '__isub__', '__iter__', '__ixor__', '__le__', '__len__', '__lt__', '__ne__', '__new__', '__or__', '__rand__', '__reduce__', '__reduce_ex__', '__repr__', '__ror__', '__rsub__', '__rxor__', '__setattr__', '__sizeof__', '__str__', '__sub__', '__subclasshook__', '__xor__', 'add', 'clear', 'copy', 'difference', 'difference_update', 'discard', 'intersection', 'intersection_update', 'isdisjoint', 'issubset', 'issuperset', 'pop', 'remove', 'symmetric_difference', 'symmetric_difference_update', 'union', 'update']
attr=tuple(dir(mnoz1))
'clear' in dir(attr)
False
```
5)
```py
s = sum(mnoz1);s
176
out2='Сумма элементов=%g'
print(out % s)
В предложении 176 букв
```

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

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

После

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

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

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

После

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

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

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

После

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

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

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

После

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

@ -0,0 +1,383 @@
# Отчёт по Теме 4
Таболин Иван А-01-23
## 1. Запуск IDLE и начальная настройка
Запустил и настроил оболочку IDLE, создал файл отчёта и оформил его оглавление. Сохранил файл отчёта.
```py
import os
os.chdir('C:\\Users\\User\\Desktop\\python-labs\\TEMA4')
```
## 2. Стандартные функции
Стандартные функции находятся в модуле `builtins`, доступном без импорта при запуске среды.
## 2.1. Функция round
Функция `round` округляет число с заданной точностью.
```py
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`, если не указать количество значений после запятой, результат будет целым числом, в остальных случаях - вещественное число.
```py
round(123.456,1)
123.5
round(123.456,0)
123.0
round(123.456,2)
123.46
type(round(123.456,1))
<class 'float'>
type(round(123.456))
<class 'int'>
```
## 2.2. Функция range
Функция `range` создает последовательность целых чисел с заданным шагом или, по умолчанию, с шагом 1.
```py
gg=range(76,123,9);gg
range(76, 123, 9)
```
Правая граница не входит в последовательность.
Эта функция создает итерируемый объект. Чтобы увидеть полученную последовательность чисел, его надо преобразовать, например, в список.
```py
list(gg)
[76, 85, 94, 103, 112, 121]
type(gg);type(list(gg))
<class 'range'>
<class 'list'>
```
Функция `range` с одним аргументом создает последовательность от 0 до указанного числа с шагом 1.
```py
gg1=range(12);gg1
range(0, 12)
list(gg1)
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]
```
## 2.3. Функция zip
Функция `zip` создает общий объект, элементами которого являются кортежи, составленные из элементов двух или более объектов-последовательностей.
```py
qq=['Tabolin','Berezhkov','Krishtul','Stepanischev'];qq
['Tabolin', 'Berezhkov', 'Krishtul', 'Stepanischev']
ff=zip(gg,qq);ff
<zip object at 0x00000231E0107B40>
tuple(ff)
((76, 'Tabolin'), (85, 'Berezhkov'), (94, 'Krishtul'), (103, 'Stepanischev'))
```
Чтобы просмотреть содержимое результата функции `zip`, преобразуем его в кортеж.
В полученном кортеже количество элементов определяется меньшим из размеров аргументов функции `zip`.
```py
ff[1,1]
Traceback (most recent call last):
File "<pyshell#45>", line 1, in <module>
ff[1,1]
TypeError: 'zip' object is not subscriptable
```
Невозможно обратиться с указанием индекса, потому что объект является итерируемым.
## 2.4. Функция eval
Функция `eval` выполняет вычисление значения выражения, корректно записанного на языке Python и представленного в виде символьной строки.
```py
fff=float(input('коэффициент усиления='));dan=eval('5*fff-156');dan
коэффициент усиления=33
9.0
```
## 2.5. Функция exec
Функция `exec` - чтение и выполнение объекта-аргумента функции. Этот объект должен представлять собой строку символов с совокупностью инструкций на языке Python.
```py
exec(input('введите инструкции:'))
введите инструкции:perem=-123.456;gg=round(abs(perem)+98,3)
gg
221.456
```
## 2.6. Самостоятельно изучение некоторых функций
`abs` - взятие модуля числа
`pow(b, e)` - возведение числа `b` в степень `e`
`max(min)` - нахождение максимального (минимального) числа
`sum` - сложение чисел
`divmod(a,b)` - возвращает результат целочисленного деления и остаток от деления числа `a` на `b`
`len` - возвращает длину аргумента
`map` - выполняет заданную функцию с заданными значениями
```py
abs(-5.6)
5.6
pow(2,3)
8
max(1,2,3,90)
90
min(-4,4,67)
-4
sum([1,0.5,0.25,0.125,0.0625])
1.9375
divmod(5,2)
(2, 1)
len({1,2,3,5})
4
list(map(lambda x: pow(x,2), [1,2,3,4,5,6,7,8,9,10]))
[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
```
## 3. Функции модуля math
Загрузил модуль `math` и узнал его содержание
```py
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', 'fma', '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']
```
Изучил функцию расчета факториала и попробовал использовать её
```py
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
```
Изучил некоторые другие функции модуля:
`sin` - синус аргумента (в радианах)
`acos` - арккосинус аргумента (в радианах)
`degrees` и `radians` - перевод из радиан в градусы и наоборот
`exp` - возведение экспоненты в степень
`log(a,b)` - логарифм `a` по основанию `b` (по умолчанию `b = e`)
`log10` - десятичный логарифм
`sqrt` - квадратный корень
`ceil` и `floor` - округление "вверх" и "вниз"
`pi` - число Пи
```py
math.sin(math.pi/2)
1.0
math.acos(1)
0.0
math.acos(0)
1.5707963267948966
math.sin(math.asin(0.987765))
0.987765
math.degrees(math.pi)
180.0
math.radians(45)
0.7853981633974483
math.exp(math.log(5))
4.999999999999999
math.log(25,5)
2.0
math.log10(1000)
3.0
math.sqrt(144)
12.0
math.ceil(1.1)
2
math.floor(5.9)
5
math.pi
3.141592653589793
```
```py
math.sin(2*math.pi/7+math.exp(0.23))
0.8334902641414562
```
## 4. Функции модуля cmath
Это совокупность функций для работы с комплексными числами
Загрузил модуль `cmath` и просмотрел содержащиеся в нем функции.
```py
import cmath
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']
```
Функции взятия корня и расчета фазы комплексного числа
```py
cmath.sqrt(1.2-0.5j)
(1.118033988749895-0.22360679774997896j)
cmath.phase(1-0.5j)
-0.4636476090008061
```
## 5. Модуль random
Это совокупность функций для выполнения операций с псевдослучайными числами и выборками.
Загрузил модуль `random` и просмотрел список содержащихся в нем функций.
```py
import random
dir(random)
['BPF', 'LOG4', 'NV_MAGICCONST', 'RECIP_BPF', 'Random', 'SG_MAGICCONST', 'SystemRandom', 'TWOPI', '_ONE', '_Sequence', '__all__', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', '_accumulate', '_acos', '_bisect', '_ceil', '_cos', '_e', '_exp', '_fabs', '_floor', '_index', '_inst', '_isfinite', '_lgamma', '_log', '_log2', '_os', '_parse_args', '_pi', '_random', '_repeat', '_sha512', '_sin', '_sqrt', '_test', '_test_generator', '_urandom', 'betavariate', 'binomialvariate', 'choice', 'choices', 'expovariate', 'gammavariate', 'gauss', 'getrandbits', 'getstate', 'lognormvariate', 'main', 'normalvariate', 'paretovariate', 'randbytes', 'randint', 'random', 'randrange', 'sample', 'seed', 'setstate', 'shuffle', 'triangular', 'uniform', 'vonmisesvariate', 'weibullvariate']
```
Изучил функцию `random.seed`. Она задает случайное начальное состояние для псевдослучайных чисел.
```py
help(random.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.
random.seed()
```
Изучил некоторые другие функции модуля:
`random` - равномерно распределенное случайное вещественное число от 0 до 1
`uniform` - равномено распределенное вещественное число из промежутка
`randint` - целое число из промежутка
`gauss` - случайное число с указанием среднего и стандартного отклонения
`choice` - выбирает случайный элемент
`shuffle` - перемешивает список
`sample(spis1,n)` - выбор n случайных элементов из spis1
`betavariate` - случайное вещественное число из бета-распределения
`gammavariate` - случайное вещественное число из гамма-распределения
```py
random.random()
0.8645955981071833
random.uniform(1,5)
3.9631799754514985
random.randint(2,10)
6
random.gauss(0,1)
-1.4256278812580692
random.choice([1,2,3,4,5])
1
spis1=[0,1,2,3,4,5]
random.shuffle(spis1);spis1
[1, 5, 0, 2, 3, 4]
random.sample(spis1,3)
[3, 1, 2]
random.betavariate(2,5)
0.49882484510318864
random.gammavariate(2,1)
2.798582174334477
```
Список с 4 случайными значениями, подчиняющимися, соответственно, равномерному, нормальному, бета и гамма – распределениям.
```py
spis_rand=[random.uniform(1,7),random.gauss(0,1),random.betavariate(1,5),random.gammavariate(3,10)]
spis_rand
[3.139339025932303, 0.5820428632300484, 0.3368063251531593, 30.52697334997717]
```
## 6. Функции модуля time
Функции из модуля `time` предназначены для работы с календарем и со временем.
Загрузил модуль `time` и просмотрел его функции
```py
import time;dir(time)
['_STRUCT_TM_ITEMS', '__doc__', '__loader__', '__name__', '__package__', '__spec__', 'altzone', 'asctime', 'ctime', 'daylight', 'get_clock_info', 'gmtime', 'localtime', 'mktime', 'monotonic', 'monotonic_ns', 'perf_counter', 'perf_counter_ns', 'process_time', 'process_time_ns', 'sleep', 'strftime', 'strptime', 'struct_time', 'thread_time', 'thread_time_ns', 'time', 'time_ns', 'timezone', 'tzname']
```
Просмотрел время с начала эпохи, а затем определил временной интервал со времени ввода предыдущей инструкции
```py
c1=time.time();c1
1760307438.705462
c2=time.time()-c1;c2
11.940115690231323
```
Функция `gmtime` возвращает объект класса `struct_time`, содержащий полную информацию о текущем времени. Обращение к компонентам получившегося объекта.
```py
dat=time.gmtime();dat
time.struct_time(tm_year=2025, tm_mon=10, tm_mday=12, tm_hour=22, tm_min=19, tm_sec=3, tm_wday=6, tm_yday=285, tm_isdst=0)
dat.tm_mon
10
```
Получение "местного" времени
```py
local_time=time.localtime();local_time
time.struct_time(tm_year=2025, tm_mon=10, tm_mday=13, tm_hour=1, tm_min=22, tm_sec=37, tm_wday=0, tm_yday=286, tm_isdst=0)
```
`asctime` - преобразование представления времени из кортежа в строку
`ctime` - преобразование времени, прошедшего с начала эпохи, в строку
`sleep` - прерывание работы программы на заданное время
`mktime` - преобазование времени из типа кортежа или struct_time в число секунд с начала эпохи
```py
c1=time.time();c1
1760309028.8968148
local_struct=time.localtime(c1);local_struct
time.struct_time(tm_year=2025, tm_mon=10, tm_mday=13, tm_hour=1, tm_min=43, tm_sec=48, tm_wday=0, tm_yday=286, tm_isdst=0)
time_str1=time.asctime(local_struct);time_str1
'Mon Oct 13 01:43:48 2025'
time_str2=time.ctime(c1);time_str2
'Mon Oct 13 01:43:48 2025'
seconds=time.mktime(local_struct);seconds
1760309028.0
n_struct=time.localtime(seconds);n_struct
time.struct_time(tm_year=2025, tm_mon=10, tm_mday=13, tm_hour=1, tm_min=43, tm_sec=48, tm_wday=0, tm_yday=286, tm_isdst=0)
```
## 7. Графические функции
Моудль `pylab`, входящий в состав пакета `matplotlib`, содержит ряд полезных вычислительных функций и графических возможностей.
Импортировал модуль
```py
import pylab
```
Ошибки не возникло.
Задание списков отсчётов и отображение графика
```py
x=list(range(-3,55,4))
t=list(range(15))
pylab.plot(t,x)
[<matplotlib.lines.Line2D object at 0x000001A4B5840910>]
pylab.title('Первый график')
Text(0.5, 1.0, 'Первый график')
pylab.xlabel('время')
Text(0.5, 0, 'время')
pylab.ylabel('сигнал')
Text(0, 0.5, 'сигнал')
pylab.show()
```
`pylab.plot(t,x)' создает график функции `x(t)` в оперативной памяти
`pylab.title()' добавляет подись графика
`pylab.xlabel` и `pylab.ylabel` добавляет подписи к осям
`pylab.show` отображает график на экране
Получившийся график:
![График](Ris1.png)
Построение нескольких графиков на одном рисунке
```py
X1=[12,6,8,10,7]
X2=[5,7,9,11,13]
pylab.plot(X1)
pylab.plot(X2)
pylab.show()
```
Построение круговой диаграммы
```py
region=['Центр','Урал','Сибирь','Юг']
naselen=[65,12,23,17]
pylab.pie(naselen,labels=region)
([<matplotlib.patches.Wedge object at 0x000001A4B4096120>, <matplotlib.patches.Wedge object at 0x000001A4B7F38F50>, <matplotlib.patches.Wedge object at 0x000001A4B7F38B90>, <matplotlib.patches.Wedge object at 0x000001A4B58ED450>], [Text(-0.191013134139045, 1.0832885038559115, 'Центр'), Text(-0.861328292412156, -0.6841882582231001, 'Урал'), Text(0.04429273995539947, -1.0991078896938387, 'Сибирь'), Text(0.9873750693480946, -0.48486129194837324, 'Юг')])
pylab.show()
```
![Круговая диаграмма](Ris2.png)
Функции `hist` и `bar`
```py
pylab.bar(region,naselen)
<BarContainer object of 4 artists>
pylab.show()
```
![Столбиковая диаграмма](Ris3.png)
```py
data=[2,2,2,2,3,3,4,4,4,4,4,5]
pylab.hist(data)
(array([4., 0., 0., 2., 0., 0., 5., 0., 0., 1.]), array([2. , 2.3, 2.6, 2.9, 3.2, 3.5, 3.8, 4.1, 4.4, 4.7, 5. ]), <BarContainer object of 10 artists>)
pylab.show()
```
![Гистограмма](Ris4.png)
## 8. Модуль statistics
Применение некоторых функций
```py
statistics.median(data)
3.5
statistics.mean(data)
3.25
temperature=[10,12,10,11,9,7,9,10]
air_humidity=[90,91,90,91,89,88,89,90]
statistics.correlation(temperature,air_humidity)
0.9738516810963534
```

@ -0,0 +1,42 @@
# Общее контрольное задание по Теме 4
Таболин Иван, А-01-23
## Задание
Реализовать, записать в текстовый файл и проанализировать результаты последовательности ин-струкций, выполняющих следующие действия:
- Напишите и исполните единое выражение, реализующее последовательное выполнение следую-щих операций: вычисление фазы комплексного числа 0.2+0.8j, округление результата до двух зна-ков после запятой, умножение полученного значения на 20, получение кортежа из двух значений: округленное вниз значение от деления результата на 3 и остатка от этого деления.
- Создайте объект класса struct_time с временными параметрами для текущего московского време-ни. Создайте строку с текущим часом и минутами.
- Создайте список с элементами – названиями дней недели. Сделайте случайную выборку из этого списка с тремя днями недели.
- Напишите инструкцию случайного выбора числа из последовательности целых чисел от 14 до 32 с шагом 3.
- Сгенерируйте нормально распределенное число N с математическим ожиданием 15 и стандартным отклонением 4 и округлите его до целого значения. Создайте список с N элементами – случайно выбранными буквами латинского алфавита.
- Напишите инструкцию для определения временного интервала в минутах, прошедшего с момента предыдущего (из п.2) определения временных параметров.
## Решение
```py
import cmath
divmod(round(cmath.phase(0.2+0.8j),2)*20,3)
(8.0, 2.6000000000000014)
import time
t=time.localtime();t
time.struct_time(tm_year=2025, tm_mon=10, tm_mday=13, tm_hour=11, tm_min=35, tm_sec=45, tm_wday=0, tm_yday=286, tm_isdst=0)
str_t=str(t.tm_hour)+':'+str(t.tm_min);str_t
'11:35'
ned=['Понедельнк','Вторник','Среда','Четверг','Пятница','Суббота','Воскресенье']
import random
random.sample(ned,3)
['Понедельнк', 'Суббота', 'Воскресенье']
random.choice(range(14,32,3))
17
N=round(random.gauss(15,4));N
16
alph=list('abcdefghijklmnopqrstuvwxyz')
random.sample(alph,N)
['r', 'l', 'j', 'm', 'z', 'w', 'c', 'k', 'x', 'f', 'n', 'e', 'u', 'p', 'i', 'g']
t_sec=time.mktime(time.localtime()) - time.mktime(t)
t_min=t_sec/60;t_min
12.366666666666667
t_min=round(t_min,1);t_min
12.4
```

@ -0,0 +1,19 @@
# Индивидуальное контрольное задание по Теме 4
Таболин Иван, А-01-23
Вариант 11
## Задание
Создайте список с элементами, значения которых находятся в диапазоне от 4 до 53 с шагом 7. Определите число элементов в получившемся списке. Случайно выберите один из элементов спи-ска. Рассчитайте его логарифм и отобразите в виде строки: «Результат = <значение>».
## Решение
```py
import math
import random
spis=list(range(4,53,7));spis;len(spis)
[4, 11, 18, 25, 32, 39, 46]
7
n=random.choice(spis);n
4
log_nat=math.log(n)
out='Результат = %f'
print(out % log_nat)
Результат = 1.386294
```
Загрузка…
Отмена
Сохранить