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

..

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

Автор SHA1 Сообщение Дата
Дмитрий Антонов 5b78df2a99 done lab work
1 месяц назад
Дмитрий Антонов 38387e98f7 almost done labor eight
2 месяцев назад
Дмитрий Антонов 0cb3072d7c done
3 месяцев назад
Дмитрий Антонов eb4349f8a3 resolve mistakes
3 месяцев назад
Дмитрий Антонов 39f0d2548a done lab
3 месяцев назад
Дмитрий Антонов 4f678a7432 done lab
3 месяцев назад
Дмитрий Антонов a185e7e4b4 done
3 месяцев назад
Дмитрий Антонов dcf03616b5 resolve mistake
4 месяцев назад
Дмитрий Антонов 4a55004c1c resolve mistake
4 месяцев назад
Дмитрий Антонов 60b1ff7d8c task:done lab 3
4 месяцев назад
Дмитрий Антонов 1014272373 test task - done
5 месяцев назад
Дмитрий Антонов 5a15312680 report and task - done
5 месяцев назад
AntonovDAn 0568684c62 Изменил(а) на 'TEMA1/test.md'
5 месяцев назад
AntonovDAn 7836d7e9f3 Изменил(а) на 'TEMA1/test.md'
5 месяцев назад
AntonovDAn d5a87e155b Изменил(а) на 'TEMA1/test.md'
5 месяцев назад
Пользователь № 1 аудитории Ж-111 ef92cbf3c3 контрольный вопрос
5 месяцев назад
AntonovDAn 332dc64b51 Изменил(а) на 'TEMA1/report.md'
5 месяцев назад
AntonovDAn 7a19b2e98e Изменил(а) на 'TEMA1/report.md'
5 месяцев назад
Пользователь № 1 аудитории Ж-111 4816a679fd report - ready
5 месяцев назад

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

@ -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)

@ -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>
```

@ -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}
```

@ -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'], 'кортеж': ('Дмитрий', 'Артем', 'Александр', 'Максим', 'Иван', 'Людмила')}
```
- Создал словарь иным способом, затем вывел

@ -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
```

@ -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()
```

@ -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)
['Создать', 'объект', ',', 'символьную', 'строку', 'с', 'текстом', 'предложения']
```

@ -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

@ -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]]
```

@ -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
```

@ -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

@ -0,0 +1,277 @@
# Отчет по теме 5
**Антонов Дмитрий, А-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.png)
### 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.png)
### 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
```

@ -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
```

@ -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
```

@ -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

Двоичные данные
TEMA6/fig1.png

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

После

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

@ -0,0 +1,268 @@
# Отчет по теме 6
**Антонов Дмитрий, А-03-23**
### 1.Начало работы, настройка текущего каталога
```py
import os
os.chdir('//Users//dmitrijantonov//Desktop//POAC//python-labs//TEMA6//')
```
### 2.Вывод данных на экран дисплея
#### 2.1 Эхо-вывод
```py
stroka='Автоматизированная система управления'
stroka
'Автоматизированная система управления'
```
#### 2.2 print вывод
```py
fff=234.5;gg='Значение температуры = '
print(gg, fff) #Можно вывести несколько объектов за одно обращение к функции
Значение температуры = 234.5
print(gg, fff, sep='/')
Значение температуры = /234.5
print(gg, fff,sep='/',end='***'); print('____')
Значение температуры = /234.5***____
print()
print(""" Здесь может выводиться
большой текст,
занимающий несколько строк""")
Здесь может выводиться
большой текст,
занимающий несколько строк
print("Здесь может выводиться",
"большой текст,",
"занимающий несколько строк")
Здесь может выводиться большой текст, занимающий несколько строк
```
#### 2.3 Стандартный поток вывода, модуль sys
```py
import sys
sys.stdout.write('Функция write')
Функция write13
sys.stdout.write('Функция write\n')
Функция write
14
help(sys.stdout.write)
Help on method write in module idlelib.run:
write(s) method of idlelib.run.StdOutputFile instance
Write string s to stream.
Return the number of characters written
(which is always equal to the length of the string).
```
### 3. Ввод c клавиатуры
```py
psw=input('Введите пароль:')
Введите пароль:555550
psw
'555550'
type(psw)
<class 'str'>
while True:
znach=float(input('Задайте коэф.усиления = '))
if znach<17.5 or znach>23.8:
print('Ошибка!')
else:
break
Задайте коэф.усиления = 15.4
Ошибка!
Задайте коэф.усиления = 21.6
import math
print(eval(input('введите выражение для расчета = ')))
введите выражение для расчета = math.log10(23/(1+math.exp(-3.24)))
1.34504378689765
```
### 4.Ввод-вывод при работе с файлами
#### 4.1 Функции для работы с путем к файлу
- Настройка текущей директории
```py
import os
os.getcwd()
'/Users/dmitrijantonov/Desktop/POAC/python-labs/TEMA6'
Antonov = os.getcwd()
print(Antonov)
/Users/dmitrijantonov/Desktop/POAC/python-labs/TEMA6
os.getcwd()
'/Users/dmitrijantonov/Desktop/POAC/python-labs/TEMA6'
```
- Пробую методы вложенного модуля path
```py
os.listdir()
['.DS_Store', 'hm', 'report.md', '.gitkeep']
os.path.isdir('/Users/dmitrijantonov/Desktop/POAC/python-labs/TEMA6')
True
os.path.isdir('python-labs/TEMA6')
False
os.path.abspath('report.md')
'/Users/dmitrijantonov/Desktop/POAC/python-labs/TEMA6/report.md'
file = os.path.abspath('report.md')
drkt=os.path.dirname(file)
drkt
'/Users/dmitrijantonov/Desktop/POAC/python-labs/TEMA6'
os.path.basename(file)
'report.md'
os.path.split(file)
('/Users/dmitrijantonov/Desktop/POAC/python-labs/TEMA6', 'report.md')
os.path.exists(file)
True
os.path.exists(file+'eee')
False
```
#### 4.3 Открытие/закрытие файла, функция open/close
```py
help(open)
fp=open(file=drkt+'//zapis1.txt',mode='w')
drkt
'/Users/dmitrijantonov/Desktop/POAC/python-labs/TEMA6'
dir(fp)
['_CHUNK_SIZE', '__class__', '__del__', '__delattr__', '__dict__', '__dir__', '__doc__', '__enter__', '__eq__', '__exit__', '__format__', '__ge__', '__getattribute__', '__getstate__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__iter__', '__le__', '__lt__', '__module__', '__ne__', '__new__', '__next__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '_checkClosed', '_checkReadable', '_checkSeekable', '_checkWritable', '_finalizing', 'buffer', 'close', 'closed', 'detach', 'encoding', 'errors', 'fileno', 'flush', 'isatty', 'line_buffering', 'mode', 'name', 'newlines', 'read', 'readable', 'readline', 'readlines', 'reconfigure', 'seek', 'seekable', 'tell', 'truncate', 'writable', 'write', 'write_through', 'writelines']
fp.close()
```
#### 4.4 Запись в файл функция write
```py
sps=list(range(1,13))
fp2=open('zapis3.txt','w')
fp2.write(str(sps[:4])+'\n');fp2.write(str(sps[4:8])+'\n');fp2.write(str(sps[8:])+'\n');fp2.close()
13
13
16
```
[!Данные записанные в файл](fig1.png)
- Запись списка списков
```py
sps3=[['Иванов И.',1],['Петров П.',2],['Сидоров С.',3]]
fp3=open('zapis4.txt','w')
for i in range(len(sps3)):
stroka4=sps3[i][0]+' '+str(sps3[i][1])
fp3.write(stroka4)
11
11
12
fp3.close()
gh=open('zapis5.txt','w')
for r in sps3:
gh.write(r[0]+' '+str(r[1])+'\n')
12
12
13
gh.close()
```
#### 4.5 Чтение информации из текстового файла.
```py
sps1=[];fp=open('zapis3.txt')
for stroka in fp:
stroka=stroka.rstrip('\n')
stroka=stroka.replace('[','')
stroka=stroka.replace(']','')
sps1=sps1+stroka.split(',')
fp.close()
print(sps1)
['1', ' 2', ' 3', ' 4', '5', ' 6', ' 7', ' 8', '9', ' 10', ' 11', ' 12']
```
- Теперь элементы списков совпадают
```py
for i in range(len(sps1)):
sps1[i] = int(sps1[i])
sps1==sps
True
```
#### 4.6 Чтение информации из файла с помощью метода read
```py
fp=open('zapis3.txt');stroka1=fp.read(12);stroka2=fp.read();fp.close()
stroka1
'[1, 2, 3, 4]'
stroka2
'\n[5, 6, 7, 8]\n[9, 10, 11, 12]\n'
```
- Изучение функции readline и readlines
```py
fp=open('zapis3.txt');stroka1=fp.readline()
stroka1
'[1, 2, 3, 4]\n'
stroka2=fp.readline(3)
stroka2
'[5,'
fp.close()
fp=open('zapis3.txt');stroka1=fp.readlines()
stroka1
['[1, 2, 3, 4]\n', '[5, 6, 7, 8]\n', '[9, 10, 11, 12]\n']
fp.close()
```
#### 4.9 Ввод-вывод объектов с использованием функций из модуля pickle
```py
import pickle
mnoz1={'pen','book','pen','iPhone','table','book'}
fp=open('zapis6.mnz','wb')
pickle.dump(mnoz1,fp)
fp.close()
fp=open('zapis6.mnz','rb')
mnoz2=pickle.load(fp)
fp.close()
```
- Проверка объектов на совпадение
```py
mnoz2 == mnoz1
True
```
- Отличие от исходного в том, что сохранились только уникальные элементы
```py
mnoz2
{'table', 'book', 'iPhone', 'pen'}
mnoz1
{'table', 'book', 'iPhone', 'pen'}
```
- Запись/чтение нескольких объектов
```py
sps3
[['Иванов И.', 1], ['Петров П.', 2], ['Сидоров С.', 3]]
fp=open('zapis7.2ob','wb')
pickle.dump(mnoz1,fp);pickle.dump(sps3,fp);fp.close()
fp=open('zapis7.2ob','rb')
obj1=pickle.load(fp)
obj2=pickle.load(fp)
fp.close()
obj1,obj2
({'table', 'book', 'iPhone', 'pen'}, [['Иванов И.', 1], ['Петров П.', 2], ['Сидоров С.', 3]])
obj1==mnoz1; obj2==sps3
True
True
```
### 5. Перенаправление потоков ввода и вывода данных
- Перенаправление вывода в файл
```py
import sys
vr_out=sys.stdout
fc=open('Stroka.txt','w')
sys.stdout=fc
print('запись строки в файл')
sys.stdout=vr_out
print('запись строки на экран')
запись строки на экран
fc.close()
```
- Перенаправление вввода из файла
```py
tmp_in = sys.stdin
fd = open("Stroka.txt", "r")
sys.stdin = fd
while True:
try:
line = input ()
print(line)
except EOFError:
break
запись строки в файл
fd.close()
sys.stdin=tmp_in
```

@ -0,0 +1,42 @@
# Общее контрольное задание по теме 6
**Антонов Дмитрий, А-03-23**
1. Создаётся объект-кортеж со 125 целыми случайными числами из диапазона от 6 до 56, пред-ставленными в виде символьных строк.
```py
import random as rn
kort = tuple(str(rn.randint(6,56)) for _ in range(126))
kort
('29', '20', '18', '11', '20', '38', '8', '15', '33', '28', '30', '24', '50', '15', '26', '13', '36', '38', '10', '23', '36', '34', '16', '30', '34', '55', '28', '34', '36', '16', '6', '14', '15', '51', '7', '14', '10', '12', '54', '16', '53', '16', '39', '39', '32', '53', '43', '27', '8', '38', '8', '30', '31', '31', '22', '40', '40', '42', '18', '23', '20', '14', '48', '56', '27', '39', '10', '6', '47', '51', '26', '42', '54', '38', '49', '24', '21', '43', '40', '36', '50', '41', '43', '23', '34', '26', '21', '54', '35', '27', '10', '32', '53', '40', '39', '38', '6', '51', '37', '41', '39', '26', '46', '6', '13', '22', '26', '24', '20', '11', '34', '29', '27', '17', '23', '36', '25', '17', '25', '6', '55', '24', '52', '17', '48', '40')
```
2. Создаётся объект-список с вашей фамилией и 4 фамилиями ваших одноклассников.
```py
spis = ['Антонов','Ефимова','Турханов','Девятова','Гордиевских']
```
3. Записывается кортеж и список в бинарный файл.
```py
import pickle
fp=open('task.bn','wb')
pickle.dump(kort,fp)
pickle.dump(spis,fp)
fp.close()
fp=open('task.bn','rb')
obj1=pickle.load(fp)
obj2=pickle.load(fp)
fp.close()
obj1 == kort; obj2 == spis
True
True
obj1
('29', '20', '18', '11', '20', '38', '8', '15', '33', '28', '30', '24', '50', '15', '26', '13', '36', '38', '10', '23', '36', '34', '16', '30', '34', '55', '28', '34', '36', '16', '6', '14', '15', '51', '7', '14', '10', '12', '54', '16', '53', '16', '39', '39', '32', '53', '43', '27', '8', '38', '8', '30', '31', '31', '22', '40', '40', '42', '18', '23', '20', '14', '48', '56', '27', '39', '10', '6', '47', '51', '26', '42', '54', '38', '49', '24', '21', '43', '40', '36', '50', '41', '43', '23', '34', '26', '21', '54', '35', '27', '10', '32', '53', '40', '39', '38', '6', '51', '37', '41', '39', '26', '46', '6', '13', '22', '26', '24', '20', '11', '34', '29', '27', '17', '23', '36', '25', '17', '25', '6', '55', '24', '52', '17', '48', '40')
obj2
['Антонов', 'Ефимова', 'Турханов', 'Девятова', 'Гордиевских']
if(obj1 == kort and obj2 == spis):
print("Объекты схожи")
Объекты схожи
```
4. Разделяется кортеж на совокупности по 5 чисел в каждой и они записываются в виде отдельных списков со своими именами.
```py
vocab = {}
for i in range(0,len(kort),5):
vocab['группа №'+str(i//5)] = list(kort[i:i+5])
```

@ -0,0 +1,48 @@
# Индивидуальное контрольное задание по теме 6
**Антонов Дмитрий, А-03-23**
## Задание M2_8
1) Создайте множество с 40 элементами - случайными числами, равномерно распределенными на интервале от -20 до +10. Числа должны быть округлены до двух знаков после точки.
```py
import os
os.chdir('//Users//dmitrijantonov//Desktop//POAC//python-labs//TEMA6//')
import random as rn
my_set = set(round(rn.uniform(-20,10),2) for _ in range(40))
my_set
{0.41, 2.22, 3.89, 4.77, 5.04, 6.94, 7.43, 8.16, 9.13, 9.48, 9.85, 6.01, 9.2, -3.82, -19.36, -18.72, -15.84, -9.36, -9.5, -8.1, -4.59, -19.23, -4.49, -4.15, -16.02, -4.74, -16.5, -13.96, -12.95, -11.92, -10.71, -9.89, -8.66, -7.45, -6.18, -5.86, -4.62, -3.52, -2.95, -1.4}
type(my_set)
<class 'set'>
```
2) Запросите у пользователя и введите имя бинарного файла для сохранения множества. Если во введенном имени есть пробелы, замените их на пустые строки.
```py
name = input("Введите имя бинарного файла для сохранения множества: ").replace(" ","")
Введите имя бинарного файла для сохранения множества: NA ME
name
'NAME'
```
3) Запишите множество в бинарный файл с указанным именем.
```py
import pickle
fl = open(name+"bn",'wb')
pickle.dump(my_set,fl)
fl.close()
```
4) Удалите из памяти созданное множество.
```py
del(my_set)
```
5) Прочитайте множество из файла и рассчитайте по его элементам среднее значение. Отобразите его на экране по шаблону: " По <число элементов> среднее = <рассчитанное значение>". Выводимое среднее округлить до двух знаков после точки.
```py
fl = open(name+"bn",'rb')
file_set = pickle.load(fl)
file_set
{0.41, 2.22, 3.89, 4.77, 5.04, 6.94, 7.43, 8.16, 9.13, 9.48, 9.85, 6.01, 9.2, -7.45, -4.62, -3.52, -9.36, -9.89, -8.66, -6.18, -4.49, -19.36, -18.72, -19.23, -4.15, -15.84, -16.02, -4.74, -16.5, -13.96, -12.95, -9.5, -8.1, -11.92, -10.71, -5.86, -4.59, -3.82, -2.95, -1.4}
import numpy
mn = numpy.mean(list(file_set))
mn
np.float64(-4.2989999999999995)
print("По {} среднее = {} ".format(len(file_set),round(mn,2)))
По 40 среднее = -4.30
```

@ -0,0 +1,2 @@
import MM2
print('y=',MM2.vyhod)

@ -0,0 +1,22 @@
def realdvig(xtt,kk1,TT,yti1,ytin1):
#Модель реального двигателя
yp=kk1*xtt #усилитель
yti1=yp+yti1 #Интегратор
ytin1=(yti1+TT*ytin1)/(TT+1)
return [yti1,ytin1]
def tahogen(xtt,kk2,yti2):
#Модель тахогенератора
yp=kk2*xtt #усилитель
yti2=yp+yti2 #интегратор
return yti2
def nechus(xtt,gran):
#зона нечувствит
if xtt<gran and xtt>(-gran):
ytt=0
elif xtt>=gran:
ytt=xtt-gran
elif xtt<=(-gran):
ytt=xtt+gran
return ytt

@ -0,0 +1,23 @@
znach=input('k1,T,k2,Xm,A,F,N=').split(',')
k1=float(znach[0])
T=float(znach[1])
k2=float(znach[2])
Xm=float(znach[3])
A=float(znach[4])
F=float(znach[5])
N=int(znach[6])
import math
vhod=[]
for i in range(N):
vhod.append(A*math.sin((2*i*math.pi)/F))
import MM1 as mod
yi1=0;yin1=0;yi2=0
vyhod=[]
for xt in vhod:
xt1=xt-yi2 #отрицательная обратная связь
[yi1,yin1]=mod.realdvig(xt1,k1,T,yi1,yin1)
yi2=mod.tahogen(yin1,k2,yi2)
yt=mod.nechus(yin1,Xm)
vyhod.append(yt)

@ -0,0 +1,8 @@
def read_func(name):
ans = []
fp = open(name,'r')
for line in fp:
for num in line.strip().split():
ans.append(float(num))
fp.close()
return ans

@ -0,0 +1,15 @@
import math as m
def count_corr(lst1,lst2):
n = min(len(lst1),len(lst2))
sred1 = sum(lst1[:n+1])/(n)
sred2 = sum(lst2[:n+1])/(n)
down1 = 0;down2 = 0;up = 0
for i in range(n):
down1 += ((lst1[i] - sred1)**2)
down2 += ((lst2[i] - sred2)**2)
up += (lst1[i] - sred1)*(lst2[i] - sred2)
print(up,m.sqrt(down1*down2))
return up / m.sqrt(down1*down2)

@ -0,0 +1,11 @@
import module1 as m1,module2 as m2
def brain():
name1 = input("Введите имя первого текстового файла ")
name2 = input("Введите имя второго текстового файла ")
file1 = m1.read_func(name1)
file2 = m1.read_func(name2)
answer = m2.count_corr(file1,file2)
print(answer)
print("Коэффициент корреляции = {}".format(round(answer,3)))

@ -0,0 +1,597 @@
# Отчет по теме 8
**Антонов Дмитрий, А-03-23**
### 1.Начало работы, настройка текущего каталога
```py
import os;os.chdir('//Users//dmitrijantonov//Desktop//POAC//python-labs//TEMA8//')
os.getcwd()
'/Users/dmitrijantonov/Desktop/POAC/python-labs/TEMA8'
import sys,importlib
```
### 2.Запуск модуля из командной строки
```py
import Mod1
Mod1:Введите значение = 5
Mod1:Значение perm1= 5
```
#### 2.1 Проверил класс модуля и получил список атрибутов
```py
dir()
['Mod1', '__annotations__', '__builtins__', '__doc__', '__loader__', '__name__', '__package__', '__spec__', 'importlib', 'os', 'sys']
type(Mod1)
<class 'module'>
dir(Mod1)
['__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', 'perm1']
```
#### 2.2 Обращение к переменной внутри модуля
```py
Mod1.perm1
'5'
import Mod1
```
- Ничего не произошло после импорт, так как модуль уже импортирован
```py
importlib.reload(Mod1)
Mod1:Введите значение = 3
Mod1:Значение perm1= 3
<module 'Mod1' from '/Users/dmitrijantonov/Desktop/POAC/python-labs/TEMA8/Mod1.py'>
Mod1.perm1
'3'
```
#### 2.2 Проверил какие модули уже импортированы
```py
print(sorted(sys.modules.keys()))
['Mod1', '__future__', '__main__', '_abc', '_ast', '_bisect', '_bz2', '_codecs', '_collections', '_collections_abc', '_colorize', '_compat_pickle', '_compression', '_datetime', '_frozen_importlib', '_frozen_importlib_external', '_functools', '_heapq', '_imp', '_io', '_lzma', '_opcode', '_opcode_metadata', '_operator', '_osx_support', '_pickle', '_pyrepl', '_pyrepl.pager', '_queue', '_random', '_signal', '_sitebuiltins', '_socket', '_sre', '_stat', '_string', '_struct', '_suggestions', '_sysconfigdata__darwin_darwin', '_thread', '_tkinter', '_tokenize', '_typing', '_warnings', '_weakref', '_weakrefset', 'abc', 'array', 'ast', 'bdb', 'binascii', 'bisect', 'builtins', 'bz2', 'codecs', 'collections', 'collections.abc', 'configparser', 'contextlib', 'copyreg', 'datetime', 'dis', 'encodings', 'encodings.aliases', 'encodings.utf_8', 'enum', 'errno', 'fnmatch', 'functools', 'genericpath', 'heapq', 'idlelib', 'idlelib.autocomplete', 'idlelib.autocomplete_w', 'idlelib.calltip', 'idlelib.calltip_w', 'idlelib.config', 'idlelib.debugger', 'idlelib.debugger_r', 'idlelib.debugobj', 'idlelib.debugobj_r', 'idlelib.hyperparser', 'idlelib.iomenu', 'idlelib.macosx', 'idlelib.multicall', 'idlelib.pyparse', 'idlelib.rpc', 'idlelib.run', 'idlelib.scrolledlist', 'idlelib.stackviewer', 'idlelib.tooltip', 'idlelib.tree', 'idlelib.util', 'idlelib.window', 'idlelib.zoomheight', 'importlib', 'importlib._abc', 'importlib._bootstrap', 'importlib._bootstrap_external', 'importlib.machinery', 'importlib.util', 'inspect', 'io', 'ipaddress', 'itertools', 'keyword', 'linecache', 'lzma', 'marshal', 'math', 'opcode', 'operator', 'os', 'os.path', 'pickle', 'pkgutil', 'platform', 'plistlib', 'posix', 'posixpath', 'pydoc', 'pyexpat', 'pyexpat.errors', 'pyexpat.model', 'queue', 'random', 're', 're._casefix', 're._compiler', 're._constants', 're._parser', 'reprlib', 'select', 'selectors', 'shlex', 'shutil', 'site', 'socket', 'socketserver', 'stat', 'string', 'struct', 'sys', 'sysconfig', 'tempfile', 'textwrap', 'threading', 'time', 'tkinter', 'tkinter.constants', 'token', 'tokenize', 'traceback', 'types', 'typing', 'urllib', 'urllib.parse', 'warnings', 'weakref', 'xml', 'xml.parsers', 'xml.parsers.expat', 'xml.parsers.expat.errors', 'xml.parsers.expat.model', 'zipimport', 'zlib']
```
- Удаление импортированного модуля
```py
sys.modules.pop('Mod1')
<module 'Mod1' from '/Users/dmitrijantonov/Desktop/POAC/python-labs/TEMA8/Mod1.py'>
print(sorted(sys.modules.keys()))
['__future__', '__main__', '_abc', '_ast', '_bisect', '_bz2', '_codecs', '_collections', '_collections_abc', '_colorize', '_compat_pickle', '_compression', '_datetime', '_frozen_importlib', '_frozen_importlib_external', '_functools', '_heapq', '_imp', '_io', '_lzma', '_opcode', '_opcode_metadata', '_operator', '_osx_support', '_pickle', '_pyrepl', '_pyrepl.pager', '_queue', '_random', '_signal', '_sitebuiltins', '_socket', '_sre', '_stat', '_string', '_struct', '_suggestions', '_sysconfigdata__darwin_darwin', '_thread', '_tkinter', '_tokenize', '_typing', '_warnings', '_weakref', '_weakrefset', 'abc', 'array', 'ast', 'bdb', 'binascii', 'bisect', 'builtins', 'bz2', 'codecs', 'collections', 'collections.abc', 'configparser', 'contextlib', 'copyreg', 'datetime', 'dis', 'encodings', 'encodings.aliases', 'encodings.utf_8', 'enum', 'errno', 'fnmatch', 'functools', 'genericpath', 'heapq', 'idlelib', 'idlelib.autocomplete', 'idlelib.autocomplete_w', 'idlelib.calltip', 'idlelib.calltip_w', 'idlelib.config', 'idlelib.debugger', 'idlelib.debugger_r', 'idlelib.debugobj', 'idlelib.debugobj_r', 'idlelib.hyperparser', 'idlelib.iomenu', 'idlelib.macosx', 'idlelib.multicall', 'idlelib.pyparse', 'idlelib.rpc', 'idlelib.run', 'idlelib.scrolledlist', 'idlelib.stackviewer', 'idlelib.tooltip', 'idlelib.tree', 'idlelib.util', 'idlelib.window', 'idlelib.zoomheight', 'importlib', 'importlib._abc', 'importlib._bootstrap', 'importlib._bootstrap_external', 'importlib.machinery', 'importlib.util', 'inspect', 'io', 'ipaddress', 'itertools', 'keyword', 'linecache', 'lzma', 'marshal', 'math', 'opcode', 'operator', 'os', 'os.path', 'pickle', 'pkgutil', 'platform', 'plistlib', 'posix', 'posixpath', 'pydoc', 'pyexpat', 'pyexpat.errors', 'pyexpat.model', 'queue', 'random', 're', 're._casefix', 're._compiler', 're._constants', 're._parser', 'reprlib', 'select', 'selectors', 'shlex', 'shutil', 'site', 'socket', 'socketserver', 'stat', 'string', 'struct', 'sys', 'sysconfig', 'tempfile', 'textwrap', 'threading', 'time', 'tkinter', 'tkinter.constants', 'token', 'tokenize', 'traceback', 'types', 'typing', 'urllib', 'urllib.parse', 'warnings', 'weakref', 'xml', 'xml.parsers', 'xml.parsers.expat', 'xml.parsers.expat.errors', 'xml.parsers.expat.model', 'zipimport', 'zlib']
```
- Повторный запуск модуля
```py
import Mod1
Mod1:Введите значение = 5
Mod1:Значение perm1= 5
print(sorted(sys.modules.keys()))
['Mod1', '__future__', '__main__', '_abc', '_ast', '_bisect', '_bz2', '_codecs', '_collections', '_collections_abc', '_colorize', '_compat_pickle', '_compression', '_datetime', '_frozen_importlib', '_frozen_importlib_external', '_functools', '_heapq', '_imp', '_io', '_lzma', '_opcode', '_opcode_metadata', '_operator', '_osx_support', '_pickle', '_pyrepl', '_pyrepl.pager', '_queue', '_random', '_signal', '_sitebuiltins', '_socket', '_sre', '_stat', '_string', '_struct', '_suggestions', '_sysconfigdata__darwin_darwin', '_thread', '_tkinter', '_tokenize', '_typing', '_warnings', '_weakref', '_weakrefset', 'abc', 'array', 'ast', 'bdb', 'binascii', 'bisect', 'builtins', 'bz2', 'codecs', 'collections', 'collections.abc', 'configparser', 'contextlib', 'copyreg', 'datetime', 'dis', 'encodings', 'encodings.aliases', 'encodings.utf_8', 'enum', 'errno', 'fnmatch', 'functools', 'genericpath', 'heapq', 'idlelib', 'idlelib.autocomplete', 'idlelib.autocomplete_w', 'idlelib.calltip', 'idlelib.calltip_w', 'idlelib.config', 'idlelib.debugger', 'idlelib.debugger_r', 'idlelib.debugobj', 'idlelib.debugobj_r', 'idlelib.hyperparser', 'idlelib.iomenu', 'idlelib.macosx', 'idlelib.multicall', 'idlelib.pyparse', 'idlelib.rpc', 'idlelib.run', 'idlelib.scrolledlist', 'idlelib.stackviewer', 'idlelib.tooltip', 'idlelib.tree', 'idlelib.util', 'idlelib.window', 'idlelib.zoomheight', 'importlib', 'importlib._abc', 'importlib._bootstrap', 'importlib._bootstrap_external', 'importlib.machinery', 'importlib.util', 'inspect', 'io', 'ipaddress', 'itertools', 'keyword', 'linecache', 'lzma', 'marshal', 'math', 'opcode', 'operator', 'os', 'os.path', 'pickle', 'pkgutil', 'platform', 'plistlib', 'posix', 'posixpath', 'pydoc', 'pyexpat', 'pyexpat.errors', 'pyexpat.model', 'queue', 'random', 're', 're._casefix', 're._compiler', 're._constants', 're._parser', 'reprlib', 'select', 'selectors', 'shlex', 'shutil', 'site', 'socket', 'socketserver', 'stat', 'string', 'struct', 'sys', 'sysconfig', 'tempfile', 'textwrap', 'threading', 'time', 'tkinter', 'tkinter.constants', 'token', 'tokenize', 'traceback', 'types', 'typing', 'urllib', 'urllib.parse', 'warnings', 'weakref', 'xml', 'xml.parsers', 'xml.parsers.expat', 'xml.parsers.expat.errors', 'xml.parsers.expat.model', 'zipimport', 'zlib']
sys.modules.pop('Mod1')
<module 'Mod1' from '/Users/dmitrijantonov/Desktop/POAC/python-labs/TEMA8/Mod1.py'>
```
#### 2.3 Запуск на выполнение с помощью exec()
```py
exec(open('Mod1.py').read())
Mod1:Введите значение = 9
Mod1:Значение perm1= 9
exec(open('Mod1.py').read())
Mod1:Введите значение = 5
Mod1:Значение perm1= 5
dir()
['Mod1', '__annotations__', '__builtins__', '__doc__', '__loader__', '__name__', '__package__', '__spec__', '__warningregistry__', 'importlib', 'os', 'perm1', 'sys']
perm1
'5'
exec(open('Mod1.py').read())
Mod1:Введите значение = 8
Mod1:Значение perm1= 8
perm1
'8'
from Mod1 import perm1
Mod1:Введите значение = 78
Mod1:Значение perm1= 78
dir()
['Mod1', '__annotations__', '__builtins__', '__doc__', '__loader__', '__name__', '__package__', '__spec__', '__warningregistry__', 'importlib', 'os', 'perm1', 'sys']
print(sorted(sys.modules.keys()))
['Mod1', '__future__', '__main__', '_abc', '_ast', '_bisect', '_bz2', '_codecs', '_collections', '_collections_abc', '_colorize', '_compat_pickle', '_compression', '_datetime', '_frozen_importlib', '_frozen_importlib_external', '_functools', '_heapq', '_imp', '_io', '_lzma', '_opcode', '_opcode_metadata', '_operator', '_osx_support', '_pickle', '_pyrepl', '_pyrepl.pager', '_queue', '_random', '_signal', '_sitebuiltins', '_socket', '_sre', '_stat', '_string', '_struct', '_suggestions', '_sysconfigdata__darwin_darwin', '_thread', '_tkinter', '_tokenize', '_typing', '_warnings', '_weakref', '_weakrefset', 'abc', 'array', 'ast', 'bdb', 'binascii', 'bisect', 'builtins', 'bz2', 'codecs', 'collections', 'collections.abc', 'configparser', 'contextlib', 'copyreg', 'datetime', 'dis', 'encodings', 'encodings.aliases', 'encodings.utf_8', 'enum', 'errno', 'fnmatch', 'functools', 'genericpath', 'heapq', 'idlelib', 'idlelib.autocomplete', 'idlelib.autocomplete_w', 'idlelib.calltip', 'idlelib.calltip_w', 'idlelib.config', 'idlelib.debugger', 'idlelib.debugger_r', 'idlelib.debugobj', 'idlelib.debugobj_r', 'idlelib.hyperparser', 'idlelib.iomenu', 'idlelib.macosx', 'idlelib.multicall', 'idlelib.pyparse', 'idlelib.rpc', 'idlelib.run', 'idlelib.scrolledlist', 'idlelib.stackviewer', 'idlelib.tooltip', 'idlelib.tree', 'idlelib.util', 'idlelib.window', 'idlelib.zoomheight', 'importlib', 'importlib._abc', 'importlib._bootstrap', 'importlib._bootstrap_external', 'importlib.machinery', 'importlib.util', 'inspect', 'io', 'ipaddress', 'itertools', 'keyword', 'linecache', 'lzma', 'marshal', 'math', 'opcode', 'operator', 'os', 'os.path', 'pickle', 'pkgutil', 'platform', 'plistlib', 'posix', 'posixpath', 'pydoc', 'pyexpat', 'pyexpat.errors', 'pyexpat.model', 'queue', 'random', 're', 're._casefix', 're._compiler', 're._constants', 're._parser', 'reprlib', 'select', 'selectors', 'shlex', 'shutil', 'site', 'socket', 'socketserver', 'stat', 'string', 'struct', 'sys', 'sysconfig', 'tempfile', 'textwrap', 'threading', 'time', 'tkinter', 'tkinter.constants', 'token', 'tokenize', 'traceback', 'types', 'typing', 'urllib', 'urllib.parse', 'warnings', 'weakref', 'xml', 'xml.parsers', 'xml.parsers.expat', 'xml.parsers.expat.errors', 'xml.parsers.expat.model', 'zipimport', 'zlib']
perm1
'78'
from Mod2 import beta
dir()
['Mod1', '__annotations__', '__builtins__', '__doc__', '__loader__', '__name__', '__package__', '__spec__', '__warningregistry__', 'beta', 'importlib', 'os', 'perm1', 'sys']
g=beta(2)
****BETA****
dir()
['Mod1', '__annotations__', '__builtins__', '__doc__', '__loader__', '__name__', '__package__', '__spec__', '__warningregistry__', 'beta', 'g', 'importlib', 'os', 'perm1', 'sys']
sys.modules.pop('Mod1')
<module 'Mod1' from '/Users/dmitrijantonov/Desktop/POAC/python-labs/TEMA8/Mod1.py'>
dir()
['Mod1', '__annotations__', '__builtins__', '__doc__', '__loader__', '__name__', '__package__', '__spec__', '__warningregistry__', 'beta', 'g', 'importlib', 'os', 'perm1', 'sys']
del(Mod1)
from Mod1 import perm1
Mod1:Введите значение = 5
Mod1:Значение perm1= 5
dir()
['__annotations__', '__builtins__', '__doc__', '__loader__', '__name__', '__package__', '__spec__', '__warningregistry__', 'beta', 'g', 'importlib', 'os', 'perm1', 'sys']
print(sorted(sys.modules.keys()))
['Mod1', 'Mod2', '__future__', '__main__', '_abc', '_ast', '_bisect', '_bz2', '_codecs', '_collections', '_collections_abc', '_colorize', '_compat_pickle', '_compression', '_datetime', '_frozen_importlib', '_frozen_importlib_external', '_functools', '_heapq', '_imp', '_io', '_lzma', '_opcode', '_opcode_metadata', '_operator', '_osx_support', '_pickle', '_pyrepl', '_pyrepl.pager', '_queue', '_random', '_signal', '_sitebuiltins', '_socket', '_sre', '_stat', '_string', '_struct', '_suggestions', '_sysconfigdata__darwin_darwin', '_thread', '_tkinter', '_tokenize', '_typing', '_warnings', '_weakref', '_weakrefset', 'abc', 'array', 'ast', 'bdb', 'binascii', 'bisect', 'builtins', 'bz2', 'codecs', 'collections', 'collections.abc', 'configparser', 'contextlib', 'copyreg', 'datetime', 'dis', 'encodings', 'encodings.aliases', 'encodings.utf_8', 'enum', 'errno', 'fnmatch', 'functools', 'genericpath', 'heapq', 'idlelib', 'idlelib.autocomplete', 'idlelib.autocomplete_w', 'idlelib.calltip', 'idlelib.calltip_w', 'idlelib.config', 'idlelib.debugger', 'idlelib.debugger_r', 'idlelib.debugobj', 'idlelib.debugobj_r', 'idlelib.hyperparser', 'idlelib.iomenu', 'idlelib.macosx', 'idlelib.multicall', 'idlelib.pyparse', 'idlelib.rpc', 'idlelib.run', 'idlelib.scrolledlist', 'idlelib.stackviewer', 'idlelib.tooltip', 'idlelib.tree', 'idlelib.util', 'idlelib.window', 'idlelib.zoomheight', 'importlib', 'importlib._abc', 'importlib._bootstrap', 'importlib._bootstrap_external', 'importlib.machinery', 'importlib.util', 'inspect', 'io', 'ipaddress', 'itertools', 'keyword', 'linecache', 'lzma', 'marshal', 'math', 'opcode', 'operator', 'os', 'os.path', 'pickle', 'pkgutil', 'platform', 'plistlib', 'posix', 'posixpath', 'pydoc', 'pyexpat', 'pyexpat.errors', 'pyexpat.model', 'queue', 'random', 're', 're._casefix', 're._compiler', 're._constants', 're._parser', 'reprlib', 'select', 'selectors', 'shlex', 'shutil', 'site', 'socket', 'socketserver', 'stat', 'string', 'struct', 'sys', 'sysconfig', 'tempfile', 'textwrap', 'threading', 'time', 'tkinter', 'tkinter.constants', 'token', 'tokenize', 'traceback', 'types', 'typing', 'urllib', 'urllib.parse', 'warnings', 'weakref', 'xml', 'xml.parsers', 'xml.parsers.expat', 'xml.parsers.expat.errors', 'xml.parsers.expat.model', 'zipimport', 'zlib']
perm1
'5'
from Mod2 import beta
g=beta(2)
****BETA****
g
535.4916555247646
dir()
['__annotations__', '__builtins__', '__doc__', '__loader__', '__name__', '__package__', '__spec__', '__warningregistry__', 'beta', 'g', 'importlib', 'os', 'perm1', 'sys']
print(sorted(sys.modules.keys()))
['Mod1', 'Mod2', '__future__', '__main__', '_abc', '_ast', '_bisect', '_bz2', '_codecs', '_collections', '_collections_abc', '_colorize', '_compat_pickle', '_compression', '_datetime', '_frozen_importlib', '_frozen_importlib_external', '_functools', '_heapq', '_imp', '_io', '_lzma', '_opcode', '_opcode_metadata', '_operator', '_osx_support', '_pickle', '_pyrepl', '_pyrepl.pager', '_queue', '_random', '_signal', '_sitebuiltins', '_socket', '_sre', '_stat', '_string', '_struct', '_suggestions', '_sysconfigdata__darwin_darwin', '_thread', '_tkinter', '_tokenize', '_typing', '_warnings', '_weakref', '_weakrefset', 'abc', 'array', 'ast', 'bdb', 'binascii', 'bisect', 'builtins', 'bz2', 'codecs', 'collections', 'collections.abc', 'configparser', 'contextlib', 'copyreg', 'datetime', 'dis', 'encodings', 'encodings.aliases', 'encodings.utf_8', 'enum', 'errno', 'fnmatch', 'functools', 'genericpath', 'heapq', 'idlelib', 'idlelib.autocomplete', 'idlelib.autocomplete_w', 'idlelib.calltip', 'idlelib.calltip_w', 'idlelib.config', 'idlelib.debugger', 'idlelib.debugger_r', 'idlelib.debugobj', 'idlelib.debugobj_r', 'idlelib.hyperparser', 'idlelib.iomenu', 'idlelib.macosx', 'idlelib.multicall', 'idlelib.pyparse', 'idlelib.rpc', 'idlelib.run', 'idlelib.scrolledlist', 'idlelib.stackviewer', 'idlelib.tooltip', 'idlelib.tree', 'idlelib.util', 'idlelib.window', 'idlelib.zoomheight', 'importlib', 'importlib._abc', 'importlib._bootstrap', 'importlib._bootstrap_external', 'importlib.machinery', 'importlib.util', 'inspect', 'io', 'ipaddress', 'itertools', 'keyword', 'linecache', 'lzma', 'marshal', 'math', 'opcode', 'operator', 'os', 'os.path', 'pickle', 'pkgutil', 'platform', 'plistlib', 'posix', 'posixpath', 'pydoc', 'pyexpat', 'pyexpat.errors', 'pyexpat.model', 'queue', 'random', 're', 're._casefix', 're._compiler', 're._constants', 're._parser', 'reprlib', 'select', 'selectors', 'shlex', 'shutil', 'site', 'socket', 'socketserver', 'stat', 'string', 'struct', 'sys', 'sysconfig', 'tempfile', 'textwrap', 'threading', 'time', 'tkinter', 'tkinter.constants', 'token', 'tokenize', 'traceback', 'types', 'typing', 'urllib', 'urllib.parse', 'warnings', 'weakref', 'xml', 'xml.parsers', 'xml.parsers.expat', 'xml.parsers.expat.errors', 'xml.parsers.expat.model', 'zipimport', 'zlib']
alpha()
Traceback (most recent call last):
File "<pyshell#40>", line 1, in <module>
alpha()
NameError: name 'alpha' is not defined
from Mod2 import alpha as al
al()
****ALPHA****
Значение t=9
'9'
del al,beta
from Mod2 import alpha as al, beta as bt
del al,bt
dir()
['__annotations__', '__builtins__', '__doc__', '__loader__', '__name__', '__package__', '__spec__', '__warningregistry__', 'g', 'importlib', 'os', 'perm1', 'sys']
from Mod2 import *
tt=alpha()
****ALPHA****
Значение t=0.12
uu=beta(float(tt))
****BETA****
print(uu)
1.4578913609506803
sys.modules.pop('Mod1')
<module 'Mod1' from '/Users/dmitrijantonov/Desktop/POAC/python-labs/TEMA8/Mod1.py'>
sys.modules.pop('Mod2')
<module 'Mod2' from '/Users/dmitrijantonov/Desktop/POAC/python-labs/TEMA8/Mod2.py'>
print(sorted(sys.modules.keys()))
['__future__', '__main__', '_abc', '_ast', '_bisect', '_bz2', '_codecs', '_collections', '_collections_abc', '_colorize', '_compat_pickle', '_compression', '_datetime', '_frozen_importlib', '_frozen_importlib_external', '_functools', '_heapq', '_imp', '_io', '_lzma', '_opcode', '_opcode_metadata', '_operator', '_osx_support', '_pickle', '_pyrepl', '_pyrepl.pager', '_queue', '_random', '_signal', '_sitebuiltins', '_socket', '_sre', '_stat', '_string', '_struct', '_suggestions', '_sysconfigdata__darwin_darwin', '_thread', '_tkinter', '_tokenize', '_typing', '_warnings', '_weakref', '_weakrefset', 'abc', 'array', 'ast', 'bdb', 'binascii', 'bisect', 'builtins', 'bz2', 'codecs', 'collections', 'collections.abc', 'configparser', 'contextlib', 'copyreg', 'datetime', 'dis', 'encodings', 'encodings.aliases', 'encodings.utf_8', 'enum', 'errno', 'fnmatch', 'functools', 'genericpath', 'heapq', 'idlelib', 'idlelib.autocomplete', 'idlelib.autocomplete_w', 'idlelib.calltip', 'idlelib.calltip_w', 'idlelib.config', 'idlelib.debugger', 'idlelib.debugger_r', 'idlelib.debugobj', 'idlelib.debugobj_r', 'idlelib.hyperparser', 'idlelib.iomenu', 'idlelib.macosx', 'idlelib.multicall', 'idlelib.pyparse', 'idlelib.rpc', 'idlelib.run', 'idlelib.scrolledlist', 'idlelib.stackviewer', 'idlelib.tooltip', 'idlelib.tree', 'idlelib.util', 'idlelib.window', 'idlelib.zoomheight', 'importlib', 'importlib._abc', 'importlib._bootstrap', 'importlib._bootstrap_external', 'importlib.machinery', 'importlib.util', 'inspect', 'io', 'ipaddress', 'itertools', 'keyword', 'linecache', 'lzma', 'marshal', 'math', 'opcode', 'operator', 'os', 'os.path', 'pickle', 'pkgutil', 'platform', 'plistlib', 'posix', 'posixpath', 'pydoc', 'pyexpat', 'pyexpat.errors', 'pyexpat.model', 'queue', 'random', 're', 're._casefix', 're._compiler', 're._constants', 're._parser', 'reprlib', 'select', 'selectors', 'shlex', 'shutil', 'site', 'socket', 'socketserver', 'stat', 'string', 'struct', 'sys', 'sysconfig', 'tempfile', 'textwrap', 'threading', 'time', 'tkinter', 'tkinter.constants', 'token', 'tokenize', 'traceback', 'types', 'typing', 'urllib', 'urllib.parse', 'warnings', 'weakref', 'xml', 'xml.parsers', 'xml.parsers.expat', 'xml.parsers.expat.errors', 'xml.parsers.expat.model', 'zipimport', 'zlib']
import Mod0
Mod1:Введите значение = 5
Mod1:Значение perm1= 5
perm1= 5
****ALPHA****
Значение t=10
tt= 10
****BETA****
qq= 44031505860631.98
dir()
['Mod0', '__annotations__', '__builtins__', '__doc__', '__loader__', '__name__', '__package__', '__spec__', '__warningregistry__', 'alpha', 'beta', 'g', 'importlib', 'os', 'perm1', 'sys', 'tt', 'uu']
Mod0.tt;Mod0.qq;Mod0.Mod1.perm1
'10'
44031505860631.98
'5'
R
Traceback (most recent call last):
File "<pyshell#57>", line 1, in <module>
R
NameError: name 'R' is not defined
===== RESTART: /Users/dmitrijantonov/Desktop/POAC/python-labs/TEMA8/MM0.py =====
k1,T,k2,Xm,A,F,N=2,3,4,1,6,4,3
Traceback (most recent call last):
File "/Users/dmitrijantonov/Desktop/POAC/python-labs/TEMA8/MM0.py", line 1, in <module>
import MM2
File "/Users/dmitrijantonov/Desktop/POAC/python-labs/TEMA8/MM2.py", line 15, in <module>
import MM1 as mod
File "/Users/dmitrijantonov/Desktop/POAC/python-labs/TEMA8/MM1.py", line 6
return [yti1,ytin1]
^
IndentationError: unindent does not match any outer indentation level
===== RESTART: /Users/dmitrijantonov/Desktop/POAC/python-labs/TEMA8/MM0.py =====
k1,T,k2,Xm,A,F,N=2,3,4,1,6,4,3
y= [0, 2.0, 0]
===== RESTART: /Users/dmitrijantonov/Desktop/POAC/python-labs/TEMA8/MM0.py =====
k1,T,k2,Xm,A,F,N=5,5,5,2,3,4,8
y= [0, 0.5, -3.833333333333333, 0, 19.990740740740744, -25.978395061728403, -22.99485596707819, 121.76114540466394]
===== RESTART: /Users/dmitrijantonov/Desktop/POAC/python-labs/TEMA8/Mod2.py ====
main()
Traceback (most recent call last):
File "<pyshell#58>", line 1, in <module>
main()
NameError: name 'main' is not defined. Did you mean: 'min'?
import os;os.chdir('//Users//dmitrijantonov//Desktop//POAC//python-labs//TEMA8//')
import os,sys,imp
Traceback (most recent call last):
File "<pyshell#60>", line 1, in <module>
import os,sys,imp
ModuleNotFoundError: No module named 'imp'
import os,sys,impimport os,sys,importlib
SyntaxError: invalid syntax
import sys,importlib
import Mod2
Mod2.beta
<function beta at 0x105a9d300>
Mod2.beta()
Traceback (most recent call last):
File "<pyshell#65>", line 1, in <module>
Mod2.beta()
TypeError: beta() missing 1 required positional argument: 'q'
Mod2.beta(5)
****BETA****
****ALPHA****
Значение t=9
обращание к альфа 9
6635623.99934113
import Mod2
Mod2.alpha()
****ALPHA****
Значение t=5
'5'
===== RESTART: /Users/dmitrijantonov/Desktop/POAC/python-labs/TEMA8/Mod2.py ====
import os;os.chdir('//Users//dmitrijantonov//Desktop//POAC//python-labs//TEMA8//')
import sys,importlib
import Mod2
Mod2.alpha()
****ALPHA****
Значение t=5
****BETA****
Traceback (most recent call last):
File "<pyshell#72>", line 1, in <module>
Mod2.alpha()
File "/Users/dmitrijantonov/Desktop/POAC/python-labs/TEMA8/Mod2.py", line 13, in alpha
print("обращание к бетта",beta(t))
File "/Users/dmitrijantonov/Desktop/POAC/python-labs/TEMA8/Mod2.py", line 6, in beta
expi=q*math.pi
TypeError: can't multiply sequence by non-int of type 'float'
import Mod2
Mod2.alpha()
****ALPHA****
Значение t=5
****BETA****
Traceback (most recent call last):
File "<pyshell#74>", line 1, in <module>
Mod2.alpha()
File "/Users/dmitrijantonov/Desktop/POAC/python-labs/TEMA8/Mod2.py", line 13, in alpha
File "/Users/dmitrijantonov/Desktop/POAC/python-labs/TEMA8/Mod2.py", line 6, in beta
TypeError: can't multiply sequence by non-int of type 'float'
===== RESTART: /Users/dmitrijantonov/Desktop/POAC/python-labs/TEMA8/Mod2.py ====
import os;os.chdir('//Users//dmitrijantonov//Desktop//POAC//python-labs//TEMA8//')
import sys,importlib
import Mod2
Mod2.alpha()
****ALPHA****
Значение t=9
****BETA****
Traceback (most recent call last):
File "<pyshell#78>", line 1, in <module>
Mod2.alpha()
File "/Users/dmitrijantonov/Desktop/POAC/python-labs/TEMA8/Mod2.py", line 4, in alpha
print("обращание к бетта",beta(t))
File "/Users/dmitrijantonov/Desktop/POAC/python-labs/TEMA8/Mod2.py", line 10, in beta
expi=q*math.pi
TypeError: can't multiply sequence by non-int of type 'float'
dir()
['Mod2', '__annotations__', '__builtins__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', 'alpha', 'beta', 'importlib', 'os', 'sys']
del(alpha,beta,Mod2)
import Mod2
Mod2.alpha()
****ALPHA****
Значение t=
****BETA****
Traceback (most recent call last):
File "<pyshell#82>", line 1, in <module>
Mod2.alpha()
File "/Users/dmitrijantonov/Desktop/POAC/python-labs/TEMA8/Mod2.py", line 4, in alpha
print("обращание к бетта",beta(t))
File "/Users/dmitrijantonov/Desktop/POAC/python-labs/TEMA8/Mod2.py", line 10, in beta
expi=q*math.pi
TypeError: can't multiply sequence by non-int of type 'float'
del(alpha,beta,Mod2)
Traceback (most recent call last):
File "<pyshell#83>", line 1, in <module>
del(alpha,beta,Mod2)
NameError: name 'alpha' is not defined
dir()
['Mod2', '__annotations__', '__builtins__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', 'importlib', 'os', 'sys']
import Mod2
Mod2.beta()
Traceback (most recent call last):
File "<pyshell#86>", line 1, in <module>
Mod2.beta()
TypeError: beta() missing 1 required positional argument: 'q'
Mod2.beta(2)
****BETA****
535.4916555247646
import Mod2
Mod2.alpha()
****ALPHA****
Значение t=3
****BETA****
Traceback (most recent call last):
File "<pyshell#89>", line 1, in <module>
Mod2.alpha()
File "/Users/dmitrijantonov/Desktop/POAC/python-labs/TEMA8/Mod2.py", line 4, in alpha
print("обращание к бетта",beta(t))
File "/Users/dmitrijantonov/Desktop/POAC/python-labs/TEMA8/Mod2.py", line 10, in beta
import math
TypeError: can't multiply sequence by non-int of type 'float'
dir(Mod2,alpha,beta)
Traceback (most recent call last):
File "<pyshell#90>", line 1, in <module>
dir(Mod2,alpha,beta)
NameError: name 'alpha' is not defined
del(Mod2,alpha,beta)
Traceback (most recent call last):
File "<pyshell#91>", line 1, in <module>
del(Mod2,alpha,beta)
NameError: name 'alpha' is not defined
dir()
['__annotations__', '__builtins__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', 'importlib', 'os', 'sys']
import Mod2
Mod2.alpha()
****ALPHA****
Значение t=5
****BETA****
Traceback (most recent call last):
File "<pyshell#94>", line 1, in <module>
Mod2.alpha()
File "/Users/dmitrijantonov/Desktop/POAC/python-labs/TEMA8/Mod2.py", line 4, in alpha
print("обращание к бетта",beta(t))
File "/Users/dmitrijantonov/Desktop/POAC/python-labs/TEMA8/Mod2.py", line 10, in beta
expi=float(q)*math.pi
TypeError: can't multiply sequence by non-int of type 'float'
import
SyntaxError: Expected one or more names after 'import'
import Mod2
Mod2.alpha()
****ALPHA****
Значение t=5
****BETA****
Traceback (most recent call last):
File "<pyshell#97>", line 1, in <module>
Mod2.alpha()
File "/Users/dmitrijantonov/Desktop/POAC/python-labs/TEMA8/Mod2.py", line 4, in alpha
print("обращание к бетта",beta(t))
File "/Users/dmitrijantonov/Desktop/POAC/python-labs/TEMA8/Mod2.py", line 10, in beta
print("q",q)
TypeError: can't multiply sequence by non-int of type 'float'
import Mod2
Mod2.alpha()
****ALPHA****
Значение t=5
****BETA****
Traceback (most recent call last):
File "<pyshell#99>", line 1, in <module>
Mod2.alpha()
File "/Users/dmitrijantonov/Desktop/POAC/python-labs/TEMA8/Mod2.py", line 4, in alpha
print("обращание к бетта",beta(t))
File "/Users/dmitrijantonov/Desktop/POAC/python-labs/TEMA8/Mod2.py", line 10, in beta
print("q",type(q))
TypeError: can't multiply sequence by non-int of type 'float'
import Mod2
Mod2.alpha()
****ALPHA****
Значение t=5
****BETA****
Traceback (most recent call last):
File "<pyshell#101>", line 1, in <module>
Mod2.alpha()
File "/Users/dmitrijantonov/Desktop/POAC/python-labs/TEMA8/Mod2.py", line 4, in alpha
print("обращание к бетта",beta(t))
File "/Users/dmitrijantonov/Desktop/POAC/python-labs/TEMA8/Mod2.py", line 10, in beta
print(type(q))
TypeError: can't multiply sequence by non-int of type 'float'
import Mod2
Mod2.alpha()
****ALPHA****
Значение t=8
****BETA****
Traceback (most recent call last):
File "<pyshell#103>", line 1, in <module>
Mod2.alpha()
File "/Users/dmitrijantonov/Desktop/POAC/python-labs/TEMA8/Mod2.py", line 4, in alpha
print("обращание к бетта",beta(float(t)))
File "/Users/dmitrijantonov/Desktop/POAC/python-labs/TEMA8/Mod2.py", line 10, in beta
print(type(q))
TypeError: can't multiply sequence by non-int of type 'float'
import Mod2
Mod2.alpha()
****ALPHA****
Значение t=8.8
****BETA****
Traceback (most recent call last):
File "<pyshell#105>", line 1, in <module>
Mod2.alpha()
File "/Users/dmitrijantonov/Desktop/POAC/python-labs/TEMA8/Mod2.py", line 4, in alpha
print("обращание к бетта",beta(float(t)))
File "/Users/dmitrijantonov/Desktop/POAC/python-labs/TEMA8/Mod2.py", line 10, in beta
print(type(q))
TypeError: can't multiply sequence by non-int of type 'float'
import Mod2
Mod2.alpha()
****ALPHA****
Значение t=9
****BETA****
Traceback (most recent call last):
File "<pyshell#107>", line 1, in <module>
Mod2.alpha()
File "/Users/dmitrijantonov/Desktop/POAC/python-labs/TEMA8/Mod2.py", line 4, in alpha
print("обращание к бетта",beta(int(t)))
File "/Users/dmitrijantonov/Desktop/POAC/python-labs/TEMA8/Mod2.py", line 10, in beta
print(type(q))
TypeError: can't multiply sequence by non-int of type 'float'
del(Mod2,alpha,beta)
Traceback (most recent call last):
File "<pyshell#108>", line 1, in <module>
del(Mod2,alpha,beta)
NameError: name 'alpha' is not defined
dir()
['__annotations__', '__builtins__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', 'importlib', 'os', 'sys']
import Mod2
Mod2.alpha()
****ALPHA****
Значение t=9
****BETA****
Traceback (most recent call last):
File "<pyshell#111>", line 1, in <module>
Mod2.alpha()
File "/Users/dmitrijantonov/Desktop/POAC/python-labs/TEMA8/Mod2.py", line 4, in alpha
print("обращание к бетта",beta(int(t)))
File "/Users/dmitrijantonov/Desktop/POAC/python-labs/TEMA8/Mod2.py", line 10, in beta
print(type(q))
TypeError: can't multiply sequence by non-int of type 'float'
import Mod2
Mod2.alpha()
****ALPHA****
Значение t=9
****BETA****
Traceback (most recent call last):
File "<pyshell#113>", line 1, in <module>
Mod2.alpha()
File "/Users/dmitrijantonov/Desktop/POAC/python-labs/TEMA8/Mod2.py", line 4, in alpha
print("обращание к бетта")
File "/Users/dmitrijantonov/Desktop/POAC/python-labs/TEMA8/Mod2.py", line 10, in beta
import math
TypeError: can't multiply sequence by non-int of type 'float'
tt=alpha()
Traceback (most recent call last):
File "<pyshell#114>", line 1, in <module>
tt=alpha()
NameError: name 'alpha' is not defined
from Mod2 import *
tt=alpha()
****ALPHA****
Значение t=9
****BETA****
Traceback (most recent call last):
File "<pyshell#116>", line 1, in <module>
tt=alpha()
File "/Users/dmitrijantonov/Desktop/POAC/python-labs/TEMA8/Mod2.py", line 4, in alpha
print("обращание к бетта")
File "/Users/dmitrijantonov/Desktop/POAC/python-labs/TEMA8/Mod2.py", line 10, in beta
import math
TypeError: can't multiply sequence by non-int of type 'float'
from Mod2 import *
tt=alpha()
****ALPHA****
Значение t=0
****BETA****
Traceback (most recent call last):
File "<pyshell#118>", line 1, in <module>
tt=alpha()
File "/Users/dmitrijantonov/Desktop/POAC/python-labs/TEMA8/Mod2.py", line 4, in alpha
print("обращание к бетта")
File "/Users/dmitrijantonov/Desktop/POAC/python-labs/TEMA8/Mod2.py", line 10, in beta
print(type(q))
TypeError: can't multiply sequence by non-int of type 'float'
del(Mod2,alpha,beta)
from Mod2 import *
tt=alpha()
****ALPHA****
Значение t=9
****BETA****
Traceback (most recent call last):
File "<pyshell#121>", line 1, in <module>
tt=alpha()
File "/Users/dmitrijantonov/Desktop/POAC/python-labs/TEMA8/Mod2.py", line 4, in alpha
print("обращание к бетта")
File "/Users/dmitrijantonov/Desktop/POAC/python-labs/TEMA8/Mod2.py", line 10, in beta
print(type(q))
TypeError: can't multiply sequence by non-int of type 'float'
del(Mod2,alpha,beta)
Traceback (most recent call last):
File "<pyshell#122>", line 1, in <module>
del(Mod2,alpha,beta)
NameError: name 'Mod2' is not defined
dir()
['__annotations__', '__builtins__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', 'alpha', 'beta', 'importlib', 'os', 'sys']
del(alpha,beta)
dir()
['__annotations__', '__builtins__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', 'importlib', 'os', 'sys']
from Mod2 import *
dir()
['__annotations__', '__builtins__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', 'alpha', 'beta', 'importlib', 'os', 'sys']
alpha.__doc__
print(alpha.__doc__)
None
alpha()
****ALPHA****
Значение t=9
****BETA****
Traceback (most recent call last):
File "<pyshell#130>", line 1, in <module>
alpha()
File "/Users/dmitrijantonov/Desktop/POAC/python-labs/TEMA8/Mod2.py", line 4, in alpha
print("обращание к бетта")
File "/Users/dmitrijantonov/Desktop/POAC/python-labs/TEMA8/Mod2.py", line 10, in beta
print(type(q))
TypeError: can't multiply sequence by non-int of type 'float'
import Mod2
Mod2.alpha()
****ALPHA****
Значение t=9
****BETA****
<class 'float'>
обращание к бетта 1902773895292.1592
'9'
import Mod2
Mod2.beta(9)
****BETA****
<class 'int'>
****ALPHA****
Значение t=9
обращание к альфа 9
1902773895292.1592
import Mod0
Mod1:Введите значение = 9
Mod1:Значение perm1= 9
perm1= 9
****ALPHA****
Значение t=8
tt= 8
****BETA****
<class 'float'>
qq= 82226315585.59491
Traceback (most recent call last):
File "<pyshell#19>", line 1, in <module>
import Mod0
File "/Users/dmitrijantonov/Desktop/POAC/python-labs/TEMA8/Mod0.py", line 10, in <module>
print(t,expi)
NameE
import Mod0
Mod1:Введите значение = 5
Mod1:Значение perm1= 5
perm1= 5
perm1= 15
****ALPHA****
Значение t=6
tt= 6
****BETA****
<class 'float'>
qq= 153552935.39544657
dir()
['Mod0', '__annotations__', '__builtins__', '__doc__', '__loader__', '__name__', '__package__', '__spec__', 'importlib', 'os', 'sys']
perm1
Traceback (most recent call last):
File "<pyshell#22>", line 1, in <module>
perm1
NameError: name 'perm1' is not defined
Mod0.perm1 * 2
30
tt * 2
Traceback (most recent call last):
File "<pyshell#24>", line 1, in <module>
tt * 2
NameError: name 'tt' is not defined
qq*2
Traceback (most recent call last):
File "<pyshell#25>", line 1, in <module>
qq*2
NameError: name 'qq' is not defined
Mod0.qq * 2
307105870.79089314
Mod0.tt * 2
'66'
```

@ -0,0 +1,12 @@
# Общее контрольное задание по теме 8
**Антонов Дмитрий, А-03-23**
```py
import module3
module3.brain()
Введите имя первого текстового файла testfile1.txt
Введите имя второго текстового файла testfile2.txt
-192.75 397.74528595572315
-0.4846066233993201
Коэффициент корреляции = -0.485
```

@ -0,0 +1,18 @@
class Class1: #Объявление класса Class1 в модуле
def zad_zn(self,znach): # 1 Метод класса
self.data=znach # self - ссылка на экземпляр класса Class1
def otobrazh(self): # 2 Метод класса
print(self.data)#Отображение данных экземпляра
class Class2(Class1): #Class2 - наследник класса Class1
def otobrazh(self): # Метод класса Class2
print('значение=',self.data)#Отображение данных экземпляра
def otobrazh(objekt): #Объявление самостоятельной функции
print('значение объекта=',objekt)
class Class3(Class2): #Наследник класса Class2, а через него – и класса Class1
def __init__(self,znach): #Конструктор-вызывается при создании нового экземпляра класса
self.data=znach
def __add__(self,drug_zn): #Вызывается, когда экземпляр участвует в операции «+»
return Class3(self.data+drug_zn)
def zad_dr_zn(self,povtor): #А это - обычный метод
self.data*=povtor

@ -0,0 +1,21 @@
class SAU:
def __init__(self,zn_param):
self.param=zn_param
self.ypr=[0,0]
def zdn_zn(self,upr):
self.x=upr
def model(self):
def inerz(x,T,yy):
return (x+T*yy)/(T+1)
y0=self.x-self.ypr[1]*self.param[3] #Обр.связь с усилителем 2
y1=self.param[0]*y0 #Усилитель1
y2=inerz(y1,self.param[1],self.ypr[0]) #Инерционное звено1
y3=inerz(y2,self.param[2],self.ypr[1]) #Инерционное звено2
self.ypr[0]=y2
self.ypr[1]=y3
def otobraz(self):
print('y=',self.ypr[1])

@ -0,0 +1,30 @@
class Departament:
def __init__(self,fio,otdel,dolzhnost,oklad):
self.fio = fio
self.otdel = otdel
self.dolzhnost = dolzhnost
self.oklad = oklad
self.__prm = list()
def increase(self,put):
self.oklad += put
def new_work(self,new_otdel):
self.otdel = new_otdel
def new_dolzhnost(self,new_dolzh):
self.dolzhnost = new_dolzh
def all_info(self):
print(self.fio,self.otdel,self.dolzhnost,self.oklad,self.prop)
def getter(self):
return self.__prm
def setter(self,new):
self.__prm.append(new)
prop = property(getter,setter)

Двоичные данные
TEMA9/fig.png

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

После

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

Двоичные данные
TEMA9/k002.png

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

После

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

Двоичные данные
TEMA9/k20.png

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

После

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

Двоичные данные
TEMA9/k5.png

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

После

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

@ -0,0 +1,352 @@
# Отчет по теме 9
**Антонов Дмитрий, А-03-23**
### 1.Начало работы, настройка текущего каталога
```py
import os
os.chdir('//Users//dmitrijantonov//Desktop//POAC//python-labs//TEMA9//')
```
### 2.Создание классов и их наследников
#### 2.1 Создание класса
```py
class Class1: #Объявление класса
def zad_zn(self,znach): #Метод 1 класса1 – задание значения data
self.data=znach # self - ссылка на экземпляр класса
def otobrazh(self): # Метод 2 класса1
print(self.data)#Отображение данных экземпляра класса
z1=Class1() #Создаём 1-й экземпляр класса
dir()
['Class1', '__annotations__', '__builtins__', '__doc__', '__loader__', '__name__', '__package__', '__spec__', 'os', 'z1']
```
- Вызов методов у экзмепляров класса
```py
z2=Class1()
z1.zad_zn('экз.класса 1')
z2.zad_zn(-632.453)
z1.otobrazh()
экз.класса 1
z2.otobrazh()
-632.453
z1.data='Новое значение атрибута у экз.1';z1.otobrazh()
Новое значение атрибута у экз.1
```
#### 2.2 Создание класса-наследника
```py
class Class2(Class1): #Class2 - наследник класса Class1
def otobrazh(self): # Метод класса Class2 – переопределяет метод родителя
print('значение=',self.data)#Отображение данных экземпляра
z3=Class2()
dir(z3)
['__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__firstlineno__', '__format__', '__ge__', '__getattribute__', '__getstate__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__module__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__static_attributes__', '__str__', '__subclasshook__', '__weakref__', 'otobrazh', 'zad_zn']
z3.zad_zn('Совсем новое')
z3.otobrazh()
значение= Совсем новое
z1.otobrazh()
```
- Родитлеский класс не изменил значение поля класса
```py
Новое значение атрибута у экз.1
del z1,z2,z3
```
### 3. Использование классов, содержащихся в модулях
```py
from Mod3 import Class1 #Частичный импорт содержимого модуля
z4=Class1()
z4.otobrazh()
Traceback (most recent call last):
File "<pyshell#5>", line 1, in <module>
z4.otobrazh()
File "/Users/dmitrijantonov/Desktop/POAC/python-labs/TEMA9/Mod3.py", line 5, in otobrazh
print(self.data)#Отображение данных экземпляра
AttributeError: 'Class1' object has no attribute 'data'
```
- Нет  data, ничего не задавали -> нечего вывести
```py
z4.zad_zn(2)
z4.otobrazh()
2
from Mod3 import Class1
z4=Class1()
z4.data='значение данного data у экз.4'
z4.otobrazh()
значение данного data у экз.4
del z4
dir()
['Class1', '__annotations__', '__builtins__', '__doc__', '__loader__', '__name__', '__package__', '__spec__', 'os']
```
- Меняем значение у класса, значение экземпляра - неизменно
```py
import Mod3
z4=Mod3.Class2()
z4.zad_zn('Класс из модуля')
z4.otobrazh()
значение= Класс из модуля
Mod3.otobrazh('Объект')
значение объекта= Объект
z4.otobrazh()
значение= Класс из модуля
```
### 4.Использование специальных методов
```py
import Mod3
z5=Mod3.Class3('abc') #При создании экземпляра срабатывает конструктор __init__
z5.otobrazh()
значение= abc
```
- При операции выполнении+ срабатывает метод _add_
```py
z6=z5+'def'
z6.otobrazh()
значение= abcdef
z6.zad_dr_zn(3)
type(z6)
<class 'Mod3.Class3'>
z6.otobrazh()
значение= abcdefabcdefabcdef
```
### 5.Присоединение атрибутов к классу
```py
dir(Class3)
['__add__', '__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__firstlineno__', '__format__', '__ge__', '__getattribute__', '__getstate__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__module__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__static_attributes__', '__str__', '__subclasshook__', '__weakref__', 'otobrazh', 'zad_dr_zn', 'zad_zn']
```
- Создание нового отрибута
```py
Class3.fio='Иванов И.И.'
dir(Class3)
['__add__', '__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__firstlineno__', '__format__', '__ge__', '__getattribute__', '__getstate__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__module__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__static_attributes__', '__str__', '__subclasshook__', '__weakref__', 'fio', 'otobrazh', 'zad_dr_zn', 'zad_zn']
z7=Class3(123)
```
- Отличие в data
```py
dir(z7)==dir(Class3)
False
z7.fio
'Иванов И.И.'
z7.otobrazh()
значение= 123
dir(z7)
['__add__', '__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__firstlineno__', '__format__', '__ge__', '__getattribute__', '__getstate__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__module__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__static_attributes__', '__str__', '__subclasshook__', '__weakref__', 'data', 'fio', 'otobrazh', 'zad_dr_zn', 'zad_zn']
dir(Class3)
['__add__', '__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__firstlineno__', '__format__', '__ge__', '__getattribute__', '__getstate__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__module__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__static_attributes__', '__str__', '__subclasshook__', '__weakref__', 'fio', 'otobrazh', 'zad_dr_zn', 'zad_zn']
```
- Значение не изменилось у родительского класса
```py
z7.fio ='fff'
z7.fio
'fff'
Class3.fio
'Иванов И.И.'
z7.rozden='1987'
```
- Атрибут rozden не появится у родительского класса
```py
dir(z7)
['__add__', '__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__firstlineno__', '__format__', '__ge__', '__getattribute__', '__getstate__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__module__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__static_attributes__', '__str__', '__subclasshook__', '__weakref__', 'data', 'fio', 'otobrazh', 'rozden', 'zad_dr_zn', 'zad_zn']
dir(Class3)
['__add__', '__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__firstlineno__', '__format__', '__ge__', '__getattribute__', '__getstate__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__module__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__static_attributes__', '__str__', '__subclasshook__', '__weakref__', 'fio', 'otobrazh', 'zad_dr_zn', 'zad_zn']
```
### 6.Выявление родительских классов
- Выявление родительских классов с помощью атрибута _bases_
```py
from Mod3 import Class1,Class2,Class3
dir()
['Class1', 'Class2', 'Class3', 'Mod3', '__annotations__', '__builtins__', '__doc__', '__loader__', '__name__', '__package__', '__spec__', 'os']
Class3.__bases__
(<class 'Mod3.Class2'>,)
Class2.__bases__
(<class 'Mod3.Class1'>,)
Class1.__bases__
(<class 'object'>,)
```
- Выявление родительских классов (вся цепочка) с помощью атрибута _mro_
```py
Class3.__mro__
(<class 'Mod3.Class3'>, <class 'Mod3.Class2'>, <class 'Mod3.Class1'>, <class 'object'>)
ZeroDivisionError.__mro__
(<class 'ZeroDivisionError'>, <class 'ArithmeticError'>, <class 'Exception'>, <class 'BaseException'>, <class 'object'>)
```
### 7. Создание свойства класса
```py
class Class4:
def __init__(sam,znach):
sam.__prm=znach
def chten(sam):
return sam.__prm
def zapis(sam,znch):
sam.__prm=znch
def stiran(sam):
del sam.__prm
svojstvo=property(chten,zapis,stiran)
```
- Инициализация свойства (getter setter)
```py
exempl=Class4(12)
exempl.svojstvo
12
exempl.svojstvo=45
exempl.svojstvo
45
print(exempl.svojstvo)
45
del exempl.svojstvo
print(exempl.svojstvo)
```
- Свойство удалено у экземпляра, невозможно обратиться. У класса свойство остается
```py
Traceback (most recent call last):
File "<pyshell#20>", line 1, in <module>
print(exempl.svojstvo)
File "<pyshell#13>", line 5, in chten
return sam.__prm
AttributeError: 'Class4' object has no attribute '_Class4__prm'
newexp=Class4(12)
newexp.svojstvo
12
```
- Вывод: Удаляется только атрибут __prm, а не весь экземпляр. Ошибка возникает из-за попытки чтения несуществующего атрибута. Нужно добавить проверку в методы класса.
### 8. Представления в виде класса модели системы автоматического регулирова-ния (САР), состоящей из последовательного соединения усилителя и двух инерционных звеньев, охваченных отрицательной обратной связью с усилителем.
```py
class SAU:
def __init__(self,zn_param):
self.param=zn_param
self.ypr=[0,0]
def zdn_zn(self,upr):
self.x=upr
def model(self):
def inerz(x,T,yy):
return (x+T*yy)/(T+1)
y0=self.x-self.ypr[1]*self.param[3] #Обр.связь с усилителем 2
y1=self.param[0]*y0 #Усилитель1
y2=inerz(y1,self.param[1],self.ypr[0]) #Инерционное звено1
y3=inerz(y2,self.param[2],self.ypr[1]) #Инерционное звено2
self.ypr[0]=y2
self.ypr[1]=y3
def otobraz(self):
print('y=',self.ypr[1])
```
- Код тестирования
```py
###main_SAU
prm=[2.5,4,1.3,0.8] #Параметры модели: коэф.усиления, 2 пост.времени, обратная связь
from SAU import *
xx=[0]+[1]*20 #Входной сигнал – «ступенька»
SAUe=SAU(prm) # Создаём экземпляр класса
yt=[]
for xt in xx: # Прохождение входного сигнала
SAUe.zdn_zn(xt)
SAUe.model()
SAUe.otobraz()
yt.append(SAUe.ypr[1])
import pylab
pylab.plot(yt)
pylab.show()
```
- Запуск модуль тестирования
```py
import test
y= 0.0
y= 0.2173913043478261
y= 0.4763705103969754
y= 0.686594887811293
y= 0.8199324616478645
y= 0.8837201137353929
y= 0.8994188484874774
y= 0.8892777072047301
y= 0.870097963179993
y= 0.8518346102696789
y= 0.8387499784485772
y= 0.8314204114211459
y= 0.8286051955249649
y= 0.8285656555914835
y= 0.8297915186846528
y= 0.8312697736438287
y= 0.8324765218921963
y= 0.8332456979978418
y= 0.8336163607592184
y= 0.8337101315489143
y= 0.833654237067147
```
![График переходного процесса](fig.png)
```py
===== RESTART: /Users/dmitrijantonov/Desktop/POAC/python-labs/TEMA9/test.py ====
y= 0.0
y= 0.4347826086956522
y= 0.8771266540642723
y= 1.1305662858551822
y= 1.1883971255105579
y= 1.1326349288718767
y= 1.0497533578387872
y= 0.990644578833048
y= 0.9679847053552146
y= 0.9716581950194924
y= 0.9856417751200821
y= 0.9982074917220521
y= 1.0046687323933552
y= 1.005560453221529
y= 1.0035460777605603
y= 1.0010934567866612
y= 0.9995090295694802
y= 0.9990060583193288
y= 0.999210776397813
y= 0.9996464852690349
y= 0.9999972035112243
```
![График переходного процесса](k5.png)
```py
===== RESTART: /Users/dmitrijantonov/Desktop/POAC/python-labs/TEMA9/test.py ====
y= 0.0
y= 10.434782608695652
y= -62.42722117202269
y= 441.6213035259309
y= -3045.006010698934
y= 21072.830598329532
y= -145756.02311219365
y= 1008239.1249389423
y= -6974221.774992491
y= 48242372.61584475
y= -333704038.94107586
y= 2308310792.118783
y= -15967138737.795193
y= 110448523882.25536
y= -763998899668.5714
y= 5284763419071.18
y= -36555974632436.45
y= 252866434191791.06
y= -1749137704131481.2
y= 1.209920453773572e+16
y= -8.369309637553866e+16
```
![График переходного процесса](k20.png)
```py
===== RESTART: /Users/dmitrijantonov/Desktop/POAC/python-labs/TEMA9/test.py ====
y= 0.0
y= 1.7391304347826089
y= 1.6937618147448015
y= 0.9085559299745211
y= 0.9495540682030151
y= 1.3035341690149207
y= 1.2757616169252037
y= 1.116425550960422
y= 1.133140167539201
y= 1.2047517464994821
y= 1.1953257047692445
y= 1.163190713632341
y= 1.168291227922628
y= 1.1826887757160904
y= 1.180006868007609
y= 1.1735666352933953
y= 1.1749473300671665
y= 1.17782341716993
y= 1.1771240746521525
y= 1.175841826810497
y= 1.1761915011970139
```
![График переходного процесса](k002.png)

@ -0,0 +1,70 @@
# Общее контрольное задание по теме 8
**Антонов Дмитрий, А-03-23** \
Общее контрольное задание.
Создайте и запишите в модуль класс, содержащий следующие компоненты:
- конструктор, задающий четырем атрибутам (fio, otdel, dolzhnost, oklad), представляющим фа-милии сотрудников, название отделов, названия должностей сотрудников и размеры их окладов, некоторые начальные значения;
- метод для обеспечения операции повышения оклада сотрудника на заданное значение;
- метод для обеспечения перевода сотрудника из одного отдела в другой;
- метод для изменения должности сотрудника;
- свойство, содержащее перечень (список) поощрений сотрудника.
```py
class Departament:
def __init__(self,fio,otdel,dolzhnost,oklad):
self.fio = fio
self.otdel = otdel
self.dolzhnost = dolzhnost
self.oklad = oklad
self.__prm = list()
def increase(self,put):
self.oklad += put
def new_work(self,new_otdel):
self.otdel = new_otdel
def new_dolzhnost(self,new_dolzh):
self.dolzhnost = new_dolzh
def all_info(self):
print(self.fio,self.otdel,self.dolzhnost,self.oklad,self.prop)
def getter(self):
return self.__prm
def setter(self,new):
self.__prm.append(new)
prop = property(getter,setter)
```
Задание: Создайте 2 экземпляра класса, задайте им некоторые значения атрибутов и свойства. Отобразите эти значения. Попробуйте с этими экземплярами операции перевода из отдела в отдел, измене-ния должности и оклада, объявления благодарности.
```py
from control import Departament
empl_fr = Departament("Иванов И.И.","УИТ","Доцент",100)
empl_sec = Departament("Петров П.П.","ИРЭ","Аспирант",50)
empl_fr.all_info()
Иванов И.И. УИТ Доцент 100 []
empl_sec.all_info()
Петров П.П. ИРЭ Аспирант 50 []
empl_sec.new_work("УИТ")
empl_sec.all_info()
Петров П.П. УИТ Аспирант 50
empl_fr.new_dolzhnost("Академик")
empl_fr.increase(120)
empl_fr.all_info()
Иванов И.И. УИТ Академик 220
empl_fr.prop="Отличная работа!"
empl_fr.all_info()
Иванов И.И. УИТ Академик 220 Отличная работа!
empl_fr.prop="Отличная работа!"
empl_fr.prop="Отличная работа!"
empl_fr.prop="Отличная работа!"
empl_fr.all_info()
Иванов И.И. УИТ Доцент 100 ['Отличная работа!', 'Отличная работа!', 'Отличная работа!']
```

@ -0,0 +1,14 @@
###main_SAU
prm=[0.01,4,1.3,0.8] #Параметры модели: коэф.усиления, 2 пост.времени, обратная связь
from SAU import *
xx=[0]+[1]*20 #Входной сигнал – «ступенька»
SAUe=SAU(prm) # Создаём экземпляр класса
yt=[]
for xt in xx: # Прохождение входного сигнала
SAUe.zdn_zn(xt)
SAUe.model()
SAUe.otobraz()
yt.append(SAUe.ypr[1])
import pylab
pylab.plot(yt)
pylab.show()
Загрузка…
Отмена
Сохранить