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

..

13 Коммитов

Автор SHA1 Сообщение Дата
Дмитрий Антонов
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
26 изменённых файлов: 2747 добавлений и 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
```