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

..

15 Коммитов

Автор SHA1 Сообщение Дата
Дмитрий Антонов
39f0d2548a done lab 2025-10-26 01:05:50 +03:00
Дмитрий Антонов
4f678a7432 done lab 2025-10-26 01:04:01 +03:00
Дмитрий Антонов
a185e7e4b4 done 2025-10-26 00:56:41 +03:00
Дмитрий Антонов
dcf03616b5 resolve mistake 2025-09-26 10:52:16 +03:00
Дмитрий Антонов
4a55004c1c resolve mistake 2025-09-26 10:40:24 +03:00
Дмитрий Антонов
60b1ff7d8c task:done lab 3 2025-09-26 10:34:42 +03:00
Дмитрий Антонов
1014272373 test task - done 2025-09-12 10:17:13 +03:00
Дмитрий Антонов
5a15312680 report and task - done 2025-09-11 23:17:58 +03:00
0568684c62 Изменил(а) на 'TEMA1/test.md' 2025-09-05 22:30:28 +03:00
7836d7e9f3 Изменил(а) на 'TEMA1/test.md' 2025-09-05 22:30:28 +03:00
d5a87e155b Изменил(а) на 'TEMA1/test.md' 2025-09-05 22:30:28 +03:00
Пользователь № 1 аудитории Ж-111
ef92cbf3c3 контрольный вопрос 2025-09-05 22:30:28 +03:00
332dc64b51 Изменил(а) на 'TEMA1/report.md' 2025-09-05 22:30:28 +03:00
7a19b2e98e Изменил(а) на 'TEMA1/report.md' 2025-09-05 22:30:28 +03:00
Пользователь № 1 аудитории Ж-111
4816a679fd report - ready 2025-09-05 22:30:28 +03:00
32 изменённых файлов: 3103 добавлений и 5 удалений

Просмотреть файл

@@ -1,7 +1,6 @@
# Программное обеспечение автоматизированных систем: лабораторные работы # Программное обеспечение автоматизированных систем: лабораторные работы
[Репозиторий с методическими указаниями и заданиями.](http://uit.mpei.ru/git/main/python) [Репозиторий с методическими указаниями и заданиями.](http://uit.mpei.ru/git/main/python)
Обратите внимание на файл с комментариями в репозитории по ссылке.
## Работа с Git ## Работа с Git
@@ -110,7 +109,7 @@
### Оформление решений ### Оформление решений
Решение всех заданий и тестов оформляется по образцу: Решение всех заданий оформляется по образцу:
# Общее контрольное задание по теме 2 # Общее контрольное задание по теме 2
@@ -130,8 +129,5 @@
Для темы 1 вместо «Задания» — «Вопрос», вместо «Решения» — «Ответ». Для темы 1 вместо «Задания» — «Вопрос», вместо «Решения» — «Ответ».
Для тем 3, 6 и 9 вместо «Индивидуального контрольного задания по теме 3 (6, 9)» —
«Тест по модулю 1 (2, 3)».
Для тем 8 и 9 раздела «Решение» не нужно, Для тем 8 и 9 раздела «Решение» не нужно,
вместо этого решение размещается в отдельных файлах `*.py`. вместо этого решение размещается в отдельных файлах `*.py`.

5
TEMA1/Pr0.py Обычный файл
Просмотреть файл

@@ -0,0 +1,5 @@
#Программа по Теме 1 <Антонов Дмитрий Антонович>
print('Hello')
h=input('Your name=')
import os
os.chdir('C:\\Users\\u111-01\\Desktop\\python-labs\\TEMA1\\')

Просмотреть файл

До

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

После

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

Двоичные данные
TEMA1/figure01.png Обычный файл

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

После

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

Двоичные данные
TEMA1/figure1.png Обычный файл

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

После

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

Двоичные данные
TEMA1/figure2.png Обычный файл

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

После

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

Двоичные данные
TEMA1/figure3.png Обычный файл

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

После

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

Двоичные данные
TEMA1/figure4.png Обычный файл

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

После

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

Двоичные данные
TEMA1/figure5.png Обычный файл

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

После

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

Двоичные данные
TEMA1/figure6.png Обычный файл

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

После

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

100
TEMA1/report.md Обычный файл
Просмотреть файл

@@ -0,0 +1,100 @@
# Отчет по теме 1
Антонов Дмитрий, А-03-23
## 1 Изучение среды IDLE
## 1.1 Начало работы
```py
print('Hello')
Hello
h=input('Your name=')
Your name=Dmitriy
exit()
```
## 1.2 Настройка текущего каталога
```py
>>> import os
>>> os.chdir('C:\\Users\\u111-01\\Desktop\\python-labs\\TEMA1\\')
```
## 1.3 Настройка окна IDLE
![Скриншот настроенного окна](figure01.png)
## 1.4 Запуск программы
```py
#Программа по Теме 1 <Антонов Дмитрий Антонович>
print('Hello')
h=input('Your name=')
import os
os.chdir('C:\\Users\\u111-01\\Desktop\\python-labs\\TEMA1\\')
```
## 1.5 Запуск программы через import
```py
import Pr0
Hello
Your name=D
import prb1
Как Вас зовут? D
Привет, D
```
## 1.6 Содержимое файла pycache
![Скриншот настроенного окна](figure1.png)
## 1.7 Изучение раздела помощи
```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)
```
## 1.8 Запуск программы из IDLE
```py
import tdemo_chaos
====== RESTART: C:\Users\u111-01\Desktop\python-labs\TEMA1\tdemo_chaos.py ======
```
## 1.9 Изучение примеров
![Скриншот примера часов](figure4.png)
![Скриншот примера дерева](figure5.png)
![Скриншот примера ](figure6.png)

44
TEMA1/test.md Обычный файл
Просмотреть файл

@@ -0,0 +1,44 @@
# Общее контрольный вопрос по теме 1
Антонов Дмитрий, А-03-23
## Вопрос
В каком месте инструкции можно написать комментарий?
## Ответ
Комментарии в python можно вставлять практически в любом месте программы, используя специальный символ - #.
Нужно помнить, что после символа # до конца сроки текст будет закомментирован. Поэтому не получится прервать комнаду комметарием.
## Пример:
```py
hel#p()
Traceback (most recent call last):
File "<pyshell#26>", line 1, in <module>
hel#p()
NameError: name 'hel' is not defined. Did you mean: 'hex'?
```
```py
help()#правильный синтаксис
Welcome to Python 3.11's help utility!
If this is your first time using Python, you should definitely check out
the tutorial on the internet at https://docs.python.org/3.11/tutorial/.
Enter the name of any module, keyword, or topic to get help on writing
Python programs and using Python modules. To quit this help utility and
return to the interpreter, just type "quit".
To get a list of available modules, keywords, symbols, or topics, type
"modules", "keywords", "symbols", or "topics". Each module also comes
with a one-line summary of what it does; to list the modules whose name
or summary contain a given string such as "spam", type "modules spam".
help>
```

746
TEMA2/report.md Обычный файл
Просмотреть файл

@@ -0,0 +1,746 @@
# Отчет по теме 2
**Антонов Дмитрий, А-03-23**
### 1.Начало работы, настройка текущего каталога
```py
import os
os.getcwd()
'/Users/dmitrijantonov/Documents'
os.chdir('//Users//dmitrijantonov//Desktop//POAC//python-labs//TEMA2//')
os.getcwd()
'/Users/dmitrijantonov/Desktop/POAC/python-labs/TEMA2'
```
### 2.Изучение простых объектов
```py
f1=16;f2=3
f1,f2
(16, 3)
f1;f2
16
3
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']
type(f2)
<class 'int'>
```
- Удаляю созданные переменные
```py
del f1,f2
dir()
['__annotations__', '__builtins__', '__doc__', '__loader__', '__name__', '__package__', '__spec__', 'os']
dir(f1)
Traceback (most recent call last):
File "<pyshell#17>", line 1, in <module>
dir(f1)
NameError: name 'f1' is not defined
```
### 3.Изучение правил именованя переменных
- Правильные названия
```py
gg = 1.6
hh1 = 'строка'
```
- Неправильные названия
```py
73sr=3
SyntaxError: invalid decimal literal
and=7
SyntaxError: invalid syntax
```
### 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']
key_words = keyword.kwlist
```
### 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', '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']
```
- Функции модуля числа и длины
```py
abs(-3)
3
len("Hello!")
6
e={'b' : 2, 'a' : 1, 'c' : 3}
len(e)
3
```
- Функции min и max
```py
max(1,2,3,4,)
4
max("b","c")
'c'
min(-10,-50,15)
-50
min("b","c")
'b'
```
- Математические функции
```py
pow(2,2)
4
pow(2,-2)
0.25
round(2.55)
3
round(2.50)
2
round(2.51)
3
round(2.49)
2
```
- Функция сортировки и суммы
```py
sorted({2,3,1,1,2,-1,-4,6})
[-4, -1, 1, 2, 3, 6]
sorted({"s","d","a"})
['a', 'd', 's']
sorted({2,3,1,1,2,-1,-4,6}, reverse=True)
[6, 3, 2, 1, -1, -4]
sorted({"sse","dssd","aeeee"},key=len)
['sse', 'dssd', 'aeeee']
d ={'b': 2, 'a': 1, 'c': 3}
d
{'b': 2, 'a': 1, 'c': 3}
sorted(d)
['a', 'b', 'c']
sum({1,2})
3
sum([1,2,3])
6
sum(x for x in range(1, 6))
15
sum([1,2,3,4,5],5)
20
#1+2+3+4+5+5
sum([2.1,2.1])
4.2
```
- Функция zip, попробовал применить к list, dict
```py
zip([1,2,3],['a','b','c'])
<zip object at 0x105905bc0>
list(zip([1,2,3],['a','b','c']))
[(1, 'a'), (2, 'b'), (3, 'c')]
list(zip([5,5,5],['a','b']))
[(5, 'a'), (5, 'b')]
a = {'b': 2, 'a': 1, 'c': 3}
a
{'b': 2, 'a': 1, 'c': 3}
type(a)
<class 'dict'>
key = [1,2,5]
values = ['a','v','c']
dc = dict(zip(key,values))
dc
{1: 'a', 2: 'v', 5: 'c'}
```
### 6.Удостоверился, что регистр отличается
```py
Gg1=45
gg1=1.6
gg1
1.6
Gg1
45
```
### 7.Примение простоых базовых типов
#### 7.1 Логический тип
```py
bb1=True; bb2=False
bb1;bb2
True
False
type(bb1)
<class 'bool'>
```
#### 7.2 Переменные с целочисленным,вещественным и комплексным типами
```py
ii1=-1234567890
ff1=-8.9876e-12
type(ii1)
<class 'int'>
type(ff1)
<class 'float'>
cc1=2-3j
type(cc1)
<class 'complex'>
a=3.67; b=-0.45
cc2 = complex(a,b)
cc2
(3.67-0.45j)
type(cc1)
<class 'complex'>
type(cc2)
<class 'complex'>
```
- Проверил в каком классе сохранилось двочиное, восьмеричное, шестнадцатеричное число
```py
dv1=0b1101010
type(dv1)
<class 'int'>
vsm1=0o52765
type(vsm1)
<class 'int'>
shest1=0x7109af6
type(shest1)
<class 'int'>
```
#### 7.3 Изучаю тип переменной - строка
```py
ss1='Это - строка символов'
ss1="Это - строка символов"
ss1a="Это - \" строка символов \", \n \t выводимая на двух строках"
ss1a
'Это - " строка символов ", \n \t выводимая на двух строках'
print(ss1a)
Это - " строка символов ",
выводимая на двух строках
ss1b = 'Меня зовут: \nАнтонов Д.А'
print(ss1b)
Меня зовут:
Антонов Д.А
mnogo="""Нетрудно заметить , что в результате операции над числами разных типов получается число,имеющее более сложный тип из тех, которые участвуют в операции."""
print(mnogo)
Нетрудно заметить , что в результате операции над числами разных типов получается число,имеющее более сложный тип из тех, которые участвуют в операции.
```
- Изучаю как получить доступ к символам строки
```py
ss1[0]
'Э'
ss1[8]
'р'
ss1[-2]
'о'
ss1[6:9]
'стр'
ss1
'Это - строка символов'
ss1[20]
'в'
ss1[21]
Traceback (most recent call last):
File "<pyshell#50>", line 1, in <module>
ss1[21]
IndexError: string index out of range
```
- Применяю различные варианты «разрезания» или «создания среза»
```py
ss1[13:]
'символов'
ss1[:13]
'Это - строка '
ss1[5:-8]
' строка '
ss1[3:17:2]
' тоасм'
ss1[0]
'Э'
ss1[17:3:-2]
'омсаот '
ss1[17:3:-1]
'овмис акортс -'
ss1[-4:3:-2]
'омсаот '
ss1[4]='='
Traceback (most recent call last):
File "<pyshell#60>", line 1, in <module>
ss1[4]='='
TypeError: 'str' object does not support item assignment
ss1=ss1[:4]+'='+ss1[5:]
ss1
'Это = строка символов'
ss1b
'Меня зовут: \nАнтонов Д.А'
ss1b[3]
'я'
ss1b[3-1]
'н'
ss1b[-3]
'Д'
ss1b[-3:]
'Д.А'
ss1b[:-3]
'Меня зовут: \nАнтонов '
ss1b[0:]
'Меня зовут: \nАнтонов Д.А'
ss1b[0:-1]
'Меня зовут: \nАнтонов Д.'
ss1b[0:0]
''
ss1b[5:-5]
'зовут: \nАнтоно'
ss1b[-23:0]
''
ss1b[0:23:-1]
''
ss1b[0:23:1]
'Меня зовут: \nАнтонов Д.'
ss1b[24:0:-1]
'А.Д вонотнА\n :тувоз яне'
ss1b[24:0:-2]
'АДвнтА твзяе'
ss1b[24:-2:-2]
'А'
ss1b[24:0:-2]
'АДвнтА твзяе'
ss1b[24:0:-1]
'А.Д вонотнА\n :тувоз яне'
ss1b[24::-1]
'А.Д вонотнА\n :тувоз янеМ'
ss1b[None:None:-1]
'А.Д вонотнА\n :тувоз янеМ'
ss1b=ss1b[0:5] + "-" + ss1b[6:None]
ss1b
'Меня -овут: \nАнтонов Д.А'
```
#### 7.4 Выполеняю задание, самостоятельно закрпляю изученные типы переменных
```py
stringg = '12'+"ab"
type(stringg)
<class 'str'>
a = 100
type(a)
<class 'int'>
b = 0-1j
type(b)
<class 'complex'>
b=0.1
type(b)
<class 'float'>
b = 0.001200
type(b)
<class 'float'>
b = 0.1e-100
type(b)
<class 'float'>
c = 0-1j
type(c)
<class 'complex'>
var = c/b
type(var)
<class 'complex'>
b = True
type(b)
<class 'bool'>
b = None
type(b)
<class 'NoneType'>
```
### 8. Сложные типы объектов
#### 8.1 Списки
- Начало работы со списками
```py
spis1 = [111,'Spisok',5-9j]
stup=[0,0,1,1,1,1,1,1,1]
spis = [1,2,3,4
,5,6,7
,8,9,10]
spis
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
spis1[-1]
(5-9j)
stup[-8::2]
[0, 1, 1, 1]
stup[-8:None:2]
[0, 1, 1, 1]
#Сколько элементов вошло в этот новый список и какие индексы они имели в исходном списке?
len(stup[-8:None:2])
4
#4 элемента вошло, индексы - 1 3 5 7
spis1[1]='Список'
spis1
[111, 'Список', (5-9j)]
len(spis1)
3
```
- Изучил доступные методы для списков
```py
dir()
['__annotations__', '__builtins__', '__doc__', '__loader__', '__name__', '__package__', '__spec__', 'os', 'spis', 'spis1', 'stup']
dir(spis1)
['__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']
dir(spis1.append)
['__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__']
```
- Пробую методы добавления и удаления элемента в списке
```py
spis1.append('New Item')
print(spis1)
[111, 'Список', (5-9j), 'New Item']
spis1+['New Item'] #НОВЫЙ ЭЛЕМЕНТ НЕ СОЗДАЛСЯ
[111, 'Список', (5-9j), 'New Item', 'New Item']
print(spis1)
[111, 'Список', (5-9j), 'New Item']
spis1+=['New Item']
print(spis1)
[111, 'Список', (5-9j), 'New Item', 'New Item']
ss1b = 'Меня зовут: \n Антонов Д.А'
spis1.append(ss1b)
print(spis1)
[111, 'Список', (5-9j), 'New Item', 'New Item', 'Меня зовут: \n Антонов Д.А']
spis1.pop()
'Меня зовут: \n Антонов Д.А'
print(spis1)
[111, 'Список', (5-9j), 'New Item', 'New Item']
spis1.pop(0)
111
print(spis1)
['Список', (5-9j), 'New Item', 'New Item']
```
- Добавляю и удаляю элементы списока через методы insert и remove
```py
spis1.insert(0,"insert to start")
print(spis1)
['insert to start', 'Список', (5-9j), 'New Item', 'New Item']
spis1.insert(len(spis1),"insert to end")
print(spis1)
['insert to start', 'Список', (5-9j), 'New Item', 'New Item', 'insert to end']
spis1.pop(4)
'New Item'
spis1.insert(int(len(spis1)/2),"insert to middle")
print(spis1)
['insert to start', 'Список', 'insert to middle', (5-9j), 'New Item', 'insert to end']
spis1.append('Список')
print(spis1)
['insert to start', 'Список', 'insert to middle', (5-9j), 'New Item', 'insert to end', 'Список']
spis1.remove("Список")
print(spis1)
['insert to start', 'insert to middle', (5-9j), 'New Item', 'insert to end', 'Список']
```
- Пробую методы extend и clear
```py
spis2 = ['n','e','w']
print(spis2)
['n', 'e', 'w']
spis1.extend(spis2)
print(spis1)
['insert to start', 'insert to middle', (5-9j), 'New Item', 'insert to end', 'Список', 'n', 'e', 'w']
spis1.append(spis2)
print(spis1)
['insert to start', 'insert to middle', (5-9j), 'New Item', 'insert to end', 'Список', 'n', 'e', 'w', ['n', 'e', 'w']] #главное отличие от extend, добавился список элементов, но не по отдельности каждый элемен
spis2.clear()
print(spis2)
[]
```
- Изучаю метод sort для списка
```py
spis1.sort()
Traceback (most recent call last):
File "<pyshell#65>", line 1, in <module>
spis1.sort()
TypeError: '<' not supported between instances of 'complex' and 'str'
spis2 = [0,2,-1,3,-2,100,-1,4,5,9,2]
spis2.sort()
print(spis2)
[-2, -1, -1, 0, 2, 2, 3, 4, 5, 9, 100]
spis2 = [0,2,-1,3,-2,100,-1,4,5,9,2]
spis2.sort(reverse=True)
print(spis2)
[100, 9, 5, 4, 3, 2, 2, 0, -1, -1, -2]
spis2 = ['B','a','c']
spis2.sort()
print(spis2)
['B', 'a', 'c']
spis2 = ['B','a','c']
spis2.sort(key=str.lower)
print(spis2)
['a', 'B', 'c']
```
- Пробую методы reverse, count и copy
```py
spis2.reverse()
print(spis2)
['c', 'B', 'a']
a = [1,2,3,4,5]
b = a
b.append(4)
print(a)
[1, 2, 3, 4, 5, 4]
c = a.copy()
print(c)
[1, 2, 3, 4, 5, 4]
a.append(9)
print(c)
[1, 2, 3, 4, 5, 4]
print(a)
[1, 2, 3, 4, 5, 4, 9]
a.count(1)
1
a.count(-1)
0
a.append(1)
a.count(1)
2
a.index(1)
0
print(a)
[1, 2, 3, 4, 5, 4, 9, 1]
a.index(11)
Traceback (most recent call last):
File "<pyshell#117>", line 1, in <module>
a.index(11)
ValueError: 11 is not in list
```
- Создаю вложенный список и пробую менять значения элементов
```py
spis2=[spis1,[4,5,6,7]]
print(spis2)
[['insert to start', 'insert to middle', (5-9j), 'New Item', 'insert to end', 'Список', 'n', 'e', 'w', []], [4, 5, 6, 7]]
spis2[0][1]=78
print(spis2)
[['insert to start', 78, (5-9j), 'New Item', 'insert to end', 'Список', 'n', 'e', 'w', []], [4, 5, 6, 7]]
spis1
['insert to start', 78, (5-9j), 'New Item', 'insert to end', 'Список', 'n', 'e', 'w', []]
#использутся одна область памяти. При содании нового списка, ему присваивается сслыка на исходный объект
a = [1, 2, 3, 4, 5, 4, 9, 1]
b = [a.copy(),[11,55,555]]
b[0][0] = 999
b
[[999, 2, 3, 4, 5, 4, 9, 1], [11, 55, 555]]
a
[1, 2, 3, 4, 5, 4, 9, 1]
my_list_obj = [5,'Лабораторная работа',True,False,[b.copy()]]
print(my_list_obj)
[5, 'Лабораторная работа', True, False, [[[999, 2, 3, 4, 5, 4, 9, 1], [11, 55, 555]]]]
```
append() добавляет весь объект как один элемент.
extend() добавляет каждый элемент итерируемого объекта отдельно.
#### 8.2 Объект-кортеж
- Начало работы, создаю кортеж
```py
kort1=(222,'Kortezh',77+8j)
kort1 = kort1+(1,2)
kort1
(222, 'Kortezh', (77+8j), 1, 2)
kort1= kort1+(ss1b,)
kort1
(222, 'Kortezh', (77+8j), 1, 2, 'Меня зовут: \n Антонов Д.А')
kort2 = kort1[:2]+kort1[3:]
kort2
(222, 'Kortezh', 1, 2, 'Меня зовут: \n Антонов Д.А')
```
- Использую допустимые методы для кортежа
```py
dir(kort2)
['__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.index(2)
4
kort1.index(222)
0
kort1.count(222)
1
```
- Удостоверился, что кортеж нельзя изменить
```py
kort1[2]=90
Traceback (most recent call last):
File "<pyshell#156>", line 1, in <module>
kort1[2]=90
TypeError: 'tuple' object does not support item assignment
```
- Создаю свой кортеж
```py
my_tuple = (5,"my tuple for lab", ["list","in","tuplre"],(555,444))
type(my_tuple)
<class 'tuple'>
print(my_tuple)
(5, 'my tuple for lab', ['list', 'in', 'tuplre'], (555, 444))
my_tuple[2]
['list', 'in', 'tuplre']
type(my_tuple[3])
<class 'tuple'>
```
#### 8.3 Объект-словарь
- Начало работы со словарем
```py
dic1={'Saratov':145, 'Orel':56, 'Vologda':45}
dic1['Orel']
56
dic1['Pskov']=78
dic1
{'Saratov': 145, 'Orel': 56, 'Vologda': 45, 'Pskov': 78}
```
- Выделение ключей и значений, сортировка словаря
```py
dic1.keys()
dict_keys(['Saratov', 'Orel', 'Vologda', 'Pskov'])
```
- Нельзя использовать sort (in-place сортировка). Так как для сортировки словаря создается новый объяект
```py
sort(dic1.keys())
Traceback (most recent call last):
File "<pyshell#169>", line 1, in <module>
sort(dic1.keys())
NameError: name 'sort' is not defined. Did you mean: 'kort1'?
```
- Изучаю сортировку словарей и доступ к элментам
```py
sorted(dic1.keys())
['Orel', 'Pskov', 'Saratov', 'Vologda']
sorted(dic1.values())
[45, 56, 78, 145]
dic2={1:'mean',2:'standart deviation',3:'correlation'}
dic3={'statistics':dic2,'POAS':['base','elementary','programming']}
dic3['statistics'][2]
'standart deviation'
dic3['statistics'][3]
'correlation'
```
- Создаю словари разными способами (dict,zip,{}) и с разными типами ключей/значений
```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 Антонов Д.А'}
dic4={1:['A','B','C'],2:[4,5],'Q': 'Prim','Stroka': ss1b}
dic4
{1: ['A', 'B', 'C'], 2: [4, 5], 'Q': 'Prim', 'Stroka': 'Меня зовут: \n Антонов Д.А'}
dic5 = dict([(1,2),(2,4)])
dic5
{1: 2, 2: 4}
dic5=dict(zip(['A','B','C','Stroka'],[16,-3,9,ss1b]))
dic5
{'A': 16, 'B': -3, 'C': 9, 'Stroka': 'Меня зовут: \n Антонов Д.А'}
```
- Создаю словарь самостоятельно
```py
my_tuple = (1,2,3,4,5,6,7)
type(my_tuple)
<class 'tuple'>
my_list = ['сова','ворона','волк','лиса','носорог']
my_dict = dict(zip(my_tuple,my_list))
my_dict
{1: 'сова', 2: 'ворона', 3: 'волк', 4: 'лиса', 5: 'носорог'}
```
- Размер равен 5 так как выбирается наименьшая длина из всех длин объектов
```py
len(my_dict)
5
```
- Пробую доступ к словарю
```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]
15
AVTI['Курс I'][len(AVTI)]
30
```
#### 8.4 Изучаю объект-множество
- Начало работы, создаю множество
```py
mnoz1={'двигатель','датчик','линия связи','датчик','микропроцессор','двигатель'}
mnoz1
{'датчик', 'двигатель', 'микропроцессор', 'линия связи'}
```
- Нвблюдаю, что при выводе элементов множества, они становятся неупорядочеными
```py
p = {'b','c','a'}
p
{'b', 'a', 'c'}
```
- Применяю стандратные методы к множеству
```py
len(mnoz1)
4
'датчик' in mnoz1
True
mnoz1.add('реле')
mnoz1
{'датчик', 'микропроцессор', 'линия связи', 'двигатель', 'реле'}
mnoz1.remove('линия связи')
mnoz1
{'датчик', 'микропроцессор', 'двигатель', 'реле'}
mnoz1.remove('реле')
mnoz1
{'датчик', 'микропроцессор', 'двигатель'}
```
- Проверил и попробовал разные доступные операции множества
```py
dir(mnoz1)
['__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']
mnoz1.pop()
'датчик'
mnoz1
{'микропроцессор', 'двигатель'}
mnoz1.pop()
'микропроцессор'
mnoz1
{'двигатель'}
```
- Выполняю задание, придумал свой объект-множество
```py
my_set = {'строка в множестве',0.5,535,(5,6,7,'лабораторная')} #нельзя использовать list/dict - unhashable
my_set
{0.5, (5, 6, 7, 'лабораторная'), 'строка в множестве', 535}
```
- Пробую доступные операции с множеством
```py
my_set.add('POAC')
my_set
{0.5, 'POAC', 'строка в множестве', 535, (5, 6, 7, 'лабораторная')}
my_set.remove(0.5)
my_set
{'POAC', 'строка в множестве', 535, (5, 6, 7, 'лабораторная')}
my_set.pop()
'POAC'
'строка в множестве' in my_set
True
'строка' in my_set
False
len(my_set)
3
new = my_set.copy()
new
{'строка в множестве', (5, 6, 7, 'лабораторная'), 535}
new.pop()
'строка в множестве'
new
{(5, 6, 7, 'лабораторная'), 535}
my_set
{'строка в множестве', 535, (5, 6, 7, 'лабораторная')}
new.clear()
new
set()
new.add(535)
inter_set = my_set.intersection(new,my_set)
inter_set
{535}
inter_set = new.intersection(new,my_set)
inter_set
{535}
```

98
TEMA2/task.md Обычный файл
Просмотреть файл

@@ -0,0 +1,98 @@
# Общее контрольное задание по теме 2
**Антонов Дмитрий, А-03-23**
## Задание
Реализовать, записать в текстовый файл и проанализировать результаты последовательности инструкций, выполняющих следующие действия
1. Создать переменную с именем familia и со значением - символьной строкой – своей фамили-ей в латинской транскрипции.
2. Создать переменную со значением, совпадающим с первой буквой из familia.
3. Создать переменную с именем sp_kw со значением – списком всей ключевых слов языка Python.
4. Удалите из списка sp_kw значение 'nonlocal'. Выводом списка в командном окне IDLE убедитесь, что это значение удалено из списка.
5. Создайте кортеж kort_nam с именами: вашим и еще 3-х студентов из вашей группы. Напишите инструкцию, позволяющую убедиться, что тип переменной – это tuple.
6. Напишите инструкцию, добавляющую в kort_nam имена еще двух студентов.
7. Напишите инструкцию, позволяющую определить, сколько раз в кортеже присутствуют студенты с именем «Дима».
8. Создайте словарь dict_bas, в котором ключами являются русские названия типов переменных, использованных в предыдущих операторах, а значениями – ранее созданные перемен-ные, соответствующие этим типам.
## Решение
#### 1. Создаю переменную familia.
```py
familia = 'Antonov'
type(familia)
<class 'str'>
```
#### 2. Создаю переменную, которая равна первой букве familia.
```py
var = 'A'
var = familia[0]
```
#### 3. Создаю переменную с именем sp_kw, значение – списк всех ключевых слов Python.
```py
import keyword
dir(keyword)
['__all__', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', 'iskeyword', 'issoftkeyword', 'kwlist', 'softkwlist']
```
- Импортивал библиотеку, проверил доступные методы
```py
sp_kw = keyword.kwlist
type(sp_kw)
<class 'list'>
```
- Проверил тип переменной
```py
print(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']
```
#### 4. Удаляю из списка sp_kw значение 'nonlocal', затем убедился, что это значение удалено из списка.
```py
sp_kw.remove('nonlocal')
print(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', 'not', 'or', 'pass', 'raise', 'return', 'try', 'while', 'with', 'yield']
```
- После физической проверки дополнительно убедился в отсутствии 'nonlocal' программно
```py
'nonlocal' in sp_kw
False
```
#### 5. Создаю кортеж kort_nam с моим и еще 3-х студентов из группы именами. Проверяю, что тип переменной – это tuple.
```py
kort_nam = ('Дмитрий','Артем','Александр','Максим')
type(kort_nam)
<class 'tuple'>
```
#### 6. Добавляю в kort_nam имена двух студентов.
```py
kort_nam = kort_nam + ('Иван','Людмила')
kort_nam
('Дмитрий', 'Артем', 'Александр', 'Максим', 'Иван', 'Людмила')
```
- Использовал переопределение, убедился в добавлении слов с помощью вывода
#### 7. Определяю, сколько раз в кортеже присутствуют студенты с именем «Дима».
```py
dir(kort_nam)
['__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']
```
- Проверил доступные методы
```py
kort_nam.count('Дима')
0
```
#### 8. Создаю словарь dict_bas, в котором ключами являются русские названия типов переменных, использованных в предыдущих операторах, а значениями – ранее созданные перемен-ные, соответствующие этим типам.
```py
dict_bas = {'строка': [familia,var],'список': sp_kw,'кортеж': kort_nam}
print(dict_bas)
{'строка': ['Antonov', 'A'], 'список': ['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'], 'кортеж': ('Дмитрий', 'Артем', 'Александр', 'Максим', 'Иван', 'Людмила')}
dict_bas.keys()
dict_keys(['строка', 'список', 'кортеж'])
dict_bas.values()
dict_values([['Antonov', 'A'], ['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'], ('Дмитрий', 'Артем', 'Александр', 'Максим', 'Иван', 'Людмила')])
```
- Создал и вывел словарь, а также ключи и значения отдельно
```py
dict_bas = dict([('строка',[familia,var]),('список',sp_kw),('кортеж',kort_nam)])
dict_bas
{'строка': ['Antonov', 'A'], 'список': ['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'], 'кортеж': ('Дмитрий', 'Артем', 'Александр', 'Максим', 'Иван', 'Людмила')}
```
- Создал словарь иным способом, затем вывел

39
TEMA2/test.md Обычный файл
Просмотреть файл

@@ -0,0 +1,39 @@
# Индивидуальное контрольное задание по теме 2
**Антонов Дмитрий, А-03-23**
## Задание
x=(1,2,3,4,5)
y=(11,22,33,44,55)
К какому классу относятся эти объекты? Объедините их и напишите инструкцию расчета суммы элементов, находящихся на 4,6,8… позициях.
## Решение
- Начало работы, установил рабочую директорию
```py
import os
os.chdir('//Users//dmitrijantonov//Desktop//POAC//python-labs//TEMA2//')
os.getcwd()
'/Users/dmitrijantonov/Desktop/POAC/python-labs/TEMA2'
```
- Создаю переменные и проверяю их тип
```py
x=(1,2,3,4,5);y=(11,22,33,44,55)
type(x)
<class 'tuple'>
type(y)
<class 'tuple'>
```
- Объединил кортежи
```py
c = x+y
c
(1, 2, 3, 4, 5, 11, 22, 33, 44, 55)
type(c)
<class 'tuple'>
```
- Посчитал сумму элементов на 4,6,8..... позициях
```py
sum_of_c_el = sum(c[3:None:2])
sum_of_c_el
103
```

886
TEMA3/report.md Обычный файл
Просмотреть файл

@@ -0,0 +1,886 @@
# Отчет по теме 3
**Антонов Дмитрий, А-03-23**
### 1.Начало работы, настройка текущего каталога
```py
Python 3.13.7 (v3.13.7:bcee1c32211, Aug 14 2025, 19:10:51) [Clang 16.0.0 (clang-1600.0.26.6)] on darwin
Enter "help" below or click "Help" above for more information.
import os
os.chdir('//Users//dmitrijantonov//Desktop//POAC//python-labs//TEMA3//')
os.getcwd()
'/Users/dmitrijantonov/Desktop/POAC/python-labs/TEMA3'
```
### 2.Изучаю преообразование простых базовых типов объектов
#### 2.1 Преобразование в логический тип
```py
logiz1=bool(56)
type(logiz1)
<class 'bool'>
logiz1
True
logiz1=bool(0)
type(logiz1)
<class 'bool'>
logiz1=bool(56)
logiz2=bool(0)
type(logiz2)
<class 'bool'>
logiz2
False
logiz3=bool("Beta")
type(logiz3)
<class 'bool'>
logiz3
True
logiz4=bool("")
logiz4
False
type(logiz4)
<class 'bool'>
```
#### 2.2 Преобразование в целое десятичное число объекта
```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")
Traceback (most recent call last):
File "<pyshell#30>", line 1, in <module>
tt5=int("98.76")
ValueError: invalid literal for int() with base 10: '98.76'
```
- Объяснение - функция ожидает строку без дробной части
```py
flt4=float("-inf")
flt3=float("t")
Traceback (most recent call last):
File "<pyshell#47>", line 1, in <module>
flt3=float("t")
ValueError: could not convert string to float: 't'
flt3=float("-Infinity")
flt3
-inf
```
- "inf" "-inf" "nan" эти слова допустимо переводить в строки
#### 2.3 Преобразование десятичных чисел в другие системы счисления
```py
hh=123
type(hh)
<class 'int'>
dv1=bin(hh) #двоичную
dv1
'0b1111011'
vos1=oct(hh) #восьмеричную
vos1
'0o173'
shs1=hex(hh) #шестандацтиричную
shs1
'0x7b'
```
- Убедился, что можно перевести только строку с указанием системы исчисления
```py
int(hh,10)
Traceback (most recent call last):
File "<pyshell#61>", line 1, in <module>
int(hh,10)
TypeError: int() can't convert non-string with explicit base
int("100",9)
81
int(dv1,2)
123
int(vos1,8)
123
int(shs1,16)
123
type(vos1)
<class 'str'>
```
### 3. Изучаю преобразования более сложных базовых типов объектов
#### 3.1 Преобразование списков, словарей, кортежей, целых чисел, логических переменных в строку символов
```py
strk1=str(23.6)
strk2=str(logiz3)
strk2
'True'
logiz3
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":9})
strk5
"{'A': 1, 'B': 2, 'C': 9}"
```
#### 3.2 Преобразование элементов объекта в список
```py
spis1=list("Строка символов")
spis1
['С', 'т', 'р', 'о', 'к', 'а', ' ', 'с', 'и', 'м', 'в', 'о', 'л', 'о', 'в']
spis2=list((124,236,-15,908))
spis2
[124, 236, -15, 908]
type(spis2)
<class 'list'>
```
- Преобразование ключей и значений словаря в список
```py
spis3=list({"A":1,"B":2,"C":9})
spis3
['A', 'B', 'C']
spis3=list({"A":1,"B":2,"C":9}.values())
spis3
[1, 2, 9]
```
#### 3.3 Преобразование элементов объектов в кортеж
```py
kort7=tuple('Строка символов')
kort7
('С', 'т', 'р', 'о', 'к', 'а', ' ', 'с', 'и', 'м', 'в', 'о', 'л', 'о', 'в')
kort8=tuple(spis2)
kort8
(124, 236, -15, 908)
kort9=tuple({"A":1,"B":2,"C":9})
kort9
('A', 'B', 'C')
kort9=tuple({"A":1,"B":2,"C":9}.values())
kort9
(1, 2, 9)
```
#### 3.4 Удаление объектов из оперативной памяти и повторение преобразований объектов в разные типы
```py
del strk5, kort8
```
- проверил, что переменные удалились
```py
dir(strk5)
Traceback (most recent call last):
File "<pyshell#107>", line 1, in <module>
dir(strk5)
NameError: name 'strk5' is not defined. Did you mean: 'strk1'?
dir()
['__annotations__', '__builtins__', '__doc__', '__loader__', '__name__', '__package__', '__spec__', 'dv1', 'flt1', 'flt2', 'flt3', 'flt4', 'hh', 'kort7', 'kort9', 'logiz1', 'logiz2', 'logiz3', 'logiz4', 'os', 'shs1', 'spis1', 'spis2', 'spis3', 'strk1', 'strk2', 'strk3', 'strk4', 'tt1', 'tt2', 'tt3', 'tt4', 'tt5', 'vos1']
```
- Выполнение преобразований
```py
my_str = "Антонов Д.А"
my_list = list(my_str)
my_list
['А', 'н', 'т', 'о', 'н', 'о', 'в', ' ', 'Д', '.', 'А']
my_kort = tuple(my_list)
my_kort
('А', 'н', 'т', 'о', 'н', 'о', 'в', ' ', 'Д', '.', 'А')
new_str = str(my_kort)
new_str
"('А', 'н', 'т', 'о', 'н', 'о', 'в', ' ', 'Д', '.', 'А')"
```
### 4.Арифметические операции
#### 4.1 Сложение и вычитание
```py
12+7+90
109
5.689e-1 - 0.456
0.11289999999999994
5.689e-1
0.5689
23.6+54
77.6
14-56.7+89
46.3
```
#### 4.2 Умножение и деление
```py
-6.7*12
-80.4
-234.5/6
-39.083333333333336
a=178/45
type(a)
<class 'float'>
a
3.9555555555555557
b = 2/2
b
1.0
type(b)
<class 'float'>
```
#### 4.3 Деление с округлением вниз
```py
b=178//45
type(b)
<class 'int'>
b
3
c=-24.6//12.1
```
- Попробовал различные комбинации операций
```py
type(c)
<class 'float'>
c
-3.0
d = 176.8 // 2
d
88.0
type(d)
<class 'float'>
d = 17 // 2
d
8
type(d)
<class 'int'>
d = 17 // 2.3
d
7.0
type(d)
<class 'float'>
```
#### 4.4 Получение остатка от деления
```py
148%33
16
12.6%3.8
1.2000000000000002
```
- Попробовал смешанные комбинации типов чисел
```py
148%2.5
0.5
2.5%148
2.5
150.1%148
2.0999999999999943
150%148
2
1%2
1
164.9%40
4.900000000000006
164.9%40.555
2.680000000000007
```
#### 4.5 Операция возведение в степень
```py
14**3
2744
e=2.7**3.6
e
35.719843790663525
type(14**3)
<class 'int'>
```
- Попробовал различные комбинации операций, обратил внимание на тип возращаемого результата
```py
type(14**3.2)
<class 'float'>
type(164.9%40.555)
<class 'float'>
2**2**2
16
2**9.5
724.0773439350247
5.5**2
30.25
0**2.2
0.0
type(0**2.2)
<class 'float'>
2*(1,2)
(1, 2, 1, 2)
2*"1,2, "
'1,2, 1,2, '
```
#### 4.6 Применил изученные операции к комплексным числам
```py
compl = 2 - 4j
type(compl)
<class 'complex'>
compl-2+4j
0j
compl+4j
(2+0j)
compl-4j
(2-8j)
compl*4j
(16+8j)
compl
(2-4j)
compl**4j
(80.27247582648498-24.104840774806338j)
compl**4
(-112+384j)
compl/4
(0.5-1j)
compl/4j
(-1-0.5j)
compl**2**1
(-12-16j)
str(compl)
'(2-4j)'
```
- Операции, которые нельзя выполнить над комплексными чсилами: деление с округлением вниз, взятие остатка от деления,преобразование в список и кортеж
```py
compl//4j
Traceback (most recent call last):
File "<pyshell#183>", line 1, in <module>
compl//4j
TypeError: unsupported operand type(s) for //: 'complex' and 'complex'
compl//4
Traceback (most recent call last):
File "<pyshell#184>", line 1, in <module>
compl//4
TypeError: unsupported operand type(s) for //: 'complex' and 'int'
compl%4j
Traceback (most recent call last):
File "<pyshell#185>", line 1, in <module>
compl%4j
TypeError: unsupported operand type(s) for %: 'complex' and 'complex'
compl%4
Traceback (most recent call last):
File "<pyshell#186>", line 1, in <module>
compl%4
TypeError: unsupported operand type(s) for %: 'complex' and 'int'
list(compl)
Traceback (most recent call last):
File "<pyshell#188>", line 1, in <module>
list(compl)
TypeError: 'complex' object is not iterable
tuple(compl)
Traceback (most recent call last):
File "<pyshell#189>", line 1, in <module>
tuple(compl)
TypeError: 'complex' object is not iterable
```
### 5.Операции с двоичными представлениями целых чисел
#### 5.1 Двоичная инверсия
```py
dv1=9
dv1
9
```
- В этом случае получается -10 из-за особенноси представления чисел в дополнительном коде.
```py
dv2=~dv1
dv2
-10
```
#### 5.2 Двоичное «И»
```py
7&9
1
7&8
0
```
#### 5.3 Двоичное «ИЛИ»
```py
7|9
15
7|8
15
14|5
15
```
#### 5.4 Двоичное «исключающее ИЛИ»
```py
14^5
11
```
- Проверил какое получилось значение в десятичном представлении
```py
type(14^5)
<class 'int'>
int("1011",2)
11
```
#### 5.5 Сдвиг двоичного представления на заданное число влево или вправо
```py
h=14
h
14
bin(h)
'0b1110'
g=h<<2
g
56
g1=h>>1
g1
7
g2=h>>2
g2
2
```
#### 5.6 Придумал два двоичных числа и попробовал выполнить с ними разные операции
```py
bin(100)
'0b1100100'
first_binary = 100 #двоичное представление - 1100100
bin(150)
'0b10010110'
second_binary = 150 #двоичное представление - 10010110
first_binary&second_binary
4
100&150
4
bin(first_binary&second_binary)
'0b100'
first_binary|second_binary
246
bin(first_binary|second_binary)
'0b11110110'
first_binary^second_binary
242
bin(first_binary^second_binary)
'0b11110010'
first_binary<<2
400
first_binary>>1
50
first_binary>>2
25
first_binary>>second_binary
0
second_binary>>first_binary
0
```
### 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
['ку', '-', 'ку', '-', 'ку', '-']
('кис','-')*4
('кис', '-', 'кис', '-', 'кис', '-', 'кис', '-')
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 ['ку','-']*2
True
'ку' in ['ку','-']*0
False
'ку' in ['ку','-']*4
True
'ля-' in ('abc', 'de', 'fg', 'hi', 'jkl')
False
```
#### 6.4 Изучил подстановка значений в строку с помощью оператора %
```py
stroka='Температура = %g %s %g'
stroka
'Температура = %g %s %g'
stroka % (16,' меньше ',25)
'Температура = 16 меньше 25'
stroka
'Температура = %g %s %g'
```
- Подставновка значений из словаря
```py
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
stroka='Система'
stroka+=' регулирования'
stroka
'Система регулирования'
a = 'ПОАС'
a + 'лаба3'
'ПОАСлаба3'
a
'ПОАС'
```
#### 7.3 Оператор деления и умножения текущей переменной
```py
zz/=2
zz
-5.0
zz*-5
25.0
zz
-5.0
zz*=5
string = 'лаба 3'
string*=5
string
'лаба 3лаба 3лаба 3лаба 3лаба 3'
```
#### 7.4 Операторы деления переменной с округлением вниз и взятие остатка от деления
```py
b = 100
b//=4
b
25
b%=8
b
1
```
#### 7.5 Оператор возведения в степень
```py
b**=100
b
1
b+=2
b**=15
b
14348907
```
#### 7.6 Множественное присваивание
```py
w=v=10
w
10
n1,n2,n3=(11,-3,'all')
print(n1,n2,n3)
11 -3 all
```
- Проверил можно ли использовать множественное присваивание с объектами: строка, список, кортеж, словарь
```py
n1,n2,n3='abc'
print(n1,n2,n3)
a b c
n1,n2,n3=[11,-3,'all']
print(n1,n2,n3)
11 -3 all
n1,n2,n3={11: 'a',3: 'b',5: 'c'}
print(n1,n2,n3)
11 3 5
n1,n2,n3={'a','b','c'}
print(n1,n2,n3)
a c b
```
### 8 Изучаю логические операции
#### 8.1 Операции сравнения
```py
w==v
True
w!=v
False
w>v
False
w<v
False
w<=v
True
w=>v
SyntaxError: invalid syntax
w>=v
True
```
#### 8.2 Проверка наличия заданного элемента в различных объектах
- Проверка наличия элемента в множестве
```py
mnoz1={'pen','book','pen','iPhone','table','book'}
'book' in mnoz1
True
'cap' in mnoz1
False
```
- Проверка наличия элемента в словаре
```py
dic1={'Saratov':145, 'Orel':56, 'Vologda':45}
'Vologda' in dic1
True
'Pskov' in dic1
False
```
- Проверка наличия элемента среди значений словаря
```py
56 in dic1.values()
True
dct1={'Institut':['AVTI','IEE','IBB'],'Depart':['UII','PM','VMSS','MM'],'gruppa': ['A-01-15','A-02-15']}
'UII' in dct1['Depart']
True
'UII' in dct1.values()
False
dct1['Depart'][1] == 'MM'
False
```
#### 8.3 Создание больших логических выражений
```py
a=17;b=-6
(a>=b) and ('book' in mnoz1) and not ('Pskov' in dic1)
True
```
- Самостоятельно придумал составные логические выражения
```py
(a>=b) and ('cap' in mnoz1) and not ('Pskov' in dic1)
False
(a==b) and ('cap' in mnoz1) and not ('Moscow' in dic1)
False
(a>=b) or ('cap' in mnoz1) or ('Moscow' in dic1)
True
```
#### 8.4 Проверка ссылок переменных на один и тот же объект с помощью is
- w и v ссылаются на один и тот же часток памяти
```py
w = v = 10
w is v
True
```
- w1 и v1 ссылаются на разные объекты в памяяти -> вывелось False
```py
w1=['A','B']
v1=['A','B']
w1 is v1
False
```
### 9.Операции с объектами, выполняемые с помощью методов: join, split и так далее
#### 9.1 Методы для работы со строками
- Посмотрел доступные методы для объекта типа str
```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']
stroka.find('пр')
5
stroka.count("с")
4
stroka.replace(' у',' автоматического у')
'Микропроцессорная система автоматического управления'
stroka
'Микропроцессорная система управления'
stroka.replace(' у',' автоматического ')
'Микропроцессорная система автоматического правления'
```
- split() Возвращает список подстрок, между которыми в строке стоит заданный разделитель
```py
spis22=stroka.split(' ')
spis22
['Микропроцессорная', 'система', 'управления']
stroka.upper()
'МИКРОПРОЦЕССОРНАЯ СИСТЕМА УПРАВЛЕНИЯ'
```
- join() Возвращает строку, собранную из элементов списка
```py
stroka3=" ".join(spis22)
stroka3
'Микропроцессорная система управления'
```
- partition() Возвращает кортеж, с результатами поиска «с» слева/справа. Если элемент найден, то вернется кортеж с тремя частимя: до элемента, сам элемент, оставшаяся часть строки. В случаи отсутствия элемента, вернется кортеж с исходной строкой и None,None
```py
stroka3.partition("с")
('Микропроце', 'с', 'сорная система управления')
stroka3.rpartition("с")
('Микропроцессорная си', 'с', 'тема управления')
```
#### 9.2 Методы format для работы со строками
```py
strk1='Момент времени {}, значение = {}'
strk1.format(1,89.7)
'Момент времени 1, значение = 89.7'
print(strk1)
Момент времени {}, значение = {}
```
- В методе format можно указать номер элемента, который поставится на нужное место
```py
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.3 Методы для работы со списками
- Посмотрел доступные методы
```py
spsk = [1,2,3,4,5]
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']
```
- Удаление элемента по номеру
```py
spsk.pop(2)
3
spsk
[1, 2, 4, 5]
```
- Добавление элемента
```py
spsk.append('c')
spsk
[1, 2, 4, 5, 'c']
spsk.insert(2,'a')
spsk
[1, 2, 'a', 4, 5, 'c']
spsk.count('a')
1
```
#### 9.3 Изучаю методы для работы с кортежами
```py
cort = (1,2,3,4,5)
dir(cort)
['__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']
cort.count(5)
1
cort.index(5)
4
```
#### 9.4 Методы для работы со словарями
```py
vocabulary = {1: 'первый',2: 'второй', 5: 'пятый'}
vocabulary
{1: 'первый', 2: 'второй', 5: 'пятый'}
dir(vocabulary)
['__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']
vocabulary.values(); vocabulary.keys()
dict_values(['первый', 'второй', 'пятый'])
dict_keys([1, 2, 5])
```
- При удалении из словаря обязательно нужно указать ключ, который хотим удалить
```py
vocabulary.pop(1)
'первый'
vocabulary
{2: 'второй', 5: 'пятый'}
vocabulary.items()
dict_items([(2, 'второй'), (5, 'пятый')])
vocabulary.update({1: 'первый'})
vocabulary
{2: 'второй', 5: 'пятый', 1: 'первый'}
vocabulary[10] = 'ten'
vocabulary
{2: 'второй', 5: 'пятый', 1: 'первый', 10: 'ten'}
```
- Метод get вернет значение по ключу или же при отсутствии ключа - второй параметр из get()
```py
vocabulary.get(2)
'второй'
vocabulary.get(2,'ret')
'второй'
vocabulary.get(11,'ret')
'ret'
vocabulary.clear()
vocabulary
{}
```
#### 9.5 Методы для работы со множествами
```py
my_set = {1,2,3,4,5}
type(my_set)
<class 'set'>
dir(my_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']
my_set.update({6,7})
my_set
{1, 2, 3, 4, 5, 6, 7}
my_set.add(120)
my_set
{1, 2, 3, 4, 5, 6, 7, 120}
my_set.pop()
1
my_set.pop()
2
my_set
{3, 4, 5, 6, 7, 120}
my_set.remove(120)
my_set
{3, 4, 5, 6, 7}
```
- При использовании copy() исходный объект не будет изменятся
```py
new = my_set.copy()
new
{3, 4, 5, 6, 7}
my_set.add(120)
new
{3, 4, 5, 6, 7}
my_set
{3, 4, 5, 6, 7, 120}
```
- Пересечение множеств и очистка
```py
new.intersection(my_set)
{3, 4, 5, 6, 7}
new.add(1500)
new.intersection(my_set)
{3, 4, 5, 6, 7}
new.clear();my_set.clear()
my_set;new
set()
set()
```

87
TEMA3/task.md Обычный файл
Просмотреть файл

@@ -0,0 +1,87 @@
# Общее контрольное задание по теме 3
**Антонов Дмитрий, А-03-23**
## Задание 1
1. Преобразовать восьмеричное значение 45 в целое число.
## Решение
```py
int('45',8)
```
## Задание 2
2. Создать объект-словарь D со значениями {"усиление":23, "запаздывание":12, "постоянная вре-мени":78} и затем осуществить его преобразование в два списка: ключей и значений, а затем – эти два списка преобразовать в один кортеж. Чем отличается кортеж от списка?
## Решение
```py
D = {"усиление":23, "запаздывание":12, "постоянная времени":78}
klist = list(D.keys()); vallist = list(D.values())
klist;vallist
['усиление', 'запаздывание', 'постоянная времени']
[23, 12, 78]
ktupl = tuple(klist);valtupl = tuple(vallist)
ktupl;valtupl
('усиление', 'запаздывание', 'постоянная времени')
(23, 12, 78)
```
- Ответ: Кортеж является неизменяемым объектом в отличие от списка. В связи с свойством неязменяемости у кортежа нет некоторых методов, которые есть у списка.
## Задание 3
3. Напишите и выполните единое выражение, осуществляющее деление числа 1768 на 24.8 с округ-лением вниз, с определением после этого остатка от деления получившегося значения на 3 и за-тем возведения результата в степень 2.4.
## Решение
```py
((1768//24.8)%3)**2.4
5.278031643091577
```
## Задание 4
4. Напишите и выполните единое выражение, последовательно осуществляющее следующие опера-ции: двоичное И для чисел 13 и 27, инверсия полученного значения, двоичное исключающее ИЛИ для полученного значения и числа 14, сдвиг полученного значения на два разряда влево.
## Решение
```py
(~((13&27))^14)<<2
-32
```
## Задание 5
5. Создать список с 4 одинаковыми элементами 'колебат' и написать оператор проверки наличия комбинации символов 'аткол' в результате конкатенации второго и третьего элементов этого списка.
## Решение
```py
newList = ['колебат']*4
newList
['колебат', 'колебат', 'колебат', 'колебат']
newList.append(newList[1]+newList[2])
newList
['колебат', 'колебат', 'колебат', 'колебат', 'колебатколебат']
any('аткол' in element for element in newList)
True
'аткол' in newList[1] + newList[2]
True
```
## Задание 6
6. Определить список методов, доступных у ранее созданного словаря D. Поочередно использо-вать его методы keys и values, определить, что можно получить с применением этих методов.
## Решение
```py
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']
D.keys()
dict_keys(['усиление', 'запаздывание', 'постоянная времени'])
D.values()
dict_values([23, 12, 78])
```
## Задание 7
7. Создать объект - символьную строку с текстом данного предложения. Из символьной строки создать список, элементами которого будут отдельные слова из созданной строки. Заменить в списке элемент «-» на «,». Удалить из списка элемент со значением «данного». Отобразить получившийся список.
## Решение
```py
string = "Создать объект - символьную строку с текстом данного предложения"
new_list = string.replace('-',',').split(' ')
'данного' in new_list
True
new_list.remove('данного')
print(new_list)
['Создать', 'объект', ',', 'символьную', 'строку', 'с', 'текстом', 'предложения']
```

71
TEMA3/test.md Обычный файл
Просмотреть файл

@@ -0,0 +1,71 @@
# Индивидуальное контрольное задание по теме 3
**Антонов Дмитрий, А-03-23**
## Задание
M1_18
1) Можно ли, используя язык Python, создавать загрузочные программы, исполнимые в среде операционной системы?
- Да, можно. Нужно создать скрипт с рсширением .py, для использования написать команду:
```py
import #name of file .py
```
Так же для запуска можно использовать терминал:
```bash
python3 #name of file .py
```
2) Создайте объект-список с 20 убывающими по величине элементами, начиная от 115 с шагом 12. Напишите инструкцию, доказывающую, что создан объект именно требуемого типа. Напишите инструкцию отображения списка атрибутов созданного объекта.
### Решение
- Способ 1
```py
i = 115
lst=[]
lst.append(i)
while(len(lst)!=20):
lst.append(i-12)
i-=12
```
- Способ 2
```py
lst=[115 - 12*current for current in range(20)]
lst
[115, 103, 91, 79, 67, 55, 43, 31, 19, 7, -5, -17, -29, -41, -53, -65, -77, -89, -101, -113]
type(lst)
<class 'list'>
dir(lst)
['__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']
```
3) Напишите инструкцию, проверяющую наличие в списке элемента со значением 47. Если его нет в списке, напишите инструкцию, добавляющую этот элемент в список так, чтобы не нарушить убывающий порядок элементов. Отобразите полученный список.
### Решение
- Способ 1
```py
47 in lst
False
lst.insert(4,47)
lst
[115, 95, 75, 55, 47, 35, 15, -5, -25, -45, -65, -85, -105, -125, -145, -165, -185, -205, -225, -245, -265]
```
- Способ 2
```py
lst.append(47)
lst = sorted(lst,reverse=True)
lst
[115, 95, 75, 55, 47, 35, 15, -5, -25, -45, -65, -85, -105, -125, -145, -165, -185, -205, -225, -245, -265]
```
4) Преобразуйте список в кортеж. Рассчитайте сумму 6 элементов кортежа, начиная с 5-го от начала. Выведите результат на экран в виде "Сумма элементов=ХХХ".
### Решение
```py
lst = tuple(lst)
sum_of_lst = sum(lst[4:4+6:1])
print("Сумма элементов={}".format(sum_of_lst))
Сумма элементов=22
```
5) Добавьте к кортежу элемент со значением 0. Удалите из него элемент со значением 55. Выведите полученный кортеж на экран.
### Решение
```py
lst=lst+(0,)
lst = lst[None:2:1]+lst[4:None:1]
lst
(115, 95, 47, 35, 15, -5, -25, -45, -65, -85, -105, -125, -145, -165, -185, -205, -225, -245, -265, 0)
```

Двоичные данные
TEMA4/Ris1.png Обычный файл

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

После

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

Двоичные данные
TEMA4/Ris2.png Обычный файл

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

После

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

Двоичные данные
TEMA4/Ris3.png Обычный файл

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

После

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

Двоичные данные
TEMA4/Ris4.png Обычный файл

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

После

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

Двоичные данные
TEMA4/Ris5.png Обычный файл

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

После

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

541
TEMA4/report.md Обычный файл
Просмотреть файл

@@ -0,0 +1,541 @@
# Отчет по теме 4
**Антонов Дмитрий, А-03-23**
### 1.Начало работы, настройка текущего каталога
```py
Python 3.13.7 (v3.13.7:bcee1c32211, Aug 14 2025, 19:10:51) [Clang 16.0.0 (clang-1600.0.26.6)] on darwin
Enter "help" below or click "Help" above for more information.
import os
os.chdir('//Users//dmitrijantonov//Desktop//POAC//python-labs//TEMA4//')
os.getcwd()
'/Users/dmitrijantonov/Desktop/POAC/python-labs/TEMA4'
```
### 2. Изучаю стандартные функции в модуле builtins
#### 2.1 Функция 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(123.456,1)
123.5
round(123.456,0)
123.0
round(123.456,5)
123.456
round(123.456,2)
123.46
type(round(123.456,1))
<class 'float'>
type(round(123.456,0))
<class 'float'>
round(123.456)
123
type(round(123.456))
<class 'int'>
round(123.76)
124
```
#### 2.2 Изучаю функцию range
- Правая граница в создаваемую последовательность включена не будет
```py
gg=range(76,123,9)
type(gg)
<class 'range'>
```
- Преобразую в список
```py
list(gg)
[76, 85, 94, 103, 112, 121]
```
- Правая граница - 0, шаг по умолачнию 1.
```py
range(23)
range(0, 23)
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]
```
#### 2.3 Изучаю функцию zip
```py
qq = ["Антонов"]
type(qq)
<class 'list'>
type(qq[0])
<class 'str'>
qq.extend(['Корнеев','Ефимова','Гордиевских'])
qq
['Антонов', 'Корнеев', 'Ефимова', 'Гордиевских']
ff=zip(gg,qq)
ff
<zip object at 0x105131dc0>
tuple(ff)
((76, 'Антонов'), (85, 'Корнеев'), (94, 'Ефимова'), (103, 'Гордиевских'))
```
- Нельзя обратиться по индексу к объекту zip. Так как это «итерируемый объект» класса zip
```py
ff[0]
Traceback (most recent call last):
File "<pyshell#50>", line 1, in <module>
ff[0]
TypeError: 'zip' object is not subscriptable
list(ff)
[]
dict(ff)
{}
```
#### 2.4 Функция eval и exec
- eval - выполненяет код, который был передан в параметрах функции в виде строки
```py
коэффициент усиления=100
dan=eval('5*fff-156')
dan
344.0
eval('5')
5
```
- exec - выполняет множество инструкций
```py
exec(input('введите инструкции:'))
введите инструкции:perem=-123.456;gg=round(abs(perem)+98,3)
gg
221.456
perem
-123.456
exec("1")
exec("o=1")
o
1
#exec выполнит много команд, eval - одну
```
#### 2.5 Применяю стандартные функции
```py
abs(-1)
1
pow(2,2)
4
max(5,555)
555
min(5,555)
5
```
- Для sum можно использовать только итерируемый объект
```py
sum(5,555)
Traceback (most recent call last):
File "<pyshell#23>", line 1, in <module>
sum(5,555)
TypeError: 'int' object is not iterable
sum([5,555])
560
```
- divmod() принимает параметры a — делимое,b — делитель. Возвращает: кортеж (частное, остаток)
```py
divmod(9,9)
(1, 0)
len([1])
1
```
- map выполняет операцию (первый арумент) ко всем элементам второго аргумента
```py
numbers = [1, 2, 3, 4, 5]
result = map(str, numbers)
result
<map object at 0x10d47c3a0>
list(result)
['1', '2', '3', '4', '5']
```
### 3. Функции из стандартного модуля math
- Импортировал модуль, получил его содержимое
```py
import math
dir(math)
['__doc__', '__file__', '__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']
help(math.factorial)
Help on built-in function factorial in module math:
factorial(n, /)
Find n!.
```
- Применил часто встречающиеся функции
```py
math.factorial(5)
120
math.sin(5)
-0.9589242746631385
math.sin(90)
0.8939966636005579
math.sin(0)
0.0
math.sin(1800)
0.13220235275593667
math.acos(1)
0.0
math.acos(0)
1.5707963267948966
math.degrees(math.sin(1))
48.21273601220948
math.degrees(1)
57.29577951308232
math.degrees(9)
515.662015617741
math.radians(90)
1.5707963267948966
math.exp(1)
2.718281828459045
math.e
2.718281828459045
math.log(2)
0.6931471805599453
math.log10(10)
1.0
math.sqrt(25)
5.0
```
- Округление в большую и меньшую сторону
```py
math.ceil(2.2)
3
math.floor(2.2)
2
math.floor(2.9)
2
math.pi
3.141592653589793
```
- Вычисляю значение функции sin(2π/7+e0.23). Проверил через ранее изученную функцию 'eval'
```py
eval("math.sin(2*math.pi/7+math.e**0.23)")
0.8334902641414562
math.sin(2*math.pi/7+math.e**0.23)
0.8334902641414562
math.sin(2*math.pi/7+pow(math.e,0.23))
0.8334902641414562
```
### 4. Изучаю модуль для комплексных чисел - cmath
- Начал работу, импортировал
```py
import cmath
dir(cmath)
['__doc__', '__file__', '__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']
dir(cmath)
['__doc__', '__file__', '__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']
cmath.sqrt(1.2-0.5j) #формула Муавра
(1.118033988749895-0.22360679774997896j)
math.sqrt(1.2)
1.0954451150103321
cmath.phase(1-0.5j)
-0.4636476090008061
```
### 5. Изучаю модуль 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()
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']
```
#### 5.1 Применяю некоторые функции
- random() Возвращает случайное число с плавающей точкой в диапазоне от 0.0 до 1.0
```py
random.random()
0.008800222465144891
random.random()
0.7757718646112775
random.random()
0.6809534532050255
random.random()
0.4430922828704329
```
- uniform() Возвращает случайное число с плавающей точкой в заданном диапазоне
```py
random.uniform(1,20)
3.5170563248621844
random.uniform(1,20)
6.813290848556115
random.uniform(1,20)
18.150692296322372
```
- randint() - только целые числа
```py
random.randint(1,20)
5
random.randint(1,20)
6
random.randint(1,20)
12
```
- Изучаю различные законы распределения
```py
random.gauss()
-0.6902407757014835
random.gauss()
0.850255236263578
random.gauss()
1.379056097779261
random.gauss(10,0) #мат ожидание, дисперсия
10.0
random.choice([1,2,3,4,5])
4
random.choice([1,2,3,4,5])
3
random.choice([1,2,3,4,5])
1
random.choice((1,2,3,4,5))
4
```
- shuffle - меняет местами числа в последовательности. Принимает только итерируемый объект
```py
x = [21,12]
random.shuffle(x)
x
[12, 21]
x = (21,12)
random.shuffle(x)
Traceback (most recent call last):
File "<pyshell#40>", line 1, in <module>
random.shuffle(x)
File "/Library/Frameworks/Python.framework/Versions/3.13/lib/python3.13/random.py", line 361, in shuffle
x[i], x[j] = x[j], x[i]
TypeError: 'tuple' object does not support item assignment
random.betavariate(1,1)
0.36329048486741
random.gammavariate(1,1)
1.1185774335019822
lst = [random.random(),random.gauss(0,1),random.betavariate(0.1,1),random.gammavariate(0.1,1)]
lst
[0.5002931835956634, -1.6735958900161145, 1.7682636159174984e-12, 7.519855470126239e-06]
```
### 6. Модуль time
```py
import time
dir(time)
['CLOCK_MONOTONIC', 'CLOCK_MONOTONIC_RAW', 'CLOCK_MONOTONIC_RAW_APPROX', 'CLOCK_PROCESS_CPUTIME_ID', 'CLOCK_REALTIME', 'CLOCK_THREAD_CPUTIME_ID', 'CLOCK_UPTIME_RAW', 'CLOCK_UPTIME_RAW_APPROX', '_STRUCT_TM_ITEMS', '__doc__', '__loader__', '__name__', '__package__', '__spec__', 'altzone', 'asctime', 'clock_getres', 'clock_gettime', 'clock_gettime_ns', 'clock_settime', 'clock_settime_ns', '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', 'tzset']
```
- Время (секунды) начиная с эпохи Unix - 1970 1 января
```py
time.time()
1760033586.4494689
c1=time.time()
c2=time.time()-c1
c2
5.868124008178711
```
- Текущие сведения о времени UTC. Точка отсчета эпоха Unix
```py
time.gmtime()
time.struct_time(tm_year=2025, tm_mon=10, tm_mday=9, tm_hour=18, tm_min=15, tm_sec=47, tm_wday=3, tm_yday=282, tm_isdst=0)
```
- m_wday день недели 0-6 (0 - понедельник) tm_yday день года 1-366 tm_isdst летнее время 0
```py
dat=time.gmtime()
dat.tm_mon
10
time.gmtime().tm_year
2025
time.gmtime().tm_mday
9
time.gmtime().tm_hour
18
time.gmtime().tm_min
18
time.gmtime().tm_sec
56
time.gmtime().tm_wday
3
time.gmtime().tm_yday
282
time.gmtime().tm_isdst
0
time.localtime()
time.struct_time(tm_year=2025, tm_mon=10, tm_mday=9, tm_hour=21, tm_min=20, tm_sec=46, tm_wday=3, tm_yday=282, tm_isdst=0)
```
- asctime() - принимает кортеж в формате (year, month, day, hour, minute, second, weekday, yearday, isdst). По умолчанию текущее время
```py
time.asctime()
'Thu Oct 9 21:22:52 2025'
time.asctime(time.gmtime())
'Thu Oct 9 18:23:10 2025'
time.asctime(((2025, 1, 1, 12, 0, 0, 2, 1,0)))
'Wed Jan 1 12:00:00 2025'
```
- ctime() Вернет дату, с эпохи Unix. Принимает временя в секундах
```py
time.ctime(1)
'Thu Jan 1 03:00:01 1970' #прошло с начало эпохи в секундах
time.sleep(1)
```
- mktime покажет сколько прошло секунд сначала эпохи Unix
```py
time.mktime(time.localtime())
1760034468.0
time.localtime(c1)
time.struct_time(tm_year=2025, tm_mon=10, tm_mday=9, tm_hour=21, tm_min=14, tm_sec=40, tm_wday=3, tm_yday=282, tm_isdst=0)
time.localtime()
time.struct_time(tm_year=2025, tm_mon=10, tm_mday=9, tm_hour=21, tm_min=28, tm_sec=41, tm_wday=3, tm_yday=282, tm_isdst=0)
```
- Посмотрел доступные модули для работы со временем
```py
import datetime
dir(datetime)
['MAXYEAR', 'MINYEAR', 'UTC', '__all__', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', 'date', 'datetime', 'datetime_CAPI', 'time', 'timedelta', 'timezone', 'tzinfo']
```
### 7. Графические функции
#### 7.1 Построение одного графика
```py
import matplotlib
from matplotlib import pylab
x=list(range(-3,55,4));t=list(range(15))
pylab.plot(t,x)
[<matplotlib.lines.Line2D object at 0x10dfe2350>]
pylab.title('Первый график')
Text(0.5, 1.0, 'Первый график')
pylab.xlabel('время')
Text(0.5, 23.52222222222222, 'время')
pylab.ylabel('сигнал')
Text(42.722222222222214, 0.5, 'сигнал')
pylab.show()
```
![Полученный график](Ris1.png)
#### 7.2 Построение нескольких графиков на рисунке
```py
X1=[12,6,8,10,7];X2=[5,7,9,11,13]
pylab.plot(X1)
[<matplotlib.lines.Line2D object at 0x119cfd950>]
pylab.plot(X2)
[<matplotlib.lines.Line2D object at 0x10df70a50>]
pylab.show()
```
![Несколько графиков на рисунке](Ris2.png)
#### 7.3 Построение круговой диаграммы
```py
region=['Центр','Урал','Сибирь','Юг']
naselen=[65,12,23,17]
pylab.pie(naselen,labels=region)
([<matplotlib.patches.Wedge object at 0x10dea16a0>, <matplotlib.patches.Wedge object at 0x10dfb39d0>, <matplotlib.patches.Wedge object at 0x10dfb3d90>, <matplotlib.patches.Wedge object at 0x10dfb0050>], [Text(-0.19101313413904503, 1.0832885038559115, 'Центр'), Text(-0.861328292412156, -0.6841882582231001, 'Урал'), Text(0.04429273995539947, -1.0991078896938387, 'Сибирь'), Text(0.9873750693480946, -0.4848612919483732, 'Юг')])
pylab.show()
```
![Круговая диаграмма](Ris3.png)
#### 7.4 Построение гистограммы
```py
data = list(range(1,50,10))
pylab.hist(data,bins = 10,edgecolor='red',label='ТЕСТ')
(array([1., 0., 1., 0., 0., 1., 0., 1., 0., 1.]), array([ 1., 5., 9., 13., 17., 21., 25., 29., 33., 37., 41.]), <BarContainer object of 10 artists>)
pylab.ylabel('количество попаданий в корзину')
Text(42.722222222222214, 0.5, 'количество попаданий в корзину')
pylab.xlabel('значения')
Text(0.5, 23.52222222222222, 'значения')
pylab.show()
```
![Гистограмма](Ris4.png)
#### 7.5 Построение диаграммы
```py
data = list(range(1,50,10))
categotia = [1,2,3,4,5]
data
[1, 11, 21, 31, 41]
pylab.xlabel('Категории')
Text(0.5, 23.52222222222222, 'Категории')
pylab.ylabel('Значение каждой категории')
Text(47.097222222222214, 0.5, 'Значение каждой категории')
pylab.bar(categotia,data,color='purple',label='TEST')
<BarContainer object of 5 artists>
pylab.show()
```
![Диаграмма](Ris5.png)
### 8. Изучаю состав статистического модуля statistics
```py
import statistics
dir(statistics)
['Counter', 'Decimal', 'Fraction', 'LinearRegression', 'NormalDist', 'StatisticsError', '_SQRT2', '__all__', '__annotations__', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', '_coerce', '_convert', '_decimal_sqrt_of_frac', '_exact_ratio', '_fail_neg', '_float_sqrt_of_frac', '_integer_sqrt_of_frac_rto', '_isfinite', '_kernel_invcdfs', '_mean_stdev', '_newton_raphson', '_normal_dist_inv_cdf', '_quartic_invcdf', '_quartic_invcdf_estimate', '_random', '_rank', '_sqrt_bit_width', '_sqrtprod', '_ss', '_sum', '_triweight_invcdf', '_triweight_invcdf_estimate', 'acos', 'asin', 'atan', 'bisect_left', 'bisect_right', 'correlation', 'cos', 'cosh', 'count', 'covariance', 'defaultdict', 'erf', 'exp', 'fabs', 'fmean', 'fsum', 'geometric_mean', 'groupby', 'harmonic_mean', 'hypot', 'isfinite', 'isinf', 'itemgetter', 'kde', 'kde_random', 'linear_regression', 'log', 'math', 'mean', 'median', 'median_grouped', 'median_high', 'median_low', 'mode', 'multimode', 'namedtuple', 'numbers', 'pi', 'pstdev', 'pvariance', 'quantiles', 'random', 'reduce', 'repeat', 'sin', 'sqrt', 'stdev', 'sumprod', 'sys', 'tan', 'tau', 'variance']
import statistics as st
help(st.sin)
Help on built-in function sin in module math:
sin(x, /)
Return the sine of x (measured in radians).
help(st.math)
dir(st.math)
['__doc__', '__file__', '__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']
dir(st.tau)
['__abs__', '__add__', '__bool__', '__ceil__', '__class__', '__delattr__', '__dir__', '__divmod__', '__doc__', '__eq__', '__float__', '__floor__', '__floordiv__', '__format__', '__ge__', '__getattribute__', '__getformat__', '__getnewargs__', '__getstate__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__int__', '__le__', '__lt__', '__mod__', '__mul__', '__ne__', '__neg__', '__new__', '__pos__', '__pow__', '__radd__', '__rdivmod__', '__reduce__', '__reduce_ex__', '__repr__', '__rfloordiv__', '__rmod__', '__rmul__', '__round__', '__rpow__', '__rsub__', '__rtruediv__', '__setattr__', '__sizeof__', '__str__', '__sub__', '__subclasshook__', '__truediv__', '__trunc__', 'as_integer_ratio', 'conjugate', 'fromhex', 'hex', 'imag', 'is_integer', 'real']
st.tau
6.283185307179586
st.tau
6.283185307179586
math.pi*2 == st.tau
True
data = list(st.repeat([1,2,3],5))
data
[[1, 2, 3], [1, 2, 3], [1, 2, 3], [1, 2, 3], [1, 2, 3]]
```

82
TEMA4/task.md Обычный файл
Просмотреть файл

@@ -0,0 +1,82 @@
# Общее контрольное задание по теме 4
**Антонов Дмитрий, А-03-23**
## Задание 1
1. Напишите и исполните единое выражение, реализующее последовательное выполнение следующих операций: вычисление фазы комплексного числа 0.2+0.8j, округление результата до двух знаков после запятой, умножение полученного значения на 20, получение кортежа из двух значений: округленное вниз значение от деления результата на 3 и остатка от этого деления.
## Решение
```py
import cmath as c
c.phase(0.2+0.8j)
1.3258176636680326
round(c.phase(0.2+0.8j),2)
1.33
round(c.phase(0.2+0.8j),2)*20
26.6
divmod(round(c.phase(0.2+0.8j),2)*20,3)
(8.0, 2.6000000000000014)
```
## Задание 2
2. Создайте объект класса struct_time с временными параметрами для текущего московского времени. Создайте строку с текущим часом и минутами.
## Решение
```py
import time as t
t.localtime()
time.struct_time(tm_year=2025, tm_mon=10, tm_mday=9, tm_hour=23, tm_min=34, tm_sec=33, tm_wday=3, tm_yday=282, tm_isdst=0)
type(t.localtime())
str(t.localtime().tm_hour) + ":" + str(t.localtime().tm_min)
'23:34'
<class 'time.struct_time'>
```
## Задание 3
3. Создайте список с элементами – названиями дней недели. Сделайте случайную выборку из этого списка с тремя днями недели.
## Решение
```py
days = ['Пн','Вт','Ср','Чт','Пт','Сб','Вс']
import random as r
NW = [r.choice(days),r.choice(days),r.choice(days)]
NW
['Чт', 'Сб', 'Ср']
r.sample(days,3)
['Чт', 'Пн', 'Пт']
```
## Задание 4
4. Напишите инструкцию случайного выбора числа из последовательности целых чисел от 14 до 32 с шагом 3.
## Решение
```py
import random as r
r.choice(list(range(14,33,3)))
20
```
## Задание 5
5. Сгенерируйте нормально распределенное число N с математическим ожиданием 15 и стандартным отклонением 4 и округлите его до целого значения. Создайте список с N элементами – случайно выбранными буквами латинского алфавита.
## Решение
```py
import random as r
round(r.gauss(15,4))
17
import string
letters = string.ascii_lowercase
for i in range(0,11,1):
lst.append(r.choice(letters))
lst
['u', 'g', 'l', 'j', 'x', 'n', 'w', 'v', 'w', 'u', 'f']
```
## Задание 6
6. Напишите инструкцию для определения временного интервала в минутах, прошедшего с момента предыдущего (из п.2) определения временных параметров.
## Решение
```py
before = t.time()
before
1760044368.6590788
now_sec = t.time() - before
now_sec
13.17490816116333
now_sec*=(1/60)
now_sec
0.2195818026860555
```

47
TEMA4/test.md Обычный файл
Просмотреть файл

@@ -0,0 +1,47 @@
# Индивидуальное контрольное задание по теме 4
**Антонов Дмитрий, А-03-23**
## Задание
M18
1) Напишите инструкцию запоминания текущего Московского времени в некоторой переменной.
```py
import time as tm
current_t = tm.localtime()
current_t
time.struct_time(tm_year=2025, tm_mon=10, tm_mday=10, tm_hour=9, tm_min=56, tm_sec=50, tm_wday=4, tm_yday=283, tm_isdst=0)
```
2) Создайте кортеж с целочисленными значениями от 0 до 136 с шагом 17. Подсчитайте число элементов в кортеже.
```py
tpl = tuple(range(0,137,17))
tpl
(0, 17, 34, 51, 68, 85, 102, 119, 136)
len(tpl)
9
```
3) Создайте нормально распределенное число Z с математическим ожиданием 47 и стандартным отклонением 22.
```py
import random as r
z = r.gauss(47,22)
z
39.16778826775201
z = round(z)
```
4) Нацело разделите сумму элементов кортежа на округленное до целого значения Z.
```py
res = sum(tpl)//z
```
5) Отобразите результат в виде символьной строки вида «Результат = ХХ» с использование формата.
```py
print("Результат = {}".format(res))
Результат = 15
```
6) Определите время в минутах, прошедшее с начала выполнения данного задания.
```py
how_much = tm.time() - tm.mktime(current_t)
how_much
610.6642169952393
how_much *= 1/60
how_much
10.177736949920654
```

Двоичные данные
TEMA5/Figure_1.png Обычный файл

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

После

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

Двоичные данные
TEMA5/Figure_2.png Обычный файл

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

После

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

277
TEMA5/report.md Обычный файл
Просмотреть файл

@@ -0,0 +1,277 @@
# Отчет по теме 4
**Антонов Дмитрий, А-03-23**
### Начало работы, изучение циклов и ветвлений
### 1. Изучение ветвления if else
- Множественное ветвление с помощью elif
```py
porog = 5
rashod1 = 10
rashod2 = 15
if rashod1>=porog:
dohod=12
elif rashod2==porog:
dohod=0
else:
dohod=-8
dohod
12
```
#### 1.1 Проверка сложного условия
```py
if rashod1>=3 and rashod2==4:
dohod=rashod1
if rashod2==porog or rashod1<rashod2:
dohod=porog
dohod
12
```
#### 1.2 Пример нескольких ветвей elif
```py
if porog==3:
dohod=1
elif porog==4:
dohod=2
elif porog==5:
dohod=3
else:
dohod=0
dohod
3
```
#### 1.3 Присваивание значения переменной с использованием условий if else
```py
dohod=2 if porog>=4 else 0
dohod
2
```
- Блок действий можно записать в строку
```py
if porog>=5: rashod1=6; rashod2=0
rashod1
6
```
### 2. Изучения цикла for
```py
temperatura=5
for i in range(3,18,3):
temperatura+=i
temperatura
50
```
#### 2.1 Комбинированние цикла for и if
```py
sps=[2,15,14,8]
for k in sps:
if len(sps)<=10:sps.append(sps[0])
else:break
sps
[2, 15, 14, 8, 2, 2, 2, 2, 2, 2, 2]
```
- В цикле ниже создается копия списка
```py
sps=[2,15,14,8]
for k in sps[:]:
if len(sps)<=10:sps.append(sps[0])
else:break
sps
[2, 15, 14, 8, 2, 2, 2, 2]
import random as rn;sps5=[]
for i in range(10):
sps5.append(rn.randint(1,100))
ss=sum(sps5)
if ss>500: break
else:
print(ss)
for i in range(10):
sps5.append(rn.randint(1,10))
ss=sum(sps5)
if ss>500: break
else:
print(ss)
992
sps5=[]
for i in range(10):
sps5.append(rn.randint(1,100))
ss=sum(sps5)
if ss>500: break
else:
print(ss)
453
stroka='Это – автоматизированная система';stroka1=""
for ss in stroka:
stroka1+=" "+ss
stroka1
' Э т о – а в т о м а т и з и р о в а н н а я с и с т е м а'
```
### 3. Запись цикла в строке
```py
import math
sps2=[math.sin(i*math.pi/5+2) for i in range(100)]
sps2
[0.9092974268256817, 0.49103209793281005, -0.11479080280322804, -0.6767675184643197, -0.9802420445539634, -0.9092974268256817, -0.49103209793281016, 0.11479080280322791, 0.6767675184643196, 0.9802420445539634, 0.9092974268256818, 0.4910320979328103, -0.1147908028032278, -0.6767675184643196, -0.9802420445539632, -0.9092974268256818, -0.4910320979328104, 0.11479080280322768, 0.6767675184643195, 0.9802420445539632, 0.9092974268256819, 0.4910320979328105, -0.11479080280322579, -0.6767675184643194, -0.9802420445539632, -0.9092974268256819, -0.4910320979328106, 0.11479080280322743, 0.6767675184643193, 0.9802420445539632, 0.909297426825682, 0.49103209793281066, -0.1147908028032273, -0.6767675184643192, -0.9802420445539632, -0.909297426825682, -0.4910320979328108, 0.11479080280322719, 0.6767675184643192, 0.9802420445539631, 0.9092974268256822, 0.491032097932814, -0.11479080280322707, -0.676767518464319, -0.9802420445539625, -0.9092974268256822, -0.491032097932811, 0.11479080280323047, 0.6767675184643189, 0.9802420445539625, 0.9092974268256822, 0.4910320979328142, -0.11479080280322682, -0.6767675184643215, -0.9802420445539631, -0.9092974268256808, -0.4910320979328112, 0.11479080280322317, 0.6767675184643187, 0.9802420445539624, 0.9092974268256823, 0.4910320979328082, -0.11479080280322658, -0.6767675184643213, -0.980242044553963, -0.9092974268256838, -0.49103209793281144, 0.11479080280322293, 0.6767675184643186, 0.9802420445539637, 0.9092974268256824, 0.49103209793280844, -0.11479080280322633, -0.6767675184643158, -0.980242044553963, -0.9092974268256839, -0.49103209793281166, 0.11479080280322974, 0.6767675184643184, 0.9802420445539637, 0.9092974268256825, 0.4910320979328149, -0.11479080280321903, -0.6767675184643209, -0.9802420445539629, -0.909297426825681, -0.4910320979328119, 0.11479080280322244, 0.6767675184643129, 0.9802420445539636, 0.9092974268256826, 0.49103209793281505, -0.11479080280322584, -0.6767675184643155, -0.9802420445539644, -0.9092974268256812, -0.49103209793281205, 0.1147908028032222, 0.6767675184643127, 0.980242044553965]
```
- Построение графика
```py
import matplotlib.pyplot as plt
pylab.plot(sps2,color='green',label = 'синусоидальный сигнал')
[<matplotlib.lines.Line2D object at 0x0000023A2BB96900>]
pylab.title('График синусоидального сигнала')
Text(0.5, 1.0, 'График синусоидального сигнала')
plt.show()
```
![График синусоидального сигнала](Figure_1)
### 4. Изучение цикла while
```py
rashod=300
while rashod:
print("Расход=",rashod)
rashod-=50
Расход= 300
Расход= 250
Расход= 200
Расход= 150
Расход= 100
Расход= 50
import math
stroka='Расчет процесса в объекте регулирования';i=0;sps2=[]
while i<len(stroka):
r=1-2/(1+math.exp(0.1*i))
sps2.append(r)
print('Значение в момент',i,"=",r)
i+=1
Значение в момент 0 = 0.0
Значение в момент 1 = 0.049958374957880025
Значение в момент 2 = 0.09966799462495568
Значение в момент 3 = 0.14888503362331795
Значение в момент 4 = 0.197375320224904
Значение в момент 5 = 0.2449186624037092
Значение в момент 6 = 0.2913126124515909
Значение в момент 7 = 0.3363755443363322
Значение в момент 8 = 0.3799489622552249
Значение в момент 9 = 0.421899005250008
Значение в момент 10 = 0.4621171572600098
Значение в момент 11 = 0.5005202111902354
Значение в момент 12 = 0.5370495669980353
Значение в момент 13 = 0.5716699660851172
Значение в момент 14 = 0.6043677771171636
Значение в момент 15 = 0.6351489523872873
Значение в момент 16 = 0.6640367702678489
Значение в момент 17 = 0.6910694698329307
Значение в момент 18 = 0.7162978701990245
Значение в момент 19 = 0.7397830512740043
Значение в момент 20 = 0.7615941559557649
Значение в момент 21 = 0.7818063576087741
Значение в момент 22 = 0.8004990217606297
Значение в момент 23 = 0.8177540779702878
Значение в момент 24 = 0.8336546070121553
Значение в момент 25 = 0.8482836399575129
Значение в момент 26 = 0.8617231593133063
Значение в момент 27 = 0.874053287886007
Значение в момент 28 = 0.8853516482022625
Значение в момент 29 = 0.8956928738431645
Значение в момент 30 = 0.9051482536448664
Значение в момент 31 = 0.9137854901178277
Значение в момент 32 = 0.9216685544064713
Значение в момент 33 = 0.9288576214547277
Значение в момент 34 = 0.935409070603099
Значение в момент 35 = 0.9413755384972874
Значение в момент 36 = 0.9468060128462683
Значение в момент 37 = 0.9517459571646616
Значение в момент 38 = 0.9562374581277391
```
- Построение графика
```py
import pylab
pylab.plot(sps2,color='yellow')
[<matplotlib.lines.Line2D object at 0x000001DE04A45550>]
pylab.title('сигнал на выходе инерционного звена из списка sps2')
Text(0.5, 1.0, 'сигнал на выходе инерционного звена из списка sps2')
pylab.show()
```
![сигнал на выходе инерционного звена из списка](Figure_2)
### 5. Проврека, является ли число простым с помощью циклов
```py
chislo=267 #Проверяемое число
kandidat =chislo // 2
kandidat
133
while kandidat > 1:
if chislo%kandidat == 0: # Остаток от деления
print(chislo, ' имеет множитель ', kandidat)
break # else выполняться не будет
kandidat -= 1
else: # При завершении цикла без break
print(chislo, ' является простым!')
267 имеет множитель 89
for current in range(250,301,1):
kandidat = current // 2
while kandidat > 1:
if current%kandidat == 0: # Остаток от деления
print(current, ' имеет делитель ', kandidat)
break # else выполняться не будет
kandidat -= 1
else: # При завершении цикла без break
print(current, ' является простым!')
250 имеет множитель 125
251 является простым!
252 имеет множитель 126
253 имеет множитель 23
254 имеет множитель 127
255 имеет множитель 85
256 имеет множитель 128
257 является простым!
258 имеет множитель 129
259 имеет множитель 37
260 имеет множитель 130
261 имеет множитель 87
262 имеет множитель 131
263 является простым!
264 имеет множитель 132
265 имеет множитель 53
266 имеет множитель 133
267 имеет множитель 89
268 имеет множитель 134
269 является простым!
270 имеет множитель 135
271 является простым!
272 имеет множитель 136
273 имеет множитель 91
274 имеет множитель 137
275 имеет множитель 55
276 имеет множитель 138
277 является простым!
278 имеет множитель 139
279 имеет множитель 93
280 имеет множитель 140
281 является простым!
282 имеет множитель 141
283 является простым!
284 имеет множитель 142
285 имеет множитель 95
286 имеет множитель 143
287 имеет множитель 41
288 имеет множитель 144
289 имеет множитель 17
290 имеет множитель 145
291 имеет множитель 97
292 имеет множитель 146
293 является простым!
294 имеет множитель 147
295 имеет множитель 59
296 имеет множитель 148
297 имеет множитель 99
298 имеет множитель 149
299 имеет множитель 23
300 имеет множитель 150
```

42
TEMA5/task.md Обычный файл
Просмотреть файл

@@ -0,0 +1,42 @@
# Общее контрольное задание по теме 5
**Антонов Дмитрий, А-03-23**
### Фрагмент программы поиска средней оценки по введенной фамилии
```py
stng = 'Hello Poac'
for symbol in strng:
if(symbol.isalpha()):
dictionary[symbol] = ord(symbol.lower()) - 96
dictionary
{'H': 8, 'e': 5, 'l': 12, 'o': 15, 'P': 16, 'a': 1, 'c': 3}
```
### Проверка нахождения элемента в списке
```py
spis = 'Создайте список со словами из задания данного пункта'.split(" ")
if 'список' in spis:
print('слово найдено!!!!')
else: print('Такого слова нет!!!')
слово найдено!!!!
if 'POAC' in spis:
print('слово найдено!!!!')
else: print('Такого слова нет!!!')
Такого слова нет!!!
```
### Программа расчета средней оценки
```py
familia = ['Антонов','Ефимова','Гордиевских','Девятова']
mark = [5,5,5,5]
familia2 = ['Ефимова','Гордиевских','Девятова','Антонов']
mark_winter = [5,5,5,5]
inpt = input("Введите фамилию студента:")
for curent in familia:
for crnnt in familia2:
if(crnnt == inpt and curent == inpt):
indx = familia.index(crnnt)
indx2 = familia2.index(crnnt)
print((mark[indx]+mark_winter[indx2])/2)
break
```

25
TEMA5/test.md Обычный файл
Просмотреть файл

@@ -0,0 +1,25 @@
# Контрольное задание по лабораторной работе №5
**Антонов Дмитрий А-03-23**
### Создание кортежа со случайными числами в диапазоне от 20 до 98, размером 20
```py
kort = tuple(rnd.uniform(20,99) for i in range(20))
kort
(53.86162392247127, 23.64159596287047, 61.209080362158105, 90.19643865216301, 37.26052220441301, 26.291107540558315, 53.4491861411439, 70.91796073939588, 25.89828362411023, 45.202539366284824, 90.03260139325205, 76.24879442920543, 47.45325503226437, 61.971082638980874, 54.25047450833701, 46.43893208150455, 54.68716762380848, 92.31434477894435, 82.8913567268144, 40.52090472090592)
```
- Проверил тип созданного объекта
```py
type(kort)
<class 'tuple'>
```
### Создание нового кортежа, который включает элементы со значениями от 40 до 70
```py
newkort = tuple(now for now in kort if 40<=now<=70)
newkort
(53.86162392247127, 61.209080362158105, 53.4491861411439, 45.202539366284824, 47.45325503226437, 61.971082638980874, 54.25047450833701, 46.43893208150455, 54.68716762380848, 40.52090472090592)
```
### Расчет среднего значения по новому кортежу
```py
average = sum(newkort)/ len(newkort)
average
51.90442463978593
```

12
TEMA5/л5.py Обычный файл
Просмотреть файл

@@ -0,0 +1,12 @@
familia = ['Антонов','Ефимова','Гордиевских','Девятова']
mark = [5,5,5,5]
familia2 = ['Ефимова','Гордиевских','Девятова','Антонов']
mark_winter = [5,5,5,5]
inpt = input("Введите фамилию студента:")
for curent in familia:
for crnnt in familia2:
if(crnnt == inpt and curent == inpt):
indx = familia.index(crnnt)
indx2 = familia2.index(crnnt)
print((mark[indx]+mark_winter[indx2])/2)
break