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

...

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

Автор SHA1 Сообщение Дата
643fd82f3d Загрузил(а) файлы в 'TEMA9' 2025-12-08 09:09:18 +00:00
3b13ebc021 Загрузил(а) файлы в 'TEMA9' 2025-12-08 09:08:52 +00:00
35e631a9ec Загрузил(а) файлы в 'TEMA9' 2025-12-08 09:08:14 +00:00
sanzyyyq
a24b00fbd6 done lab9 2025-12-06 15:49:38 +03:00
sanzyyyq
2292ab34e4 Done lr8 2025-11-24 11:34:58 +03:00
sanzyyyq
51c2411acc done lr8 2025-11-24 11:18:10 +03:00
sanzyyyq
3dc80cfd1e done lr8 2025-11-24 11:15:12 +03:00
sanzyyyq
da6cf0f5e7 Done task lr7 2025-11-24 10:32:53 +03:00
sanzyyyq
b3f8310c88 lab 7 2025-11-10 12:13:12 +03:00
sanzyyyq
0a47a34dc9 lab 7 2025-11-10 12:12:43 +03:00
sanzyyyq
7669d912a8 lab 7 2025-11-10 12:08:09 +03:00
sanzyyyq
00cc2bfe39 test2 2025-11-10 10:20:52 +03:00
sanzyyyq
75baabda53 test 2025-11-10 10:19:22 +03:00
sanzyyyq
b9a59acc33 done lab 6 2025-11-09 18:03:52 +03:00
1b0cbe9074 Изменил(а) на 'TEMA6/text.txt' 2025-10-27 09:40:29 +00:00
8c3d0dda94 Загрузил(а) файлы в 'TEMA6' 2025-10-27 09:26:12 +00:00
a7e068f465 Изменил(а) на 'TEMA5/test.md' 2025-10-27 08:35:33 +00:00
c6e42d7b51 Изменил(а) на 'TEMA5/test.md' 2025-10-27 08:34:14 +00:00
850522a5e7 Создал(а) 'TEMA5/test.md' 2025-10-27 08:33:28 +00:00
Максим Корнеев
abf0cdc7c7 Done lab5 2025-10-25 19:17:02 +03:00
dd259688d1 Изменил(а) на 'TEMA3/test.md' 2025-10-13 08:03:17 +00:00
dafe54dbcc Загрузил(а) файлы в 'TEMA3' 2025-10-13 08:02:58 +00:00
Пользователь № 16 аудитории Ж-113
1134a80355 '' 2025-10-13 10:19:01 +03:00
ac5e41e70f Изменил(а) на 'TEMA4/report.md' 2025-10-11 14:18:48 +00:00
43c5a82de1 Изменил(а) на 'TEMA4/report.md' 2025-10-11 14:18:01 +00:00
c2f98c0fed Изменил(а) на 'TEMA4/report.md' 2025-10-11 14:14:52 +00:00
b1f649036b Изменил(а) на 'TEMA4/report.md' 2025-10-11 09:16:27 +00:00
Максим Корнеев
b25f2defa1 Done lab4 2025-10-11 02:43:08 +03:00
Максим Корнеев
43b8bd5536 done lab3 2025-09-27 19:39:32 +03:00
Максим Корнеев
c9fbe87501 done lab 2025-09-02 22:00:03 +03:00
Максим Корнеев
21374ae0c8 first commit 2025-09-01 19:25:19 +03:00
937634dba1 Изменил(а) на 'TEMA1/test.md' 2025-09-01 13:43:31 +00:00
Пользователь № 4 аудитории Ж-111
e0cb7d48e1 test task 2025-09-01 16:41:23 +03:00
Пользователь № 4 аудитории Ж-111
2133c6037e fix comments1 2025-09-01 16:20:57 +03:00
Пользователь № 4 аудитории Ж-111
9e0f14c49b fix comments 2025-09-01 16:14:06 +03:00
Пользователь № 4 аудитории Ж-111
bae1f50817 added comments 2025-09-01 16:11:26 +03:00
Пользователь № 4 аудитории Ж-111
1a93a3560b fix pictures 2025-09-01 16:08:38 +03:00
Пользователь № 4 аудитории Ж-111
e047de5b42 done report report 2025-09-01 16:06:48 +03:00
Пользователь № 4 аудитории Ж-111
4f9d91440e third fix report 2025-09-01 15:53:32 +03:00
Пользователь № 4 аудитории Ж-111
8c3c68e028 second fix report 2025-09-01 15:43:32 +03:00
Пользователь № 4 аудитории Ж-111
e1eb93a01f first fix report 2025-09-01 15:41:17 +03:00
Пользователь № 4 аудитории Ж-111
056d7d0c95 second commit 2025-09-01 15:39:27 +03:00
Пользователь № 4 аудитории Ж-111
6f25b2d850 firs commit 2025-09-01 14:25:58 +03:00
66 изменённых файлов: 4431 добавлений и 0 удалений

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

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

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

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

После

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

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

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

После

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

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

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

После

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

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

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

После

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

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

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

После

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

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

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

После

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

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

@@ -0,0 +1,108 @@
# Отчет по теме 1
Корнеев Максим, А-01-23
## 1 Изучение среды IDLE
## 1.1 Изучение программы-интерпретатора «Python 3.4 (command line)»
```py
>>> print('Hello')
'Hello'
>>> h=input('Your name=')
'Your name=Maxim'
>>> exit()
```
## 1.2 Настройка текущего каталога
```py
>>> import os
>>> os.chdir('C:\\Users\\u111-04\\Desktop\\python-labs\\TEMA1')
```
## 1.3 Настройка шрифта и размера начального окна
Скриншот настройки шрифта:
![Скриншот настройки шрифта](figure1.png)
Скриншот настройки начального окна:
![Скриншот настройки начального окна](figure2.png)
## 1.4 Объединение инструкций используемых выше в одну программу
Программа в файле pr0
## 1.5 Изучение содержимого файла Pr0.cpython-311.pyc
Скриншот части содержимого файла:
![Скриншот части содержимого файла](figure3.png)
В файле содержится кэш выполнения программы Pr0 в машинном коде
## 1.6 Изучение раздела help
```py
>>> help(print)
'Help on built-in function print in module builtins:
print(*args, sep=' ', end='\n', file=None, flush=False)
Prints the values to a stream, or to sys.stdout by default.
sep
string inserted between values, default a space.
end
string appended after the last value, default a newline.
file
a file-like object (stream); defaults to the current sys.stdout.
flush
whether to forcibly flush the stream.
>>> help(print)
Help 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.6 Выполнение пункта 15
```py
==================== RESTART: C:\Users\u111-04\Desktop\python-labs\TEMA1\prb1.py ===================
Как Вас зовут? Maxim
Привет, Maxim
>>> import tdemo_chaos
================ RESTART: C:\Users\u111-04\Desktop\python-labs\TEMA1\tdemo_chaos.py ================
```
Скриншот вывода программы tdemo_chaos:
![Скриншот вывода программы tdemo_chaos](figure4.png)
Скриншот окна с примером "Часы":
![Скриншот окна с примером "Часы"](figure5.png)

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

@@ -0,0 +1,11 @@
# Индивидуальное контрольное задание по теме 1
Корнеев Максим, А-03-23
## Задание
Можно ли создавать программы для среды Python с помощью других текстовых редакторов?
## Решение
Можно, если использовать синтаксис языка Python. Можно сохранить файл с расширением *.py.

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

@@ -0,0 +1,379 @@
# Отчет по теме 2
Корнеев Максим, А-03-23
## 1 Изучение простых объектов
```py
>>> f1=16; f2=3
>>> f1,f2
(16, 3)
>>> f1;f2
16
3
>>> dir()
['__annotations__', '__builtins__', '__doc__', '__loader__', '__name__', '__package__', '__spec__', 'f1', 'f2', 'os']
>>> 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'>
>>> del f1,f2
>>> dir()
['__annotations__', '__builtins__', '__doc__', '__loader__', '__name__', '__package__', '__spec__', 'os']
```
## 2 Изучение правил именования переменных
```py
>>> gg1=1.6
>>> hh1='Строка'
>>> 73sr=3
SyntaxError: invalid decimal literal
>>> and=7
SyntaxError: invalid syntax
>>> import keyword
>>> keyword.kwlist
['False', 'None', 'True', 'and', 'as', 'assert', 'async', 'await', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'nonlocal', 'not', 'or', 'pass', 'raise', 'return', 'try', 'while', 'with', 'yield']
>>> kw_list=keyword.kwlist
>>> kw_list
['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']
>>> Gg1=45
>>> gg1
1.6
>>> Gg1
45
```
## 3 Изучение встроенных функций
```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']
>>> abs(-10)
10
>>> x=[2,4,9,7]
>>> len(x)
4
>>> max(x)
9
>>> max(3,10)
10
>>> min(x)
2
>>> min(3,10)
3
>>> pow(3,4)
81
>>> pow(3,4,5)
1
>>> round(3.284)
3
>>> round(3.284, 2)
3.28
>>> animal = ['elephant', 'dog', 'crocodile', 'cat', 'kangaroo']
>>> sorted(animal)
['cat', 'crocodile', 'dog', 'elephant', 'kangaroo']
>>> sorted(animal, reverse=True)
['kangaroo', 'elephant', 'dog', 'crocodile', 'cat']
>>> sorted(animal, key=len)
['dog', 'cat', 'elephant', 'kangaroo', 'crocodile']
>>> sum(x)
22
>>> sum(x, start=10)
32
>>> list1 = [1, 2, 4, 5]
>>> list2 = ['apple', 'banana', 'orange']
>>> list3 = list(zip(list1, list2))
>>> list3
[(1, 'apple'), (2, 'banana'), (4, 'orange')]
```
## 4 Изучение простых базовых типов объектов
### 4.1 Логический тип
```py
>>> bb1=True; bb2=False
>>> bb1;bb2
True
False
>>> type(bb1); type(bb2)
<class 'bool'>
<class 'bool'>
```
### 4.2 Другие простые типы
```py
>>> ii1=-1234567890
>>> type(ii1)
<class 'int'>
>>> ff1=-8.9876e-12
>>> type(ff1)
<class 'float'>
>>> dv1=0b1101010
>>> type(dv1)
<class 'int'>
>>> vsm1=0o52765
>>> type(vsm1)
<class 'int'>
>>> shest1=0x7109af6
>>> type(shest1)
<class 'int'>
>>> cc1=2-3j
>>> ype(cc1)
<class 'complex'>
>>> a=3.67; b=-0.45
>>> cc2=complex(a,b)
>>> cc2
(3.67-0.45j)
>>> type(a); type(b)
<class 'float'>
<class 'float'>
>>> type(cc2)
<class 'complex'>
```
### 4.3 Строка символов
```py
>>> ss1='Это - строка символов'
>>> ss1
'Это - строка символов'
>>> ss1="Это - строка символов"
>>> ss1
'Это - строка символов'
>>> ss1a="Это - \" строка символов \", \n \t выводимая на двух строках"
>>> print(ss1a)
Это - " строка символов ",
выводимая на двух строках
>>> ss1b= 'Меня зовут: \n КорнеевМА'
>>> print(ss1b)
Меня зовут:
КорнеевМА
>>> mnogo="""Нетрудно заметить , что в результате операции
над числами разных типов получается число,
имеющее более сложный тип из тех, которые участвуют в операции."""
>>> print(mnogo)
Нетрудно заметить , что в результате операции
над числами разных типов получается число,
имеющее более сложный тип из тех, которые участвуют в операции.
>>> ss1[0]
'Э'
>>> ss1[8]
'р'
>>> ss1[-2]
'о'
>>> ss1[6:9]
'стр'
>>> ss1[13:]
'символов'
>>> ss1[:13]
'Это - строка '
>>> ss1[5:-8]
' строка '
>>> ss1[3:17:2]
' тоасм'
>>> ss1[17:3:-2] #Часть строки – с 17-го по 3-й индексы с шагом 2
'омсаот '
>>> ss1[-4:3:-2]
'омсаот '
>>> ss1[4]='='
Traceback (most recent call last):
File "<pyshell#106>", line 1, in <module>
ss1[4]='='
TypeError: 'str' object does not support item assignment
>>> ss1=ss1[:4]+'='+ss1[5:]
>>> ss1
'Это = строка символов'
>>> print(ss1b[8:-5])
>>> ут:
Корн
>>> ss1b[-3:4:-3]
'внК уз'
>>> ss1b[0:7:2]
'Мн о'
```
### 4.4 Обобщение
```py
>>> dd1=True
>>> type(dd1), dd1
(<class 'bool'>, True)
>>> dd2=473
>>> type(dd2), dd2
(<class 'int'>, 473)
>>> dd3=-34.562
>>> type(dd3), dd3
(<class 'float'>, -34.562)
>>> dd4=7.3-4.2j
>>> type(dd4), dd4
(<class 'complex'>, (7.3-4.2j))
>>> dd5='киси-киси мяу-мяу, киси-киси мя-мя-мяу'
>>> type(dd5), dd5
(<class 'str'>, 'киси-киси мяу-мяу, киси-киси мя-мя-мяу')
```
## 5 Более сложные типы объектов
### 5.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]
>>> spis1[-1]
(5-9j)
>>> stup[-8::2]
[0, 1, 1, 1]
```
В полученный список вошли элементы из списка stup с индексами 1, 3, 5, 7.
```py
>>> spis1[1]='Список'
>>> spis1
[111, 'Список', (5-9j)]
>>> len(spis1)
3
>>> 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']
>>> spis1.append('New item')
>>> spis1+['New item']
[111, 'Список', (5-9j), 'New item', 'New item']
>>> spis1.append(ss1b)
>>> spis1
[111, 'Список', (5-9j), 'New item', 'Меня зовут: \n КорнеевМА']
>>> spis1.pop(1)
'Список'
>>> spis1.insert(1, 'Hello')
>>> spis1
[111, 'Hello', (5-9j), 'New item', 'Меня зовут: \n КорнеевМА']
>>> spis1.remove('Hello')
>>> spis1
[111, (5-9j), 'New item', 'Меня зовут: \n КорнеевМА']
>>> spis1.extend(stup)
>>> spis1
[111, (5-9j), 'New item', 'Меня зовут: \n КорнеевМА', 0, 0, 1, 1, 1, 1, 1, 1, 1]
>>> clspis=[123, (2-4j), 'Raq1']
>>> clspis.clear()
>>> clspis
[]
>>> new_list = [3, 1, 4, 1, 5, 9]
>>> new_list.sort()
>>> new_list
[1, 1, 3, 4, 5, 9]
>>> new_list.reverse()
>>> new_list
[9, 5, 4, 3, 1, 1]
>>> copy_list = new_list.copy()
>>> copy_list
[9, 5, 4, 3, 1, 1]
>>> new_list.count(1)
2
>>> new_list.index(3)
3
>>> spis2=[spis1,[4,5,6,7]]
>>> spis2
[[111, (5-9j), 'New item', 'Меня зовут: \n КорнеевМА', 0, 0, 1, 1, 1, 1, 1, 1, 1], [4, 5, 6, 7]]
>>> spis2[0][1]
(5-9j)
>>> spis2[0][1]=78
>>> spis2
[[111, 78, 'New item', 'Меня зовут: \n КорнеевМА', 0, 0, 1, 1, 1, 1, 1, 1, 1], [4, 5, 6, 7]]
>>> spis1
[111, 78, 'New item', 'Меня зовут: \n КорнеевМА', 0, 0, 1, 1, 1, 1, 1, 1, 1]
```
spis1 изменился так как в spis2[0] хранится не копия spis1, а ссылка на него.
```py
>>> my_list=[23, 'stroka', False, [2, 3]]
```
### 5.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 КорнеевМА')
>>> kort1.index(2)
4
>>> kort1.count(222)
1
>>> kort1[2]=90
Traceback (most recent call last):
File "<pyshell#210>", line 1, in <module>
kort1[2]=90
TypeError: 'tuple' object does not support item assignment
>>> kort3=(24, 'well', [True, False], (2+3j, 'od'))
```
### 5.3 Объект-словарь
```py
>>> dic1={'Saratov':145, 'Orel':56, 'Vologda':45}
>>> dic1['Orel']
56
>>> dic1['Pskov']=78
>>> dic1
{'Saratov': 145, 'Orel': 56, 'Vologda': 45, 'Pskov': 78}
>>> 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': {1: 'mean', 2: 'standart deviation', 3: 'correlation'}, 'POAS': ['base', 'elementary', 'programming']}
>>> dic3['statistics'][2]
'standart deviation'
>>> 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 КорнеевМА'}
>>> dic5=dict(zip(['A','B','C','Stroka'],[16,-3,9,ss1b]))
>>> dic5
{'A': 16, 'B': -3, 'C': 9, 'Stroka': 'Меня зовут: \n КорнеевМА'}
>>> kort3=(4, 5, 'ara', 2, 'sorc', 19, 3)
>>> list4=['wet', '>_<',423,0,52]
>>> dic6=dict(zip(kort3,list4))
>>> dic6
{4: 'wet', 5: '>_<', 'ara': 423, 2: 0, 'sorc': 52}
```
В словаре 5 элементов так как функция zip() останавливается на длине самой короткой последовательности.
```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
```
### 5.4 Объект-множество
```py
>>> mnoz1={'двигатель','датчик','линия связи','датчик','микропроцессор','двигатель'}
>>> mnoz1
{'двигатель', 'линия связи', 'микропроцессор', 'датчик'}
>>> len(mnoz1)
4
>>> 'датчик' in mnoz1
True
>>> mnoz1.add('реле')
>>> mnoz1
{'двигатель', 'датчик', 'реле', 'линия связи', 'микропроцессор'}
>>> mnoz1.remove('линия связи')
>>> mnoz1
{'двигатель', 'датчик', 'реле', 'микропроцессор'}
>>> mnoz2={21,'строка', 21, (4, 2), '4', 4}
>>> mnoz2
{'4', 4, 'строка', 21, (4, 2)}
>>> len(mnoz2)
5
>>> 'датчик' in mnoz2
False
>>> mnoz2.add('cat')
>>> mnoz2.remove('4')
>>> mnoz2
{4, 'строка', 21, 'cat', (4, 2)}
```

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

@@ -0,0 +1,38 @@
# Общее контрольное задание по теме 2
Корнеев Максим, А-03-23
## Задание
Реализовать, записать в текстовый файл и проанализировать результаты последовательности инструкций, выполняющих следующие действия:
* Создать переменную с именем familia и со значением - символьной строкой – своей фамилией в латинской транскрипции.
* Создать переменную со значением, совпадающим с первой буквой из familia.
* Создать переменную с именем sp_kw со значением – списком всей ключевых слов языка Python.
* Удалите из списка sp_kw значение 'nonlocal'. Выводом списка в командном окне IDLE убедитесь, что это значение удалено из списка.
* Создайте кортеж kort_nam с именами: вашим и еще 3-х студентов из вашей группы. Напишите инструкцию, позволяющую убедиться, что тип переменной – это tuple.
* Напишите инструкцию, добавляющую в kort_nam имена еще двух студентов.
* Напишите инструкцию, позволяющую определить, сколько раз в кортеже присутствуют студенты с именем «Дима».
* Создайте словарь dict_bas, в котором ключами являются русские названия типов переменных, использованных в предыдущих операторах, а значениями – ранее созданные переменные, соответствующие этим типам.
## Решение
```py
>>> familia='Korneev'
>>> first_letter=familia[0]
>>> first_letter
'K'
>>> sp_kw=keyword.kwlist
>>> sp_kw
['False', 'None', 'True', 'and', 'as', 'assert', 'async', 'await', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'nonlocal', 'not', 'or', 'pass', 'raise', 'return', 'try', 'while', 'with', 'yield']
>>> sp_kw.remove('nonlocal')
>>> 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']
>>> kort_nam=('Максим', 'Даня', 'Дима', 'Артем')
>>> type(kort_nam)
<class 'tuple'>
>>> kort_nam = kort_nam + ('Давид','Дима')
>>> kort_nam.count('Дима')
2
>>> dict_bas={'строка': ['familia', 'first_letter'], 'список': 'sp_kw', 'кортеж': 'kort_nam'}
```

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

@@ -0,0 +1,702 @@
# Отчет по теме 3
Корнеев Максим, А-03-23
## 1 Преобразование простых базовых типов объектов.
### 1.1 Преобразование в логический тип
```py
>>> logiz1=bool(56)
>>> logiz1
True
>>> type(logiz1)
<class 'bool'>
>>> logiz2=bool(0)
>>> logiz2
False
>>> type(logiz2)
<class 'bool'>
>>> logiz3=bool("Beta")
>>> logiz3
True
>>> type(logiz3)
<class 'bool'>
>>> logiz4=bool("")
>>> logiz4
False
>>> type(logiz4)
<class 'bool'>
```
### 1.2 Преобразование в численные типы
```py
>>> tt1=int(198.6)
>>> tt1
198
>>> type(tt1)
<class 'int'>
>>> tt2=int("-76")
>>> tt2
-76
>>> type(tt2)
<class 'int'>
>>> tt3=int("B",16)
>>> tt3
11
>>> type(tt3)
<class 'int'>
>>> tt4=int("71",8)
>>> tt4
57
>>> type(tt4)
<class 'int'>
>>> tt5=int("98.76")
Traceback (most recent call last):
File "<pyshell#26>", line 1, in <module>
tt5=int("98.76")
ValueError: invalid literal for int() with base 10: '98.76'
```
Диагностическое сообщение выдано так как команда int ожидает, что ей сообщат строку (только цифры, может быть знак в начале). Здесь есть точка, поэтому возникает несоответствие ожидаемого формата. Нужно сначала переопределить это число как float, а потом уже применить команду int.
```py
>>> flt1=float(789)
>>> flt1
789.0
>>> type(flt1)
<class 'float'>
>>> flt2=float(-6.78e2)
>>> flt2
-678.0
>>> type(flt2)
<class 'float'>
>>> flt3=float("Infinity")
>>> flt3
inf
>>> type(flt3)
<class 'float'>
>>> flt4=float("-inf")
>>> flt3
inf
>>> type(flt4)
<class 'float'>
```
### 1.3 Преобразование десятичных чисел в другие системы счисления
```py
>>> hh=123
>>> dv1=bin(hh)
>>> dv1
'0b1111011'
>>> type(dv1)
<class 'str'>
>>> vos1=oct(hh)
>>> vos1
'0o173'
>>> type(vos1)
<class 'str'>
>>> shs1=hex(hh)
>>> shs1
'0x7b'
>>> type(shs1)
<class 'str'>
>>> int(dv1,2)
123
>>> int(vos1,8)
123
>>> int(shs1,16)
123
```
## 2 Преобразование более сложных типов объектов
### 2.1 Преобразование в строку символов
```py
>>> strk1=str(23.6)
>>> strk1
'23.6'
>>> strk2=str(logiz3)
>>> strk2
'True'
>>> strk3=str(["A","B","C"])
>>> strk3
"['A', 'B', 'C']"
>>> strk4=str(("A","B","C"))
>>> strk4
"('A', 'B', 'C')"
>>> strk5=str({"A":1,"B":2,"C":9})
>>> strk5
"{'A': 1, 'B': 2, 'C': 9}"
```
### 2.2 Преобразование элементов объекта в список
```py
>>> spis1=list("Строка символов")
>>> spis1
['С', 'т', 'р', 'о', 'к', 'а', ' ', 'с', 'и', 'м', 'в', 'о', 'л', 'о', 'в']
>>> spis2=list((124,236,-15,908))
>>> spis2
[124, 236, -15, 908]
>>> spis3=list({"A":1,"B":2,"C":9})
>>> spis3
['A', 'B', 'C']
>>> spis3=list({"A":1,"B":2,"C":9}.values())
>>> spis3
[1, 2, 9]
```
### 2.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')
```
### 2.4 Удаление объектов
```py
>>> del strk5, kort8
>>> dir()
['__annotations__', '__builtins__', '__doc__', '__loader__', '__name__', '__package__', '__spec__', 'dv1', 'flt1', 'flt2', 'flt3', 'flt4', 'hh', 'kort7', 'kort9', 'logiz1', 'logiz2', 'logiz3', 'logiz4', 'shs1', 'spis1', 'spis2', 'spis3', 'strk1', 'strk2', 'strk3', 'strk4', 'tt1', 'tt2', 'tt3', 'tt4', 'vos1']
```
Создадим строку с моей фамилией и инициалами. Преобразуем её в список, затем список - в кортеж, затем кортеж - в строку.
```py
>>> familia = 'КорнеевМА'
>>> f_spis=list(familia)
>>> f_spis
['К', 'о', 'р', 'н', 'е', 'е', 'в', 'М', 'А']
>>> f_kort=tuple(f_spis)
>>> f_kort
('К', 'о', 'р', 'н', 'е', 'е', 'в', 'М', 'А')
>>> f_str=str(f_kort)
>>> f_str
"('К', 'о', 'р', 'н', 'е', 'е', 'в', 'М', 'А')"
```
## 3 Арифметические операции
### 3.1 Сложение и вычитание (+ и -)
```py
>>> 12+7+90
109
>>> 5.689e-1 - 0.456
0.11289999999999994
>>> 23.6+54
77.6
>>> 14-56.7+89
46.3
```
### 3.2 Умножение (*)
```py
>>> -6.7*12
-80.4
```
### 3.3 Деление (/)
```py
>>> -234.5/6
-39.083333333333336
>>> a=178/45
>>> a
>>> 3.9555555555555557
>>> type(a)
<class 'float'>
```
### 3.4 Деление с округлением вниз (//)
```py
>>> b=178//45
>>> b
3
>>> type(b)
<class 'int'>
>>> c=-24.6//12.1
>>> c
-3.0
>>> type(c)
<class 'float'>
```
### 3.5 Получение остатка от деления (%)
```py
>>> 148%33
16
>>> 12.6%3.8
1.2000000000000002
>>> 15%2.3
1.200000000000001
>>> 13.2%2
1.1999999999999993
```
### 3.6 Возведение в степень (**)
```py
>>> 14**3
2744
>>> e=2.7**3.6
>>> e
35.719843790663525
>>> 13.4**4
32241.793600000005
>>> 11**4.3
30059.970232379124
```
Попробуем операции с участием комплексных чисел:
```py
>>> c1=2-3j
>>> c2=1+4j
>>> c1+c2
(3+1j)
>>> c1+2
(4-3j)
>>> c2-3
(-2+4j)
>>> c2*c1
(14+5j)
>>> c2*3
(3+12j)
>>> c1/5
(0.4-0.6j)
>>> 12/c2
(0.7058823529411765-2.823529411764706j)
>>> c1**2
(-5-12j)
>>> 2**c1
(-1.947977671863125-3.493620327099486j)
>>> c1**c2
(-98.43395342485856-155.17660426903427j)
```
Из используемых выше операций нельзя использовать с комплексными аргументами деление с округлением вниз (//) и получение остатка от деления (%)
## 4 Операции с двоичными представлениями целых чисел
### 4.1 Двоичная инверсия (~)
```py
>>> dv1=9
>>> bin(dv1)
'0b1001'
>>> dv2=~dv1
>>> bin(dv2)
'-0b1010'
>>> dv2
-10
```
Результат не совпадает с ожидаемым видом "0110". Это происходит, потому что в python под инверсией подразумевается смена всех 0 на 1, 1 на 0, а еще смена знака. Было число 9 (1001), меняем все значения на противоположные (0110), затем надо поменять знак (это значит, что надо инвертировать все значения разрядов - будет 1001) и прибавить к полученному числу единицу (которая отвечает за знак), получаем число 1010.
### 4.2 Двоичное «И» (&)
```py
>>> 7&9
1
>>> bin(7&9)
'0b1'
>>> 7&8
0
>>> bin(7&8)
'0b0'
```
### 4.3 Двоичное «ИЛИ» (|)
```py
>>> 7|9
15
>>> bin(7|9)
'0b1111'
>>> 7|8
15
>>> bin(7|8)
'0b1111'
>>> 14|5
15
>>> bin(14|5)
'0b1111'
```
### 4.4 Двоичное «исключающее ИЛИ»(^)
```py
>>> 14^5
11
>>> bin(14^5)
'0b1011'
```
### 4.5 Сдвиг двоичного представления на заданное число разрядов
```py
>>> h=14
>>> bin(h)
'0b1110'
>>> g=h<<2
>>> bin(g)
'0b111000'
>>> g1=h>>1
>>> bin(g1)
'0b111'
>>> g2=h>>2
>>> bin(g2)
'0b11'
```
Возьмём два числа 92 и 201. Проведём с ними двоичные операции:
```py
>>> g3=92
>>> bin(g3)
'0b1011100'
>>> g4=201
>>> bin(g4)
'0b11001001'
>>> g5=~g3
>>> g5
-93
>>> bin(g5)
'-0b1011101'
>>> g3&g4
72
>>> bin(g3&g4)
'0b1001000'
>>> g3|g4
221
>>> bin(g3|g4)
'0b11011101'
>>> g3^g4
149
>>> bin(g3^g4)
'0b10010101'
>>> g3<<2
368
>>> bin(g3<<2)
'0b101110000'
>>> g4>>3
25
>>> bin(g4>>3)
'0b11001'
```
## 5 Операции при работе с последовательностями
### 5.1 Объединение последовательностей (конкатенация)(+)
```py
>>> 'Система '+'регулирования'
'Система регулирования'
>>> ['abc','de','fg']+['hi','jkl']
['abc', 'de', 'fg', 'hi', 'jkl']
>>> ('abc','de','fg')+('hi','jkl')
('abc', 'de', 'fg', 'hi', 'jkl')
```
### 5.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)
```
### 5.3 Проверка наличия заданного элемента в последовательности (in)
```py
>>> stroka='Система автоматического управления'
>>> 'автомат' in stroka
True
>>> 'ку' in ['ку','-']*3
True
>>> 'ля-' in ('abc', 'de', 'fg', 'hi', 'jkl')
False
```
### 5.4 Подстановка значений в строку с помощью оператора «%»
```py
>>> stroka='Температура = %g %s %g'
>>> stroka
'Температура = %g %s %g'
>>> stroka % (16,' меньше ',25)
'Температура = 16 меньше 25'
>>> stroka='Температура = %(zn1)g %(sravn)s %(zn2)g'
>>> stroka
'Температура = %(zn1)g %(sravn)s %(zn2)g'
>>> stroka % {'zn1':16,'sravn':' меньше ','zn2':25}
'Температура = 16 меньше 25'
```
## 6 Оператор присваивания
### 6.1 Обычное присваивание значения переменной (=)
```py
>>> zz=-12
>>> zz
-12
```
### 6.2 Умножение текущего значения переменной на заданную величину (*=) или деление (/=)
```py
>>> zz/=2
>>> zz
-6.0
>>> zz*=5
>>> zz
-30.0
>>> strk='Hello'
>>> strk*=4
>>> strk
'HelloHelloHelloHello'
```
### 6.3 Операции деления с округлением вниз (//=), получения остатка от деления (%=) и возведения в степень(**=)
```py
>>> a=30
>>> a//=4
>>> a
7
>>> a%=4
>>> a
3
>>> a**=3
>>> a
27
```
### 6.4 Множественное присваивание
```py
>>> w=v=10
>>> w
10
>>> v
10
>>> n1,n2,n3=(11,-3,'all')
>>> n1
11
>>> n2
-3
>>> n3
'all'
>>> n1,n2,n3='a21'
>>> n1
'a'
>>> n2
'2'
>>> n3
'1'
>>> n1,n2,n3=[11,-3,'all']
>>> n1
11
>>> n2
-3
>>> n3
'all'
>>> n1,n2,n3={'sq':1, 'wew':'let', 'roar':-2}
>>> n1
'sq'
>>> n2
'wew'
>>> n3
'roar'
>>> n1,n2,n3={'sq':1, 'wew':'let', 'roar':-2}.values()
>>> n1
1
>>> n2
'let'
>>> n3
-2
>>> n1,n2,n3={11,-3,'all'}
>>> n1
'all'
>>> n2
11
>>> n3
-3
```
## 7 Логические операции
### 7.1 Операции сравнения
```py
>>> w
10
>>> v
10
>>> w==v
True
>>> w!=v
False
>>> w<v
False
>>> w>v
False
>>> w<=v
True
>>> w>=v
True
```
### 7.2 Проверка наличия заданного элемента в последовательности или во множестве, а также проверка наличия ключа в словаре (in)
```py
>>> mnoz1={'pen','book','pen','iPhone','table','book'}
>>> 'book' in mnoz1
True
>>> 'cap' in mnoz1
False
>>> dic1={'Saratov':145, 'Orel':56, 'Vologda':45}
>>> 'Vologda' in dic1
True
>>> 'Pskov' in dic1
False
>>> 56 in dic1.values()
True
>>> dct1={'Institut':['AVTI','IEE','IBB'],'Depart':['UII','PM','VMSS','MM'],'gruppa': ['A-01-15','A-02-15']}
>>> 'UII' in dct1['Depart']
True
>>> dct1['Depart'][1] == 'MM'
False
```
### 7.3 Создание больших логических выражений с использованием соединительных слов
```py
>>> a=17
>>> b=-6
>>> (a>=b) and ('book' in mnoz1) and not ('Pskov' in dic1)
True
>>> ('cap' in mnoz1) or not (a<b)
True
>>> ('Pskov' in dic1) or ('pen' in mnoz1) and ('Vologda' in dic1)
True
```
### 7.4 Проверка ссылок переменных на один и тот же объект (is)
```py
>>> w=v=10
>>> w is v
True
>>> w1=['A','B']
>>> v1=['A','B']
>>> w1 is v1
False
```
Оператор is проверяет, ссылаются ли объекты на один и тот же адрес в памяти. Переменные целочисленного типа были созданы в одну строку и имеют один и тот же адрес в памяти. Списки были созданы в разных строках, и адреса у них разные, т.е. они ссылаются на разные участки в памяти, поэтому is возвращает False.
## 8 Операции с объектами, выполняемые с помощью методов
### 8.1 Методы для работы со строками
```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(' у',' автоматического у')
'Микропроцессорная система автоматического управления'
>>> spis22=stroka.split(' ')
>>> spis22
['Микропроцессорная', 'система', 'управления']
stroka.upper()
'МИКРОПРОЦЕССОРНАЯ СИСТЕМА УПРАВЛЕНИЯ'
>>> stroka3=" ".join(spis22)
>>> stroka3
'Микропроцессорная система управления'
>>> stroka3.partition("с")
('Микропроце', 'с', 'сорная система управления')
>>> stroka3.rpartition("с")
('Микропроцессорная си', 'с', 'тема управления')
>>> strk1='Момент времени {}, значение = {}'
>>> strk1.format(1,89.7)
'Момент времени 1, значение = 89.7'
>>> strk2='Момент времени {1}, значение = {0}:{2}'
>>> strk2.format(36.7,2,'норма!')
'Момент времени 2, значение = 36.7:норма!'
>>> strk3='Момент времени {num}, значение = {znch}'
>>> strk3.format(znch=89.7,num=2)
'Момент времени 2, значение = 89.7'
```
### 8.2 Методы для работы со списками
```py
>>> spsk=['a', 21, -2, 'Maxim', 0]
>>> spsk.pop(2) # вывод элемента с указанным индексом и удаление его из списка
-2
>>> spsk
['a', 21, 'Maxim', 0]
>>> spsk.append('c') # добавляение переданного элемента в конец списка
>>> spsk
['a', 21, 'Maxim', 0, 'c']
>>> spsk.insert(2,'a') # добавление в список элемента в указанный индекс, сдвигая следующие элементы
>>> spsk
['a', 21, 'a', 'Maxim', 0, 'c']
>>> spsk.count('a') # вывод колличества вхождений в список указанного элемента
2
```
### 8.3 Методы для работы с кортежами
```py
>>> cor = (1, 'a', 'b', 0.05, 10+3j) # Создание кортежа
>>> cor.count(1) # Подсчет количества элементов по значению
1
>>> cor.index(0.05) # Поиск индекса первого вхождения
3
>>> cor.index('d')
Traceback (most recent call last):
File "<pyshell#172>", line 1, in <module>
cor.index('d')
ValueError: tuple.index(x): x not in tuple
```
### 8.3 Методы для работы со словарями и множествами
Методы словарей:
```py
>>> dct1
{'Institut': ['AVTI', 'IEE', 'IBB'], 'Depart': ['UII', 'PM', 'VMSS', 'MM'], 'gruppa': ['A-01-15', 'A-02-15']}
>>> new_dct1=dct1.copy() # Создается копия, но новые значения ссылаются на предыдущие
>>> new_dct1
{'Institut': ['AVTI', 'IEE', 'IBB'], 'Depart': ['UII', 'PM', 'VMSS', 'MM'], 'gruppa': ['A-01-15', 'A-02-15']}
>>> dct1.get('Depart') # Возвращение значения по ключу
['UII', 'PM', 'VMSS', 'MM']
>>> dct1.keys() # Возвращение объекта только из ключей
dict_keys(['Institut', 'Depart', 'gruppa'])
>>> dct1.values() # Возвращение объекта только из значений
dict_values([['AVTI', 'IEE', 'IBB'], ['UII', 'PM', 'VMSS', 'MM'], ['A-01-15', 'A-02-15']])
>>> new_dct1.clear() # Полное очищение списка
>>> new_dct1
{}
>>> dct1.pop('Depart') # Удаление ключа и возвращение значения
['UII', 'PM', 'VMSS', 'MM']
>>> dct1
{'Institut': ['AVTI', 'IEE', 'IBB'], 'gruppa': ['A-01-15', 'A-02-15']}
```
Методы множеств:
```py
>>> mnoz1={1, 'датчик', False, 256, 'двигатель'}
>>> mnoz1
{False, 256, 1, 'двигатель', 'датчик'}
>>> mnoz1.add(10+7j) # Добавление элемента
>>> mnoz1
{False, 256, 1, 'двигатель', 'датчик', (10+7j)}
>>> mnoz2=mnoz1.copy() # Создание копии
>>> mnoz2
{False, 256, 1, 'двигатель', 'датчик', (10+7j)}
>>> mnoz1.remove(1) # Удаление элемента по значению
>>> mnoz1
{False, 256, 'двигатель', 'датчик', (10+7j)}
>>> mnoz2.clear() # Очищение множества
>>> mnoz2
set()
>>> mnoz1.pop() # Удаление случайного элемента из множества
False
>>> mnoz1
{256, 'двигатель', 'датчик', (10+7j)}
>>> mnoz1.update({True, 'b'}) # Добавление элементов
>>> mnoz1
{256, True, 'b', 'двигатель', 'датчик', (10+7j)}
```

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

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

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

@@ -0,0 +1,60 @@
# Тест по модулю 1
Корнеев Максим, А-03-23
## Задание
1)Можно ли работать со средой без использования интерактивной оболочки IDLE?
2)Создайте объект-строку, содержащую текст данного предложения. Напишите инструкцию, доказывающую, что создан объект именно требуемого типа. Напишите инструкцию отображения списка атрибутов созданного объекта.
3)Напишите инструкцию, выделяющую из строки подстроку, содержащую только символы с нечетными номерами позиций. Отобразите получившийся объект. Напишите инструкцию, позволяющую определить число символов в подстроке.
4)Напишите инструкцию преобразования строки в кортеж. Отобразите получившийся объект. Подсчитайте число элементов полученного кортежа.
5)Напишите инструкцию, разделяющую строку на две подстроки, примерно одинаковой длины. Проверьте, входит ли контекст "дан" в первую и вторую подстроки
## Решение
1) Можно, можно использовать другие среды разработки.
2)
```py
>>> srtoka = 'Создайте объект-строку, содержащую текст данного предложения.'
>>> type(srtoka)
<class 'str'>
>>> dir(srtoka)
['__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']
```
3)
```py
>>> podstroka = srtoka[::2]
>>> print(podstroka)
Сзат бетсрк,сдрау ес анг рдоеи.
>>> len(podstroka)
31
```
4)
```py
>>> kortz = tuple(srtoka)
>>> kortz
('С', 'о', 'з', 'д', 'а', 'й', 'т', 'е', ' ', 'о', 'б', 'ъ', 'е', 'к', 'т', '-', 'с', 'т', 'р', 'о', 'к', 'у', ',', ' ', 'с', 'о', 'д', 'е', 'р', 'ж', 'а', 'щ', 'у', 'ю', ' ', 'т', 'е', 'к', 'с', 'т', ' ', 'д', 'а', 'н', 'н', 'о', 'г', 'о', ' ', 'п', 'р', 'е', 'д', 'л', 'о', 'ж', 'е', 'н', 'и', 'я', '.')
>>> len(kortz)
61
```
5)
```py
>>> a = srtoka[:len(srtoka)//2
b = srtoka[len(srtoka)//2:]
>>> a
'Создайте объект-строку, содерж'
>>> b
'ащую текст данного предложения.'
>>> 'дан' in a
False
>>> 'дан' in b
True
```

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

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

После

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

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

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

После

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

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

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

После

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

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

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

После

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

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

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

После

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

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

@@ -0,0 +1,261 @@
# Отчет по теме 4
Корнеев Максим, А-03-23
## 1 Стандартные функции
### 1.1 Функция round
```py
>>> a = round(123.456,1)
>>> a
123.5
>>> type(a)
<class 'float'>
>>> b = round(123.456,0)
>>> b
123.0
>>> type(b)
<class 'float'>
>>> c = round(123.456)
>>> c
123
>>> type(c)
<class 'int'>
```
### 1.2 Функция range
```py
>>> gg=range(76,123,9)
>>> list(gg)
[76, 85, 94, 103, 112, 121]
>>> list(range(23))
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22]
```
Список со значениями от 0 до 22 с шагом 1
### 1.3 Функция zip
```py
>>> qq = ['Корнеев','Гордиевских','Виноградов','Веретельников']
>>> ff=zip(gg,qq)
>>> tuple(ff)
((76, 'Корнеев'), (85, 'Гордиевских'), (94, 'Виноградов'), (103, 'Веретельников'))
>>> ff[0]
Traceback (most recent call last):
File "<pyshell#25>", line 1, in <module>
ff[0]
TypeError: 'zip' object is not subscriptable
```
### 1.4 Функция eval
```py
>>> fff=float(input('коэффициент усиления=')); dan=eval('5*fff-156')
коэффициент усиления=0.75
>>> dan
-152.25
```
### 1.5 Функция exec
```py
>>> exec(input('введите инструкции:'))
введите инструкции:perem=-123.456;gg=round(abs(perem)+98,3)
>>> gg
221.456
```
### 1.6 Некоторые другие функции
```py
>>> abs(-123.8)
123.8
>>> pow(3,4,5)
1
>>> max([2,3,8,0,4,19])
19
>>> min([2,3,8,0,4,19])
0
>>> sum([2,3,8,0,4,19])
36
>>> divmod(5,2)
(2, 1)
>>> len([2,3,8,0,4,19])
6
>>> list(map(str, [1,2,3]))
['1', '2', '3']
```
## 2 Функции из стандартного модуля math
```py
>>> 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']
>>> math.factorial(5)
120
>>> math.sin(0)
0.0
>>> math.acos(1)
0.0
>>> math.degrees(1)
57.29577951308232
>>> math.radians(57.29577951308232)
1.0
>>> math.exp(1)
2.718281828459045
>>> math.log(10,10)
1.0
>>> math.log10(100)
2.0
>>> math.sqrt(4)
2.0
>>> math.ceil(1.1)
2
>>> math.floor(2.9)
2
>>> math.pi
3.141592653589793
>>> math.sin((2*math.pi)/(7+math.exp(0.23)))
0.6895048136223224
```
## 3 Функции из модуля cmath
```py
>>> 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)
>>> cmath.phase(1-0.5j)
-0.4636476090008061
```
## 4 Стандартный модуль random
```py
>>> 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()
>>> random.random()
0.09784937641299252
>>> random.uniform(0,1)
0.7586998848425669
>>> random.randint(1,10)
5
>>> random.gauss(1,1)
1.4114397784493207
>>> random.choice([0,3,4,12])
3
>>> ss=[0,3,4,12]
>>> random.shuffle(ss)
>>> ss
[12, 4, 3, 0]
>>> random.sample(ss,2)
[3, 12]
>>> random.betavariate(1,1)
0.6955346411563408
>>> random.gammavariate(1,1)
1.2069826359988067
>>> spisok = [random.uniform(0, 1), random.gauss(0, 1), random.betavariate(1, 1), random.gammavariate(1, 1)]
>>> spisok
[0.976567712925113, 0.9183429804998575, 0.5079068978092008, 1.7131944904872685]
```
## 5 Функции из модуля time
```py
>>> 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']
>>> c1=time.time()
>>> c1
1760129676.087689
>>> c2=time.time()-c1
>>> c2
0.29564905166625977
>>> dat=time.gmtime()
>>> dat
time.struct_time(tm_year=2025, tm_mon=10, tm_mday=10, tm_hour=20, tm_min=55, tm_sec=16, tm_wday=4, tm_yday=283, tm_isdst=0)
>>> dat.tm_mon
10
>>> dat.tm_year
2025
>>> dat.tm_hour
20
>>> dat.tm_mday
10
>>> time.localtime()
time.struct_time(tm_year=2025, tm_mon=10, tm_mday=10, tm_hour=23, tm_min=57, tm_sec=26, tm_wday=4, tm_yday=283, tm_isdst=0)
>>> time.asctime(dat)
'Fri Oct 10 20:55:16 2025'
>>> time.ctime()
'Fri Oct 10 23:58:50 2025'
>>> time.sleep(1) # Программа прервала свою работу на 1 секунду
>>> time.mktime(dat)
1760118916.0
>>> time.localtime(c1)
time.struct_time(tm_year=2025, tm_mon=10, tm_mday=10, tm_hour=23, tm_min=54, tm_sec=36, tm_wday=4, tm_yday=283, tm_isdst=0)
```
## 6 Графические функции
```py
>>> x=list(range(-3,55,4))
>>> t=list(range(15))
>>> pylab.plot(t,x)
>>> pylab.title('Первый график')
>>> pylab.xlabel('время')
>>> pylab.ylabel('сигнал')
>>> pylab.show()
```
Первый график:
![Первый график](Ris1.png)
```py
>>> X1=[12,6,8,10,7]
>>> X2=[5,7,9,11,13]
>>> pylab.plot(X1)
>>> pylab.plot(X2)
>>> pylab.show()
```
Второй график:
![Второй график](Ris5.png)
```py
>>> region=['Центр','Урал','Сибирь','Юг']
>>> naselen=[65,12,23,17]
>>> pylab.pie(naselen,labels=region)
>>> pylab.show()
```
Третий график:
![Третий график](Ris2.png)
```py
>>> a = [1, 2, 5, 1, 5, 3, 2, 3, 1, 2, 1, 1, 2]
>>> pylab.hist(a)
>>> pylab.show()
```
Четвертый график:
![Четвертый график](Ris3.png)
```py
>>> pylab.bar(region, naselen)
>>> pylab.show()
```
Пятый график:
![Пятый график](Ris4.png)
## 7 Статистический модуль statistic
```py
>>> 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']
>>> statistics.median(naselen)
20.0
>>> statistics.variance(naselen)
588.25
>>> x = [1,2,3,4,5]
>>> y = [3,4,6,8,13]
>>> statistics.correlation(x,y)
0.9577042613611466
>>> k, b = statistics.linear_regression(x,y)
>>> k; b
2.4
-0.39999999999999947
```

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

@@ -0,0 +1,45 @@
# Общее контрольное задание по теме 4
Корнеев Максим, А-03-23
## Задание
Реализовать, записать в текстовый файл и проанализировать результаты последовательности инструкций, выполняющих следующие действия:
* Напишите и исполните единое выражение, реализующее последовательное выполнение следующих операций: вычисление фазы комплексного числа 0.2+0.8j, округление результата до двух знаков после запятой, умножение полученного значения на 20, получение кортежа из двух значений: округленное вниз значение от деления результата на 3 и остатка от этого деления.
* Создайте объект класса struct_time с временными параметрами для текущего московского времени. Создайте строку с текущим часом и минутами.
* Создайте список с элементами – названиями дней недели. Сделайте случайную выборку из этого списка с тремя днями недели.
* Напишите инструкцию случайного выбора числа из последовательности целых чисел от 14 до 32 с шагом 3.
* Сгенерируйте нормально распределенное число N с математическим ожиданием 15 и стандартным отклонением 4 и округлите его до целого значения. Создайте список с N элементами – случайно выбранными буквами латинского алфавита.
* Напишите инструкцию для определения временного интервала в минутах, прошедшего с момента предыдущего (из п.2) определения временных параметров.
## Решение
```py
>>> import cmath
>>> import math
>>> import time
>>> import random
>>> import string
>>> divmod(round(cmath.phase(0.2+0.8j), 2)*20, 3)
(8.0, 2.6000000000000014)
>>> dat = time.localtime()
>>> h_m = f'Текущий час: {dat.tm_hour}; Текущая минута: {dat.tm_min}'
>>> h_m
'Текущий час: 2; Текущая минута: 32'
>>> weekday = ['Понедельник','Вторник','Среда','Четверг','Пятница','Суббота','Воскресенье']
>>> weekday_selection = random.sample(weekday,3)
>>> weekday_selection
['Среда', 'Вторник', 'Воскресенье']
>>> seq = range(14,33,3)
>>> random.choice(seq)
26
>>> N = round(random.gauss(15,4))
>>> letters = random.sample(string.ascii_lowercase,N)
>>> letters
['a', 'd', 'k', 'h', 'u', 'y', 'm', 'o', 'w', 'n', 'e', 'p']
>>> c1 = 1760129676.087689
>>> c2=time.time()-c1
>>> c2
9507.228925943375
```

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

@@ -0,0 +1,20 @@
# Индивидуальное контрольное задание по теме 4
Корнеев Максим, А-03-23
## Задание
Напишите инструкцию, позволяющую определить и записать в переменную календарные характеристики (год, месяц, день) момента, отстоящего на 7000000 сек. вперед от текущего времени. Выведите эти сведения в виде строки вида: «Это будет ХХ-ХХ-ХХХХ». Создайте множество с 5 случайными целыми элементами, значения которых находятся в диапазоне значений от 1 до 12.
## Решение
```py
import time
import random
c1 = time.localtime()
c2 = time.mktime(c1) + 7000000
c3 = time.localtime(c2)
print(f'Это будет {c3.tm_mday}-{c3.tm_mon}-{c3.tm_year}')
mnoz = {random.randint(1,12) for _ in range(5)}
print(mnoz)
```

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

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

После

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

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

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

После

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

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

@@ -0,0 +1,237 @@
# Отчет по теме 5
Корнеев Максим, А-03-23
## 1 Управляющая инструкция if
```py
>>> porog, rashod1, rashod2 = 5, 7, 4
>>> if rashod1>=porog:
>>> dohod=12
>>> elif rashod2==porog:
>>> dohod=0
>>> else:
>>> dohod=-8
>>> dohod
12
>>> if rashod1>=3 and rashod2==4:
>>> dohod=rashod1
>>> if rashod2==porog or rashod1<rashod2:
>>> dohod=porog
>>> dohod
7
>>> if porog==3:
>>> dohod=1
>>> elif porog==4:
>>> dohod=2
>>> elif porog==5:
>>> dohod=3
>>> else:
>>> dohod=0
>>> dohod
3
>>> dohod=2 if porog>=4 else 0
>>> dohod
2
>>> if porog>=5 : rashod1=6; rashod2=0
>>> rashod1
6
>>> rashod2
0
```
## 2 Управляющая инструкция for
```py
>>> temperatura=5
>>> for i in range(3,18,3):
>>> temperatura+=i
>>> temperatura
50
>>> 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]
>>> 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)
451
>>> sps5
[53, 33, 67, 78, 25, 68, 20, 29, 42, 36]
>>> for i in range(10):
>>> sps5.append(rn.randint(1,100))
>>> ss=sum(sps5)
>>> if ss>500: break
>>> else:
>>> print(ss)
>>> sps5
[53, 33, 67, 78, 25, 68, 20, 29, 42, 36, 10, 78]
>>> stroka='Это – автоматизированная система'
>>> stroka1=""
>>> for ss in stroka:
>>> stroka1+=" "+ss
>>> stroka1
' Э т о – а в т о м а т и з и р о в а н н а я с и с т е м а'
>>> import math
>>> sps2=[math.sin(i*math.pi/5+2) for i in range(100)]
>>> import pylab
>>> t=list(range(100))
>>> pylab.plot(t, sps2)
[<matplotlib.lines.Line2D object at 0x108a7a990>]
>>> pylab.show()
```
График для spis2:
![график](Figure_1.png)
## 3 Управляющая инструкция while
### 3.1 Цикл со счетчиком
```py
>>> rashod=300
>>> while rashod:
>>> print("Расход=",rashod)
>>> rashod-=50
Расход= 300
Расход= 250
Расход= 200
Расход= 150
Расход= 100
Расход= 50
```
### 3.2 Пример с символьной строкой
```py
>>> 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
>>> t=list(range(len(sps2)))
>>> pylab.plot(t, sps2)
[<matplotlib.lines.Line2D object at 0x10b903ed0>]
>>> pylab.show()
```
График значений r:
![график](Figure_2.png)
### 3.3 Определение, является ли число простым
```py
>>> chislo=list(range(250,301))
>>> for i in chislo:
>>> kandidat =i // 2
>>> while kandidat > 1:
>>> if i%kandidat == 0:
>>> print(i, ' имеет множитель ', kandidat)
>>> break
>>> kandidat -= 1
>>> else:
>>> print(i, ' является простым!')
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
```

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

@@ -0,0 +1,89 @@
# Общее контрольное задание по теме 5
Корнеев Максим, А-03-23
## Задание
Реализовать, записать в текстовый файл программы и результаты их выполнения при решении следующих задач:
* Для заданной символьной строки с англоязычным текстом (его можно заимствовать из помощи) определите порядковый номер каждой буквы в английском алфавите.
* Создайте список со словами из задания данного пункта. Для этого списка – определите, есть ли в нем некоторое заданное значение, и выведите соответствующее сообщение: либо о нахождении элемента, либо о его отсутствии в списке (проверить как с имеющимся, так и с отсутствующим словом).
* Создайте список студентов вашей группы (3-4 фамилии) и список их средних баллов в летней сессии – в порядке перечисления студентов в первом списке. Создайте еще 2 аналогичных списка для тех же студентов, но в другом порядке, по зимней сессии. Напишите инструкции, позволяющие по указанной (запрошенной и введенной) фамилии студента вывести его средние баллы по двум сессиям.
## Решение
1)
```py
>>> import string
>>> stroka='Help on built-in function print in module builtin'
>>> for i in stroka.lower():
>>> num = string.ascii_lowercase.find(i)
>>> if num >= 0:
>>> print(f'Порядковый номер буквы {i} в англйском алфавите: {num+1}')
Порядковый номер буквы h в англйском алфавите: 8
Порядковый номер буквы e в англйском алфавите: 5
Порядковый номер буквы l в англйском алфавите: 12
Порядковый номер буквы p в англйском алфавите: 16
Порядковый номер буквы o в англйском алфавите: 15
Порядковый номер буквы n в англйском алфавите: 14
Порядковый номер буквы b в англйском алфавите: 2
Порядковый номер буквы u в англйском алфавите: 21
Порядковый номер буквы i в англйском алфавите: 9
Порядковый номер буквы l в англйском алфавите: 12
Порядковый номер буквы t в англйском алфавите: 20
Порядковый номер буквы i в англйском алфавите: 9
Порядковый номер буквы n в англйском алфавите: 14
Порядковый номер буквы f в англйском алфавите: 6
Порядковый номер буквы u в англйском алфавите: 21
Порядковый номер буквы n в англйском алфавите: 14
Порядковый номер буквы c в англйском алфавите: 3
Порядковый номер буквы t в англйском алфавите: 20
Порядковый номер буквы i в англйском алфавите: 9
Порядковый номер буквы o в англйском алфавите: 15
Порядковый номер буквы n в англйском алфавите: 14
Порядковый номер буквы p в англйском алфавите: 16
Порядковый номер буквы r в англйском алфавите: 18
Порядковый номер буквы i в англйском алфавите: 9
Порядковый номер буквы n в англйском алфавите: 14
Порядковый номер буквы t в англйском алфавите: 20
Порядковый номер буквы i в англйском алфавите: 9
Порядковый номер буквы n в англйском алфавите: 14
Порядковый номер буквы m в англйском алфавите: 13
Порядковый номер буквы o в англйском алфавите: 15
Порядковый номер буквы d в англйском алфавите: 4
Порядковый номер буквы u в англйском алфавите: 21
Порядковый номер буквы l в англйском алфавите: 12
Порядковый номер буквы e в англйском алфавите: 5
Порядковый номер буквы b в англйском алфавите: 2
Порядковый номер буквы u в англйском алфавите: 21
Порядковый номер буквы i в англйском алфавите: 9
Порядковый номер буквы l в англйском алфавите: 12
Порядковый номер буквы t в англйском алфавите: 20
Порядковый номер буквы i в англйском алфавите: 9
Порядковый номер буквы n в англйском алфавите: 14
```
2)
```py
>>> value = 'Для'
>>> if value in words: print(f'{value} is in the list')
>>> else: print(f'{value} is not in the list')
Для is in the list
>>> value = 'Hello'
>>> if value in words: print(f'{value} is in the list')
>>> else: print(f'{value} is not in the list')
Hello is not in the list
```
3)
```py
>>> stud_summer = ['Корнеев', 'Гордевских', 'Немецкий']
>>> marks_summer = [3.5, 4.9, 3.1]
>>> stud_winter = ['Гордевских', 'Немецкий', 'Корнеев']
>>> marks_winter = [3.0, 4.3, 5.0]
>>> name = input('Введите фамилию студента: ')
>>> print(f'Средний балл за летнюю сессию {name}: ', marks_summer[stud_summer.index(name)])
>>> print(f'Средний балл за зимнюю сессию {name}: ', marks_winter[stud_winter.index(name)])
Введите фамилию студента: Корнеев
Средний балл за летнюю сессию Корнеев: 3.5
Средний балл за зимнюю сессию Корнеев: 5.0
```

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

@@ -0,0 +1,34 @@
# Индивидуальное контрольное задание по теме 5
Корнеев Максим, А-03-23
## Задание
Создайте символьную строку, содержащую 50 случайно выбранных букв из кириллицы и латиницы. Разделите строку на две: в первую включите символы кириллицы, во вторую - латиницы в том порядке, в каком они встречались в исходной строке. Подсчитайте и отобразите число символов в каждой из трех строк.
## Решение
```py
>>> import string
>>> import random
>>> a = string.ascii_lowercase
>>> b = 'абвгдеёжхийклнмопрстуфхцчшщъыьэюя'
>>> c = a + b
>>> c = random.sample(c,50)
>>> str_1=''
>>> str_2=''
>>> for i in c:
>>> if i in a:
>>> str_1 = str_1 + i
>>> else:
>>> str_2 = str_2 + i
>>> str_1
'uljtovcsawqhnxbdzkmrgepy'
>>> str_2
'ехчкюдйёэлоъбнвстхмиущцржы'
>>> len(str_1)
24
>>> len(str_2)
26
```

1
TEMA6/Stroka.txt Обычный файл
Просмотреть файл

@@ -0,0 +1 @@
запись строки в файл

Двоичные данные
TEMA6/binfile.bin Обычный файл

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

10
TEMA6/qwe.txt Обычный файл
Просмотреть файл

@@ -0,0 +1,10 @@
(-10+8j)
(-3+11j)
(-10+24j)
(15-4j)
(2-6j)
(19+21j)
(19+2j)
(-4+9j)
(30+25j)
(28+13j)

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

@@ -0,0 +1,293 @@
# Отчёт по теме 6
Корнеев Максим А-03-23
## 1 вывод данных на экран дисплея
### 1.1 Вывод в командной строке
Так назыаваемый "эхо-вывод". Как говорил Лазарев: "Гадость! Гадость! Так нельзя"
```py
>>> stroka='Автоматизированная система управления'
>>> stroka
'Автоматизированная система управления'
```
### 1.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("Здесь может выводиться",
"Большой текст",
"Занимающий несколько строк")
Здесь может выводиться Большой текст Занимающий несколько строк
```
### 1.3 Вывод с использованием метода write объекта sys.stdout
```py
>>> sys.stdout.write('Функция write')
Функция write13
>>> sys.stdout.write('Функция write\n')
Функция write
14
```
## 2 Ввод данных с клавиатуры
```py
>>> psw=input('Введите пароль:')
Введите пароль:a
>>> psw
'a'
>>> 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
```
## 3 Ввод-вывод при работе с файлами
### 3.1 Функции для работы с путем к файлу
```py
>>> import os
>>> korneev = os.getcwd()
>>> print(korneev)
L:\III курс\А-3-23\Korneev
>>> os.mkdir('a')
>>> os.rmdir('a')
>>> os.listdir()
['Lab Raboty IT', 'poas', 'shemotehnika', 'vichmetod']
>>> fil=os.path.abspath("text.txt")
>>> fil
'L:\\III курс\\А-3-23\\Korneev\\text.txt'
>>> drkt=os.path.dirname(fil)
>>> drkt
'L:\\III курс\\А-3-23\\Korneev'
>>> os.path.basename(fil)
'text.txt'
>>> os.path.split(fil)
('L:\\III курс\\А-3-23\\Korneev', 'text.txt')
>>> os.path.exists(fil)
True
>>> os.path.exists('L:\\III курс\\А-3-23\\Korneev\\hello.txt')
False
>>> os.path.isfile(fil)
True
```
### 3.2 Открытие файла для записи или чтения данных
```py
>>> fp=open('zapis1.txt','w')
>>> type()
<class '_io.TextIOWrapper'>
>>> 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()
```
### 3.3 Запись информации в файл с помощью метода 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()
```
Содержимое файла приведено ниже
```txt
[1, 2, 3, 4]
[5, 6, 7, 8]
[9, 10, 11, 12]
```
Запись списка в файл
Попытка 1
```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)
>>> fp3.close()
```
Содержимое текстового файла:
```txt
Иванов И. 1Петров П. 2Сидоров С. 3
```
Попытка 2
```py
>>> gh=open('zapis5.txt','w')
>>> for r in sps3:
>>> gh.write(r[0]+' '+str(r[1])+'\n')
>>> gh.close()
```
Содержимое текстового файла:
```txt
Иванов И. 1
Петров П. 2
Сидоров С. 3
```
### 3.4 Первый способ чтения информации из текстового файла
```py
>>> gh.close()
>>> 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']
>>> sps1=[]
>>> fp=open('zapis3.txt')
>>> for stroka in fp:
>>> stroka=stroka.rstrip('\n')
>>> stroka=stroka.replace('[','')
>>> stroka=stroka.replace(']','')
>>> stroka=stroka.replace(' ','')
>>> sps1=sps1 + list(map(int, stroka.split(',')))
>>> fp.close()
>>> sps1
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]
```
### 3.5 Чтение информации из файла с помощью методов read и readline
```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'
>>> fp=open('zapis3.txt')
>>> stroka3=fp.readline()
>>> stroka4=fp.readlines()
>>> fp.close()
>>> stroka3
'[1, 2, 3, 4]\n'
>>> stroka4
['[5, 6, 7, 8]\n', '[9, 10, 11, 12]\n']
```
### 3.6 Ввод-вывод объектов с использованием функций из модуля pickle
```py
>>> import pickle
>>> mnoz1={'pen','book','pen','iPhone','table','book'}
>>> fp=open('zapis6.mnz','wb')
>>> pickle.dump(mnoz1,fp)
>>> fp.close()
>>> fp.close()
>>> fp=open('zapis6.mnz','rb')
>>> mnoz2=pickle.load(fp)
>>> fp.close()
>>> print(mnoz2)
{'iPhone', 'pen', 'table', 'book'}
>>> mnoz1 == mnoz2
True
>>> 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
{'iPhone', 'pen', 'table', 'book'}
>>> mnoz1
{'iPhone', 'pen', 'table', 'book'}
>>> obj2
[['Иванов И.', 1], ['Петров П.', 2], ['Сидоров С.', 3]]
>>> sps3
[['Иванов И.', 1], ['Петров П.', 2], ['Сидоров С.', 3]]
>>> mnoz1 == obj1
True
>>> sps3 == obj2
True
```
## 4 Перенаправление потоков ввода и вывода данных
```py
>>> import sys
>>> vr_out=sys.stdout
>>> fc=open('Stroka.txt','w')
>>> sys.stdout=fc
>>> print('запись строки в файл')
>>> sys.stdout=vr_out
>>> print('запись строки на экран')
запись строки на экран
>>> fc.close()
```
Содержимое файла
```txt
запись строки в файл
```
```py
>>> tmp_in = sys.stdin
>>> fd = open("Stroka.txt", "r")
>>> sys.stdin = fd
>>> sys.stdin
<_io.TextIOWrapper name='Stroka.txt' mode='r' encoding='cp1251'>
>>> while True:
>>> try:
>>> line = input ()
>>> print(line)
>>> except EOFError:
>>> break
запись строки в файл
>>> fd.close()
>>> sys.stdin=tmp_in
```

26
TEMA6/task.py Обычный файл
Просмотреть файл

@@ -0,0 +1,26 @@
import random
import pickle
kort = tuple(random.randint(6,56) for _ in range(125))
spis=['Корнеев', 'Немецкий', 'Гордиевских', 'Огарков', 'Васильев']
fp = open('binfile.bin', 'wb')
pickle.dump(kort, fp)
pickle.dump(spis, fp)
fp.close()
fp = open('binfile.bin', 'rb')
obj1=pickle.load(fp)
obj2=pickle.load(fp)
fp.close()
if obj1 == kort:
print('Объекты совпадают')
else: print('Объекты не совпадают')
if obj2 == spis:
print('Объекты совпадают')
else: print('Объекты не совпадают')
for i in range(0, len(kort), 5):
exec(f'plist{i//5} = list(kort[{i}:{i+5}]);print(plist{i//5})')

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

@@ -0,0 +1,51 @@
# Тест по модулю 2
Корнеев Максим, А-03-23
## Задание
1)Создайте список с 10 элементами - комплексными числами, у которых вещественная и мнимая части - случайные целые числа в диапазоне значений [-10, 30].
2)Запросите у пользователя имя текстового файла для вывода.
3)Запишите список в этот файл по одному числу на строке.
4)Удалите список из памяти
5)Прочитайте содержимое файла в новый список
## Решение
```py
import random
spis = [complex(random.randint(-10,30), random.randint(-10,30)) for _ in range(10)]
name = input('Input file name: ')
Input file name: qwe.txt
fp = open(name, 'w')
for i in range(10):
fp.write(str(spis[i]) + '\n')
fp.close()
del spis
fp = open(name, 'r')
new_spis = []
for i in range(10):
new_spis.append(complex(fp.readline().rstrip('\n')))
fp.close()
new_spis
[(-10+8j), (-3+11j), (-10+24j), (15-4j), (2-6j), (19+21j), (19+2j), (-4+9j), (30+25j), (28+13j)]
```
Содержимое файла:
```txt
(-10+8j)
(-3+11j)
(-10+24j)
(15-4j)
(2-6j)
(19+21j)
(19+2j)
(-4+9j)
(30+25j)
(28+13j)
```

Двоичные данные
TEMA6/zapis2.bin Обычный файл

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

3
TEMA6/zapis3.txt Обычный файл
Просмотреть файл

@@ -0,0 +1,3 @@
[1, 2, 3, 4]
[5, 6, 7, 8]
[9, 10, 11, 12]

1
TEMA6/zapis4.txt Обычный файл
Просмотреть файл

@@ -0,0 +1 @@
Иванов И. 1Петров П. 2Сидоров С. 3

3
TEMA6/zapis5.txt Обычный файл
Просмотреть файл

@@ -0,0 +1,3 @@
Иванов И. 1
Петров П. 2
Сидоров С. 3

Двоичные данные
TEMA6/zapis6.mnz Обычный файл

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

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

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

После

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

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

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

После

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

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

@@ -0,0 +1,411 @@
# Отчет по теме 7
Корнеев Максим, А-03-23
## 2 Создание пользовательской функции.
### 2.1 Первый пример: функция – без аргументов.
```py
>>> def uspeh():
... """Подтверждение успеха операции"""
... print('Выполнено успешно!')
>>> uspeh()
Выполнено успешно!
>>> dir()
['__annotations__', '__builtins__', '__doc__', '__loader__', '__name__', '__package__', '__spec__', 'uspeh']
>>> help(uspeh)
Help on function uspeh in module __main__:
>>> uspeh()
Подтверждение успеха операции
```
### 2.2 Пример функции с аргументами.
```py
>>> def sravnenie(a,b):
... """Сравнение a и b"""
... if a>b:
... print(a,' больше ',b)
... elif a<b:
... print(a, ' меньше ',b)
... else:
... print(a, ' равно ',b)
>>> n,m=16,5;sravnenie(n,m)
16 больше 5
>>> n,m='a','5';sravnenie(n,m)
a больше 5
```
### 2.3 Пример функции, содержащей return.
```py
>>> def logistfun(b,a):
... """Вычисление логистической функции"""
... import math
... return a/(1+math.exp(-b))
>>> v,w=1,0.7;z=logistfun(w,v)
>>> z
0.6681877721681662
```
### 2.4 Сложение для разных типов аргументов
```py
>>> def slozh(a1,a2,a3,a4):
... """ Сложение значений четырех аргументов"""
... return a1+a2+a3+a4
>>> slozh(1,2,3,4)
10
>>> slozh('1','2','3','4')
'1234'
>>> b1=[1,2];b2=[-1,-2];b3=[0,2];b4=[-1,-1]
>>> q=slozh(b1,b2,b3,b4)
>>> q
[1, 2, -1, -2, 0, 2, -1, -1]
>>> b1=(1,2);b2=(-1,-2);b3=(0,2);b4=(-1,-1)
>>> q=slozh(b1,b2,b3,b4)
>>> q
(1, 2, -1, -2, 0, 2, -1, -1)
>>> b1={1,2};b2={-1,-2};b3={0,2};b4={-1,-1}
>>> q=slozh(b1,b2,b3,b4)
Traceback (most recent call last):
File "<pyshell#25>", line 1, in <module>
q=slozh(b1,b2,b3,b4)
File "<pyshell#15>", line 3, in slozh
return a1+a2+a3+a4
TypeError: unsupported operand type(s) for +: 'set' and 'set'
>>> b1={'a':1,'b':2};b2={'a':-1,'b':-2};b3={'a':0,'b':2};b4={'a':-1,'b':-1}
>>> q=slozh(b1,b2,b3,b4)
Traceback (most recent call last):
File "<pyshell#29>", line 1, in <module>
q=slozh(b1,b2,b3,b4)
File "<pyshell#15>", line 3, in slozh
return a1+a2+a3+a4
TypeError: unsupported operand type(s) for +: 'dict' and 'dict'
```
### 2.4 Функция, реализующая модель некоторого устройства, на вход которого в текущий момент поступает сигнал х, на выходе получается сигнал y:
```py
>>> def inerz(x,T,ypred):
... """ Модель устройства с памятью:
... x- текущее значение вх.сигнала,
... T -постоянная времени,
... ypred - предыдущее значение выхода устройства"""
... y=(x+T*ypred)/(T+1)
... return y
>>> sps=[0]+[1]*100
>>> spsy=[]
>>> TT=20
>>> yy=0
>>> for xx in sps:
>>> yy=inerz(xx,TT,yy)
>>> spsy.append(yy)
>>> arr = [i for i in range(101)]
>>> plt.plot(arr, spsy)
[<matplotlib.lines.Line2D object at 0x12016c550>]
>>> plt.show()
```
![график](Figure_1.png)
## 3 Функции как объекты.
### 3.1 Получение списка атрибутов объекта-функции.
```py
>>> dir(inerz)
['__annotations__', '__builtins__', '__call__', '__class__', '__closure__', '__code__', '__defaults__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__get__', '__getattribute__', '__getstate__', '__globals__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__kwdefaults__', '__le__', '__lt__', '__module__', '__name__', '__ne__', '__new__', '__qualname__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__type_params__']
>>> inerz.__doc__
'Модель устройства с памятью:\nx- текущее значение вх.сигнала,\n T -постоянная времени,\n ypred - предыдущее значение выхода устройства'
>>> help(inerz)
Help on function inerz in module __main__:
inerz(x, T, ypred)
Модель устройства с памятью:
x- текущее значение вх.сигнала,
T -постоянная времени,
ypred - предыдущее значение выхода устройства
```
### 3.2 Сохранение ссылки на объект-функцию в другой переменной.
```py
>>> fnkt=sravnenie
>>> v=16
>>> fnkt(v,23)
16 меньше 23
```
### 3.3 Возможность альтернативного определения функции в программе.
```py
>>> typ_fun=8
>>> if typ_fun==1:
... def func():
... print('Функция 1')
>>> else:
... def func():
... print('Функция 2')
>>> func()
Функция 2
```
## 4 Аргументы функции.
### 4.1 Изучите возможность использования функции в качестве аргумента другой функции
```py
>>> def fun_arg(fff,a,b,c):
... """fff-имя функции, используемой
... в качестве аргумента функции fun_arg"""
... return a+fff(c,b)
>>> zz=fun_arg(logistfun,-3,1,0.7)
>>> zz
-2.3318122278318336
```
### 4.2 Обязательные и необязательные аргументы.
```py
>>> def logistfun(a,b=1): #Аргумент b – необязательный; значение по умолчанию=1
... """Вычисление логистической функции"""
... import math
... return b/(1+math.exp(-a))
>>> logistfun(0.7)
0.6681877721681662
>>> logistfun(0.7,2)
1.3363755443363323
>>> logistfun(b=0.5,a=0.8)
0.34498724056380625
```
### 4.3 Пример со значениями аргументов функции, содержащимися в списке или кортеже.
```py
>>> b1=[1,2];b2=[-1,-2];b3=[0,2];b4=[-1,-1]
>>> b1234=[b1,b2,b3,b4]
>>> qq=slozh(*b1234)
>>> qq
[1, 2, -1, -2, 0, 2, -1, -1]
```
### 4.4 Пример со значениями аргументов функции, содержащимися в словаре
```py
>>> dic4={"a1":1,"a2":2,"a3":3,"a4":4}
>>> qqq=slozh(**dic4)
>>> qqq
10
```
### 4.5 Смешанные ссылки
```py
>>> e1=(-1,6);dd2={'a3':3,'a4':9}
>>> qqqq=slozh(*e1,**dd2)
```
### 4.6 Переменное число аргументов у функции.
```py
>>> def func4(*kort7):
... """Произвольное число аргументов в составе кортежа"""
... smm=0
... for elt in kort7:
... smm+=elt
... return smm
>>> func4(-1,2)
1
>>> func4(-1,2,0,3,6)
10
```
### 4.7 Комбинация аргументов
```py
>>> def func4(a,b=7,*kort7): #Аргументы: a-позиционный, b- по умолчанию + кортеж
... """Кортеж - сборка аргументов - должен быть последним!"""
... smm=0
... for elt in kort7:
... smm+=elt
... return a*smm+b
>>> func4(-1,2,0,3,6)
-7
```
### 4.8 Изменение значений объектов, используемых в качестве аргументов функции.
```py
>>> a=90
>>> def func3(b):
b=5*b+67
>>> func3(a)
>>> a
90
>>> sps1=[1,2,3,4]
>>> def func2(sps):
sps[1]=99
>>> func2(sps1)
>>> print(sps1)
[1, 99, 3, 4]
>>> kort=(1,2,3,4)
>>> func2(kort)
Traceback (most recent call last):
File "<pyshell#109>", line 1, in <module>
func2(kort)
File "<pyshell#105>", line 2, in func2
sps[1]=99
TypeError: 'tuple' object does not support item assignment
```
## 5 Специальные типы пользовательских функций
### 5.1 Анонимные функции.
```py
>>> anfun1=lambda: 1.5+math.log10(17.23)
>>> anfun1()
2.7362852774480286
>>> anfun2=lambda a,b : a+math.log10(b)
>>> anfun2(17,234)
19.369215857410143
>>> anfun3=lambda a,b=234: a+math.log10(b)
>>> anfun3(100)
102.36921585741014
```
### 5.2 Функции-генераторы.
```py
>>> def func5(diap,shag):
""" Итератор, возвращающий значения
из диапазона от 1 до diap с шагом shag"""
for j in range(1,diap+1,shag):
yield j
>>> for mm in func5(7,3):
>>> print(mm)
1
4
7
>>> alp=func5(7,3)
>>> print(alp.__next__())
1
>>> print(alp.__next__())
4
>>> print(alp.__next__())
7
>>> print(alp.__next__())
Traceback (most recent call last):
File "<pyshell#128>", line 1, in <module>
print(alp.__next__())
StopIteration
```
## 6 Локализация объектов в функциях.
### 6.1 Примеры на локализацию объектов.
```py
>>> glb=10
>>> def func7(arg):
loc1=15
glb=8
return loc1*arg
>>> res=func7(glb)
>>> def func8(arg):
loc1=15
print(glb)
glb=8
return loc1*arg
>>> res=func8(glb)
Traceback (most recent call last):
File "<pyshell#136>", line 1, in <module>
res=func8(glb)
File "<pyshell#135>", line 3, in func8
print(glb)
UnboundLocalError: cannot access local variable 'glb' where it is not associated with a value
>>> glb=11
>>> def func7(arg):
loc1=15
global glb
print(glb)
glb=8
return loc1*arg
>>> res=func7(glb)
11
>>> glb
8
```
### 6.2 Выявление локализации объекта с помощью функций locals() и globals() из builtins.
```py
>>> globals().keys()
dict_keys(['__name__', '__doc__', '__package__', '__loader__', '__spec__', '__annotations__', '__builtins__', 'uspeh', 'sravnenie', 'n', 'm', 'logistfun', 'v', 'w', 'z', 'slozh', 'b1', 'b2', 'b3', 'b4', 'q', 'inerz', 'sps', 'spsy', 'TT', 'yy', 'xx', 'matplotlib', 'plt', 'arr', 'fnkt', 'typ_fun', 'func', 'fun_arg', 'zz', 'b1234', 'qq', 'dic4', 'qqq', 'e1', 'dd2', 'qqqq', 'func4', 'a', 'func3', 'sps1', 'func2', 'kort', 'anfun1', 'math', 'anfun2', 'anfun3', 'func5', 'mm', 'alp', 'glb', 'func7', 'res', 'func8'])
>>> locals().keys()
>>> dict_keys(['__name__', '__doc__', '__package__', '__loader__', '__spec__', '__annotations__', '__builtins__', 'uspeh', 'sravnenie', 'n', 'm', 'logistfun', 'v', 'w', 'z', 'slozh', 'b1', 'b2', 'b3', 'b4', 'q', 'inerz', 'sps', 'spsy', 'TT', 'yy', 'xx', 'matplotlib', 'plt', 'arr', 'fnkt', 'typ_fun', 'func', 'fun_arg', 'zz', 'b1234', 'qq', 'dic4', 'qqq', 'e1', 'dd2', 'qqqq', 'func4', 'a', 'func3', 'sps1', 'func2', 'kort', 'anfun1', 'math', 'anfun2', 'anfun3', 'func5', 'mm', 'alp', 'glb', 'func7', 'res', 'func8'])
>>> def func8(arg):
loc1=15
glb=8
print(globals().keys()) #Перечень глобальных объектов «изнутри» функции
print(locals().keys()) #Перечень локальных объектов «изнутри» функции
return loc1*arg
>>> hh=func8(glb)
dict_keys(['__name__', '__doc__', '__package__', '__loader__', '__spec__', '__annotations__', '__builtins__', 'func8', 'glb'])
dict_keys(['arg', 'loc1', 'glb'])
>>> 'glb' in globals().keys()
True
```
### 6.3 Локализация объектов при использовании вложенных функций.
```py
>>> def func9(arg2,arg3):
>>> def func9_1(arg1):
loc1=15
glb1=8
print('glob_func9_1:',globals().keys())
print('locl_func9_1:',locals().keys())
return loc1*arg1
loc1=5
glb=func9_1(loc1)
print('loc_func9:',locals().keys())
print('glob_func9:',globals().keys())
return arg2+arg3*glb
>>> kk=func9(10,1)
glob_func9_1: dict_keys(['__name__', '__doc__', '__package__', '__loader__', '__spec__', '__annotations__', '__builtins__', 'func8', 'glb', 'hh', 'func9'])
locl_func9_1: dict_keys(['arg1', 'loc1', 'glb1'])
loc_func9: dict_keys(['arg2', 'arg3', 'func9_1', 'loc1', 'glb'])
glob_func9: dict_keys(['__name__', '__doc__', '__package__', '__loader__', '__spec__', '__annotations__', '__builtins__', 'func8', 'glb', 'hh', 'func9'])
```
### 6.4 Большой пример
```py
>>> znach=input('k1,T,k2,Xm,A,F,N=').split(',')
>>> k1,T,k2,Xm,A,F,N=2,20,5,0,3,31,10
>>> 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])
>>> for i in range(N):
vhod.append(A*math.sin((2*i*math.pi)/F))
>>> vhod
[0.0, 0.6038955602659801, 1.1830675653399556, 1.713804645284377, 2.17437836168736, 2.5459327724842526, 2.813256396441241, 2.9654049729843344, 2.9961495215131584, 2.904231356598613]
>>> 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
>>> yi1=0;yin1=0;yi2=0
>>> vyhod=[]
>>> for xt in vhod:
xt1=xt-yi2 #отрицательная обратная связь
[yi1,yin1]=realdvig(xt1,k1,T,yi1,yin1)
yi2=tahogen(yin1,k2,yi2)
yt=nechus(yin1,Xm)
vyhod.append(yt)
>>> print('y=',vyhod)
y= [0.0, 0.0575138628824743, 0.19757451809698162, 0.37271445071909315, 0.44764431066344834, 0.24935818305562138, -0.3024162461562951, -1.0323481238173855, -1.4374313649904746, -0.8573979371237693]
```

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

@@ -0,0 +1,84 @@
# Общее контрольное задание по теме 7
Корнеев Максим, А-03-23
## Задание
* Разработайте и проверьте функцию, реализующую для момента времени t расчет выхода y(t) для устройства задержки: на вход поступает сигнал, а на выходе повторяется этот сигнал с задержкой на заданное время Т.
* Разработайте и проверьте функцию, реализующую расчет гистограммы по выборке случайной величины с каким-то распределением. Гистограмма при выводе на экран представляется в виде таблицы: границы интервала, число элементов выборки в интервале. Аргументы функции: выборка, число интервалов разбиения диапазона изменения случайной величины. Возвращаемый результат функции: список с числами элементов выборки в интервалах разбиения.
* Разработайте и проверьте анонимную функцию, вычисляющую значение оценки отклика Y линейной регрессии при значении переменной Х
Y=b1+b2*X
и имеющую аргументы b1, b2 и X.
## Решение
```
def delay_signal(signal, T):
delayed_signal = signal.copy()
if T < len(signal):
delayed_signal = [0] * T + signal[:-T]
else:
delayed_signal = [0] * len(signal)
return delayed_signal
>>> y = [random.gauss(3, 1.5) for _ in range(40)]
>>> y
[5.325416780634114, 2.3593622133749808, 1.2470676959301887, -0.593060108499694, 1.4340279482713292, 2.162904911751828, 3.5966381215435743, 3.1215233313521367, 3.278769015552392, 1.4600848702469413, 2.227188218562767, -0.02101290555432689, 2.9015754761132713, 5.507229347318583, 4.392918705255052, 2.893096608173657, 2.400184728443876, 2.3464420973774045, -0.29207940771891217, 4.868968794420769, 5.1569207689963275, 2.966999923764223, 0.9443978469937528, 5.562190945114451, 3.4834584941068765, 1.7250255447073042, 3.013873484634806, 3.783067951814041, 4.602220595567667, 2.283163010872606, 4.563248136396248, 5.370530689941988, -0.5394330191088121, 4.481730159619498, 2.6088804215267345, 3.562728440630803, 4.422684655442551, 1.846276163481897, 3.8925551687094426, 4.720299420830592]
>>> yd = delay_signal(y, 4)
>>> yd
[0, 0, 0, 0, 5.325416780634114, 2.3593622133749808, 1.2470676959301887, -0.593060108499694, 1.4340279482713292, 2.162904911751828, 3.5966381215435743, 3.1215233313521367, 3.278769015552392, 1.4600848702469413, 2.227188218562767, -0.02101290555432689, 2.9015754761132713, 5.507229347318583, 4.392918705255052, 2.893096608173657, 2.400184728443876, 2.3464420973774045, -0.29207940771891217, 4.868968794420769, 5.1569207689963275, 2.966999923764223, 0.9443978469937528, 5.562190945114451, 3.4834584941068765, 1.7250255447073042, 3.013873484634806, 3.783067951814041, 4.602220595567667, 2.283163010872606, 4.563248136396248, 5.370530689941988, -0.5394330191088121, 4.481730159619498, 2.6088804215267345, 3.562728440630803]
import matplotlib.pyplot as plt
def calculate_histogram(data, num_bins):
min_val, max_val = min(data), max(data)
bins = np.linspace(min_val, max_val, num_bins + 1)
counts = [0] * num_bins
for value in data:
for i in range(num_bins):
if bins[i] <= value < bins[i + 1]:
counts[i] += 1
break
if value == max_val:
counts[-1] += 1
return counts, bins
def plot_histogram(data, bins, counts):
plt.hist(data, bins=bins, alpha=0.7, edgecolor='black')
plt.xlabel('Значения выборки')
plt.ylabel('Число элементов')
plt.title('Гистограмма выборки')
plt.show()
def histo(data, num_bins):
"""
Основная функция для работы с гистограммой
"""
counts, bins = calculate_histogram(data, num_bins)
plot_histogram(data, bins, counts)
return counts
sample = [random.gauss(random.random(), random.random()) for _ in range(random.randint(10,200))]
intervals = int(input("Введите количество интервалов разбиения: "))
output = histo(sample, intervals)
Введите количество интервалов разбиения: 12
Список с числами элементов в интервалах: [3, 4, 10, 10, 6, 8, 7, 0, 1, 0, 0, 1]
linreg = lambda b1, b2, x: b1 + b2 * x
b1 = float(input("Введите коэффициент b1 линейной регрессии: "))
b2 = float(input("Введите коэффициент b2 линейной регрессии: "))
x_val = float(input("Введите значение x: "))
print(linreg(b1, b2, x_val))
Введите коэффициент b1 линейной регрессии: 2
Введите коэффициент b2 линейной регрессии: 3
Введите значение x: 5
17.0
```
![график](Figure_2.png)

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

@@ -0,0 +1,31 @@
# Индивидуальное контрольное задание по теме 7
Корнеев Максим, А-03-23
## Задание
* Разработайте функцию с 4 аргументами, создающую последовательность отсчетов случайного, равномерно распределенного сигнала типа белого шума с заданными параметрами: границы диапазона изменения, число отсчетов (аргументы функции). Сигнал должен быть записан построчно, по 3 элемента в строке с разделителем - запятая в текстовый файл с заданным именем (4-й аргумент функции), а также возвращен в вызывающую программу в виде списка.
## Решение
```py
import random
def my_func(a, b, n, file):
spis = [random.uniform(a,b) for _ in range(n)]
fp = open(file=file, mode='w')
for i in range(round(len(spis)/3)+1):
fp.write(str(spis[i*3:(i+1)*3])+'\n')
fp.close()
return spis
print(my_func(1,4,10, 'test.txt'))
```
Содержимое файла:
```txt
[1.2923391720999542, 2.240148785883159, 2.1962520938183134]
[2.1021050037962414, 3.738168833827635, 2.3872359227180144]
[3.5776730172934297, 2.359391927683434, 1.98566360783404]
[2.124410241987741]
```

11
TEMA7/test.py Обычный файл
Просмотреть файл

@@ -0,0 +1,11 @@
import random
def my_func(a, b, n, file):
spis = [random.uniform(a,b) for _ in range(n)]
fp = open(file=file, mode='w')
for i in range(round(len(spis)/3)+1):
fp.write(str(spis[i*3:(i+1)*3])+'\n')
fp.close()
return spis
print(my_func(1,4,10, 'test.txt'))

4
TEMA7/test.txt Обычный файл
Просмотреть файл

@@ -0,0 +1,4 @@
[1.2923391720999542, 2.240148785883159, 2.1962520938183134]
[2.1021050037962414, 3.738168833827635, 2.3872359227180144]
[3.5776730172934297, 2.359391927683434, 1.98566360783404]
[2.124410241987741]

493
TEMA7/text.txt Обычный файл
Просмотреть файл

@@ -0,0 +1,493 @@
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.
def uspeh():
"""Подтверждение успеха операции"""
print('Выполнено успешно!')
uspeh()
Выполнено успешно!
dir()
['__annotations__', '__builtins__', '__doc__', '__loader__', '__name__', '__package__', '__spec__', 'uspeh']
help(uspeh)
Help on function uspeh in module __main__:
uspeh()
Подтверждение успеха операции
def sravnenie(a,b):
"""Сравнение a и b"""
if a>b:
print(a,' больше ',b)
elif a<b:
print(a, ' меньше ',b)
else:
print(a, ' равно ',b)
n,m=16,5;sravnenie(n,m)
16 больше 5
n,m='a','5';sravnenie(n,m)
a больше 5
def logistfun(b,a):
"""Вычисление логистической функции"""
import math
return a/(1+math.exp(-b))
v,w=1,0.7;z=logistfun(w,v)
z
0.6681877721681662
def slozh(a1,a2,a3,a4):
""" Сложение значений четырех аргументов"""
return a1+a2+a3+a4
slozh(1,2,3,4)
10
slozh('1','2','3','4')
'1234'
b1=[1,2];b2=[-1,-2];b3=[0,2];b4=[-1,-1]
q=slozh(b1,b2,b3,b4)
q
[1, 2, -1, -2, 0, 2, -1, -1]
b1=(1,2);b2=(-1,-2);b3=(0,2);b4=(-1,-1)
q=slozh(b1,b2,b3,b4)
q
(1, 2, -1, -2, 0, 2, -1, -1)
b1={1,2};b2={-1,-2};b3={0,2};b4={-1,-1}
q=slozh(b1,b2,b3,b4)
Traceback (most recent call last):
File "<pyshell#25>", line 1, in <module>
q=slozh(b1,b2,b3,b4)
File "<pyshell#15>", line 3, in slozh
return a1+a2+a3+a4
TypeError: unsupported operand type(s) for +: 'set' and 'set'
b1={'a':1,'b':2};b2={'a':-1,'b':-2}
q=slozh(b1,b2)
Traceback (most recent call last):
File "<pyshell#27>", line 1, in <module>
q=slozh(b1,b2)
TypeError: slozh() missing 2 required positional arguments: 'a3' and 'a4'
b1={'a':1,'b':2};b2={'a':-1,'b':-2};b3={'a':0,'b':2};b4={'a':-1,'b':-1}
q=slozh(b1,b2,b3,b4)
Traceback (most recent call last):
File "<pyshell#29>", line 1, in <module>
q=slozh(b1,b2,b3,b4)
File "<pyshell#15>", line 3, in slozh
return a1+a2+a3+a4
TypeError: unsupported operand type(s) for +: 'dict' and 'dict'
def inerz(x,T,ypred):
""" Модель устройства с памятью:
x- текущее значение вх.сигнала,
T -постоянная времени,
ypred - предыдущее значение выхода устройства"""
y=(x+T*ypred)/(T+1)
return y
sps=[0]+[1]*100
spsy=[]
TT=20
yy=0
for xx in sps:
yy=inerz(xx,TT,yy)
spsy.append(yy)
import matplotlib
import matplotlib as plt
plt.plot()
Traceback (most recent call last):
File "<pyshell#40>", line 1, in <module>
plt.plot()
File "/Library/Frameworks/Python.framework/Versions/3.13/lib/python3.13/site-packages/matplotlib/_api/__init__.py", line 218, in __getattr__
raise AttributeError(
AttributeError: module 'matplotlib' has no attribute 'plot'
a=plt.figure()
Traceback (most recent call last):
File "<pyshell#41>", line 1, in <module>
a=plt.figure()
File "/Library/Frameworks/Python.framework/Versions/3.13/lib/python3.13/site-packages/matplotlib/_api/__init__.py", line 218, in __getattr__
raise AttributeError(
AttributeError: module 'matplotlib' has no attribute 'figure'
import matplotlib.pyplot as plt
plt.plot()
[]
plt.plot(sps, spsy)
[<matplotlib.lines.Line2D object at 0x113a13390>]
plt.show()
arr = [i for i in range(101)]
plt.plot(arr, spsy)
[<matplotlib.lines.Line2D object at 0x12016c550>]
plt.show()
len(spsy)
101
plt.show()
plt.plot(arr, spsy)
[<matplotlib.lines.Line2D object at 0x1201c2e90>]
plt.show()
dir(inerz)
['__annotations__', '__builtins__', '__call__', '__class__', '__closure__', '__code__', '__defaults__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__get__', '__getattribute__', '__getstate__', '__globals__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__kwdefaults__', '__le__', '__lt__', '__module__', '__name__', '__ne__', '__new__', '__qualname__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__type_params__']
inerz.__doc__
'Модель устройства с памятью:\nx- текущее значение вх.сигнала,\n T -постоянная времени,\n ypred - предыдущее значение выхода устройства'
help(inerz)
Help on function inerz in module __main__:
inerz(x, T, ypred)
Модель устройства с памятью:
x- текущее значение вх.сигнала,
T -постоянная времени,
ypred - предыдущее значение выхода устройства
fnkt=sravnenie
v=16
fnkt(v,23)
16 меньше 23
typ_fun=8
if typ_fun==1:
def func():
print('Функция 1')
else:
def func():
print('Функция 2')
func()
Функция 2
def fun_arg(fff,a,b,c):
"""fff-имя функции, используемой
в качестве аргумента функции fun_arg"""
return a+fff(c,b)
SyntaxError: unexpected indent
def fun_arg(fff,a,b,c):
"""fff-имя функции, используемой
в качестве аргумента функции fun_arg"""
return a+fff(c,b)
zz=fun_arg(logistfun,-3,1,0.7)
SyntaxError: unexpected indent
zz=fun_arg(logistfun,-3,1,0.7)
def logistfun(a,b=1): #Аргумент b – необязательный; значение по умолчанию=1
"""Вычисление логистической функции"""
import math
return b/(1+math.exp(-a))
logistfun(0.7)
0.6681877721681662
logistfun(0.7,2)
1.3363755443363323
logistfun(b=0.5,a=0.8)
0.34498724056380625
b1234=[b1,b2,b3,b4]
qq=slozh(*b1234)
Traceback (most recent call last):
File "<pyshell#74>", line 1, in <module>
qq=slozh(*b1234)
File "<pyshell#15>", line 3, in slozh
return a1+a2+a3+a4
TypeError: unsupported operand type(s) for +: 'dict' and 'dict'
b1=[1,2];b2=[-1,-2];b3=[0,2];b4=[-1,-1]
b1234=[b1,b2,b3,b4]
qq=slozh(*b1234)
qq
[1, 2, -1, -2, 0, 2, -1, -1]
dic4={"a1":1,"a2":2,"a3":3,"a4":4}
qqq=slozh(**dic4)
qqq
10
e1=(-1,6);dd2={'a3':3,'a4':9}
qqqq=slozh(*e1,**dd2)
def func4(*kort7):
"""Произвольное число аргументов в составе кортежа"""
smm=0
for elt in kort7:
smm+=elt
return smm
func4(-1,2)
1
func4(-1,2,0,3,6)
10
def func4(a,b=7,*kort7): #Аргументы: a-позиционный, b- по умолчанию + кортеж
"""Кортеж - сборка аргументов - должен быть последним!"""
smm=0
for elt in kort7:
smm+=elt
return a*smm+b
func4(-1,2,0,3,6)
-7
def func4(a,b=7,**dic5): #Аргументы: a-позиционный, b- по умолчанию + кортеж
"""Кортеж - сборка аргументов - должен быть последним!"""
smm=0
for elt in dic5:
smm+=elt
return a*smm+b
func4(-1,2,0,3,6)
Traceback (most recent call last):
File "<pyshell#93>", line 1, in <module>
func4(-1,2,0,3,6)
TypeError: func4() takes from 1 to 2 positional arguments but 5 were given
func4(-1,2,{'a': 0},{'b': 3},{'c': 6})
Traceback (most recent call last):
File "<pyshell#94>", line 1, in <module>
func4(-1,2,{'a': 0},{'b': 3},{'c': 6})
TypeError: func4() takes from 1 to 2 positional arguments but 5 were given
a=90 # Числовой объект – не изменяемый тип
def func3(b):
b=5*b+67
func3(a)
SyntaxError: multiple statements found while compiling a single statement
a=90 # Числовой объект – не изменяемый тип
def func3(b):
b=5*b+67
func3(a)
SyntaxError: multiple statements found while compiling a single statement
a=90
def func3(b):
b=5*b+67
func3(a)
a
90
sps1=[1,2,3,4]
def func2(sps):
sps[1]=99
func2(sps1)
print(sps1)
[1, 99, 3, 4]
kort=(1,2,3,4)
func2(kort)
Traceback (most recent call last):
File "<pyshell#109>", line 1, in <module>
func2(kort)
File "<pyshell#105>", line 2, in func2
sps[1]=99
TypeError: 'tuple' object does not support item assignment
anfun1=lambda: 1.5+math.log10(17.23)
anfun1()
Traceback (most recent call last):
File "<pyshell#111>", line 1, in <module>
anfun1()
File "<pyshell#110>", line 1, in <lambda>
anfun1=lambda: 1.5+math.log10(17.23)
NameError: name 'math' is not defined. Did you forget to import 'math'?
import math
anfun1=lambda: 1.5+math.log10(17.23)
anfun1()
2.7362852774480286
anfun2=lambda a,b : a+math.log10(b)
anfun2(17,234)
19.369215857410143
anfun3=lambda a,b=234: a+math.log10(b)
anfun3(100)
102.36921585741014
def func5(diap,shag):
""" Итератор, возвращающий значения
из диапазона от 1 до diap с шагом shag"""
for j in range(1,diap+1,shag):
yield j
for mm in func5(7,3):
print(mm)
1
4
7
alp=func5(7,3)
print(alp.__next__())
1
print(alp.__next__())
4
print(alp.__next__())
7
print(alp.__next__())
Traceback (most recent call last):
File "<pyshell#128>", line 1, in <module>
print(alp.__next__())
StopIteration
glb=10
def func7(arg):
loc1=15
glb=8
return loc1*arg
res=func7(glb)
def func8(arg):
loc1=15
print(glb)
glb=8
return loc1*arg
res=func8(glb)
Traceback (most recent call last):
File "<pyshell#136>", line 1, in <module>
res=func8(glb)
File "<pyshell#135>", line 3, in func8
print(glb)
UnboundLocalError: cannot access local variable 'glb' where it is not associated with a value
glb
10
glb=11
def func7(arg):
loc1=15
global glb
print(glb)
glb=8
return loc1*arg
res=func7(glb)
11
glb
8
globals().keys()
dict_keys(['__name__', '__doc__', '__package__', '__loader__', '__spec__', '__annotations__', '__builtins__', 'uspeh', 'sravnenie', 'n', 'm', 'logistfun', 'v', 'w', 'z', 'slozh', 'b1', 'b2', 'b3', 'b4', 'q', 'inerz', 'sps', 'spsy', 'TT', 'yy', 'xx', 'matplotlib', 'plt', 'arr', 'fnkt', 'typ_fun', 'func', 'fun_arg', 'zz', 'b1234', 'qq', 'dic4', 'qqq', 'e1', 'dd2', 'qqqq', 'func4', 'a', 'func3', 'sps1', 'func2', 'kort', 'anfun1', 'math', 'anfun2', 'anfun3', 'func5', 'mm', 'alp', 'glb', 'func7', 'res', 'func8'])
locals().keys()
dict_keys(['__name__', '__doc__', '__package__', '__loader__', '__spec__', '__annotations__', '__builtins__', 'uspeh', 'sravnenie', 'n', 'm', 'logistfun', 'v', 'w', 'z', 'slozh', 'b1', 'b2', 'b3', 'b4', 'q', 'inerz', 'sps', 'spsy', 'TT', 'yy', 'xx', 'matplotlib', 'plt', 'arr', 'fnkt', 'typ_fun', 'func', 'fun_arg', 'zz', 'b1234', 'qq', 'dic4', 'qqq', 'e1', 'dd2', 'qqqq', 'func4', 'a', 'func3', 'sps1', 'func2', 'kort', 'anfun1', 'math', 'anfun2', 'anfun3', 'func5', 'mm', 'alp', 'glb', 'func7', 'res', 'func8'])
================================ RESTART: Shell ================================
glb
Traceback (most recent call last):
File "<pyshell#146>", line 1, in <module>
glb
NameError: name 'glb' is not defined
def func8(arg):
loc1=15
glb=8
print(globals().keys()) #Перечень глобальных объектов «изнутри» функции
print(locals().keys()) #Перечень локальных объектов «изнутри» функции
return loc1*arg
glb=11
hh=func8(glb)
dict_keys(['__name__', '__doc__', '__package__', '__loader__', '__spec__', '__annotations__', '__builtins__', 'func8', 'glb'])
dict_keys(['arg', 'loc1', 'glb'])
'glb' in globals().keys()
True
def func9(arg2,arg3):
def func9_1(arg1):
loc1=15
glb1=8
print('glob_func9_1:',globals().keys())
print('locl_func9_1:',locals().keys())
return loc1*arg1
loc1=5
glb=func9_1(loc1)
print('loc_func9:',locals().keys())
print('glob_func9:',globals().keys())
return arg2+arg3*glb
kk=func9(10,1)
glob_func9_1: dict_keys(['__name__', '__doc__', '__package__', '__loader__', '__spec__', '__annotations__', '__builtins__', 'func8', 'glb', 'hh', 'func9'])
locl_func9_1: dict_keys(['arg1', 'loc1', 'glb1'])
loc_func9: dict_keys(['arg2', 'arg3', 'func9_1', 'loc1', 'glb'])
glob_func9: dict_keys(['__name__', '__doc__', '__package__', '__loader__', '__spec__', '__annotations__', '__builtins__', 'func8', 'glb', 'hh', 'func9'])
znach=input('k1,T,k2,Xm,A,F,N=').split(',')
k1,T,k2,Xm,A,F,N=2,20,5,0,3,31,10
k1=float(znach[0])
import math
vhod=[]
for i in range(N):
vhod.append(A*math.sin((2*i*math.pi)/F))
Traceback (most recent call last):
File "<pyshell#160>", line 1, in <module>
for i in range(N):
NameError: name 'N' is not defined
T=float(znach[1])
k2=float(znach[2])
Xm=float(znach[3])
A=float(znach[4])
F=float(znach[5])
N=float(znach[6])
for i in range(N):
vhod.append(A*math.sin((2*i*math.pi)/F))
Traceback (most recent call last):
File "<pyshell#168>", line 1, in <module>
for i in range(N):
TypeError: 'float' object cannot be interpreted as an integer
N=int(znach[6])
for i in range(N):
vhod.append(A*math.sin((2*i*math.pi)/F))
vhod
[0.0, 0.6038955602659801, 1.1830675653399556, 1.713804645284377, 2.17437836168736, 2.5459327724842526, 2.813256396441241, 2.9654049729843344, 2.9961495215131584, 2.904231356598613]
def realdvig(xtt,kk1,TT,yti1,ytin1):
#Модель реального двигателя
yp=kk1*xtt #усилитель
yti1=yp+yti1 #Интегратор
ytin1=(yti1+TT*ytin1)/(TT+1)
return [yti1,ytin1]
SyntaxError: unindent does not match any outer indentation level
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
SyntaxError: expected an indented block after 'if' statement on line 3
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
yi1=0;yin1=0;yi2=0
vyhod=[]
for xt in vhod:
xt1=xt-yi2 #отрицательная обратная связь
[yi1,yin1]=realdvig(xt1,k1,T,yi1,yin1)
yi2=tahogen(yin1,k2,yi2)
yt=nechus(yin1,Xm)
vyhod.append(yt)
print('y=',vyhod)
SyntaxError: unexpected indent
print('y=',vyhod)
print('y=',vyhod)
y= [0.0, 0.0575138628824743, 0.19757451809698162, 0.37271445071909315, 0.44764431066344834, 0.24935818305562138, -0.3024162461562951, -1.0323481238173855, -1.4374313649904746, -0.8573979371237693]

3
TEMA8/a.py Обычный файл
Просмотреть файл

@@ -0,0 +1,3 @@
import b.py
def sam(a, b):
return a-b

3
TEMA8/b.py Обычный файл
Просмотреть файл

@@ -0,0 +1,3 @@
import a.py
def not_sam(a,b,c):
return a*b + c

4
TEMA8/ikz0.py Обычный файл
Просмотреть файл

@@ -0,0 +1,4 @@
import ikz1
sps = ikz1.my_func(1, 3, 10, 'text.txt')
print(sps)

9
TEMA8/ikz1.py Обычный файл
Просмотреть файл

@@ -0,0 +1,9 @@
import random
def my_func(a, b, n, file):
spis = [random.uniform(a,b) for _ in range(n)]
fp = open(file=file, mode='w')
for i in range(round(len(spis)/3)+1):
fp.write(str(spis[i*3:(i+1)*3])+'\n')
fp.close()
return spis

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

@@ -0,0 +1,308 @@
# Тема 8. Модули и структурирование программы
Выполнил: Корнеев М.А.
## 1. Импорт библиотек
```
>>> import os
>>> os.chdir("/Users/maksimkorneev/desktop/Лабы/ПОАС/python-labs/Tema8")
>>> import sys, importlib
```
## 2. Создание и использование модулей в среде Python.
### 2.1. Запуск модуля на выполнение путем его импорта.
Файл mod1.py содержит команды:
```py
perm1 = input('Mod1: Введите значение = ')
print('Mod1: Значение perm1 = ', perm1)
```
Вызов файла как импортируемого модуля:
```py
>>> import mod1
Mod1: Введите значение = 5
Mod1: Значение perm1 = 5
>>> mod1.perm1
'5'
>>> import mod1
>>> import mod1
```
```py
>>> importlib.reload(mod1)
Mod1: Введите значение = 6
Mod1: Значение perm1 = 6
>>> mod1.perm1
'6'
```
### 2.2. Словарь импортированных модулей
```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', '_pickle', '_pyrepl', '_pyrepl.pager', '_queue', '_random', '_signal', '_sitebuiltins', '_socket', '_sre', '_stat', '_string', '_struct', '_sysconfig', '_thread', '_tkinter', '_tokenize', '_typing', '_warnings', '_weakref', '_weakrefset', '_winapi', '_wmi', 'abc', 'ast', 'bdb', 'binascii', 'bisect', 'builtins', 'bz2', 'codecs', 'collections', 'collections.abc', 'configparser', 'contextlib', 'copyreg', 'datetime', 'dis', 'encodings', 'encodings.aliases', 'encodings.cp1251', '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', 'mod1', 'nt', 'ntpath', 'opcode', 'operator', 'os', 'os.path', 'pickle', 'pkgutil', 'platform', 'plistlib', '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', 'winreg', 'xml', 'xml.parsers', 'xml.parsers.expat', 'xml.parsers.expat.errors', 'xml.parsers.expat.model', 'zipimport', 'zlib']
>>> sys.modules.pop('mod1')
>>> 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', '_pickle', '_pyrepl', '_pyrepl.pager', '_queue', '_random', '_signal', '_sitebuiltins', '_socket', '_sre', '_stat', '_string', '_struct', '_sysconfig', '_thread', '_tkinter', '_tokenize', '_typing', '_warnings', '_weakref', '_weakrefset', '_winapi', '_wmi', 'abc', 'ast', 'bdb', 'binascii', 'bisect', 'builtins', 'bz2', 'codecs', 'collections', 'collections.abc', 'configparser', 'contextlib', 'copyreg', 'datetime', 'dis', 'encodings', 'encodings.aliases', 'encodings.cp1251', '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', 'nt', 'ntpath', 'opcode', 'operator', 'os', 'os.path', 'pickle', 'pkgutil', 'platform', 'plistlib', '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', 'winreg', 'xml', 'xml.parsers', 'xml.parsers.expat', 'xml.parsers.expat.errors', 'xml.parsers.expat.model', 'zipimport', 'zlib']
```
```py
>>> import mod1
Mod1: Введите значение = 9
Mod1: Значение perm1 = 9
>>> mod1.perm1
'9'
```
### 2.3. Запуск модуля на выполнение с помощью функции exec().
```py
>>> exec(open('mod1.py').read())
Mod1: Введите значение = 7
Mod1: Значение perm1 = 7
>>> perm1
'7'
>>> exec(open('mod1.py').read())
Mod1: Введите значение = 99
Mod1: Значение perm1 = 99
>>> perm1
'99'
>>> exec(open('mod1.py').read())
Mod1: Введите значение = 40
Mod1: Значение perm1 = 40
>>> perm1
'40'
```
### 2.4. Использование инструкции from … import …
Пример 1.
```py
>>> sys.modules.pop('mod1')
>>> 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', '_pickle', '_pyrepl', '_pyrepl.pager', '_queue', '_random', '_signal', '_sitebuiltins', '_socket', '_sre', '_stat', '_string', '_struct', '_sysconfig', '_thread', '_tkinter', '_tokenize', '_typing', '_warnings', '_weakref', '_weakrefset', '_winapi', '_wmi', 'abc', 'ast', 'bdb', 'binascii', 'bisect', 'builtins', 'bz2', 'codecs', 'collections', 'collections.abc', 'configparser', 'contextlib', 'copyreg', 'datetime', 'dis', 'encodings', 'encodings.aliases', 'encodings.cp1251', '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', 'nt', 'ntpath', 'opcode', 'operator', 'os', 'os.path', 'pickle', 'pkgutil', 'platform', 'plistlib', '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', 'winreg', 'xml', 'xml.parsers', 'xml.parsers.expat', 'xml.parsers.expat.errors', 'xml.parsers.expat.model', 'zipimport', 'zlib']
>>> from mod1 import perm1
Mod1: Введите значение = 89
Mod1: Значение perm1 = 89
>>> 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', '_pickle', '_pyrepl', '_pyrepl.pager', '_queue', '_random', '_signal', '_sitebuiltins', '_socket', '_sre', '_stat', '_string', '_struct', '_sysconfig', '_thread', '_tkinter', '_tokenize', '_typing', '_warnings', '_weakref', '_weakrefset', '_winapi', '_wmi', 'abc', 'ast', 'bdb', 'binascii', 'bisect', 'builtins', 'bz2', 'codecs', 'collections', 'collections.abc', 'configparser', 'contextlib', 'copyreg', 'datetime', 'dis', 'encodings', 'encodings.aliases', 'encodings.cp1251', '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', 'mod1', 'nt', 'ntpath', 'opcode', 'operator', 'os', 'os.path', 'pickle', 'pkgutil', 'platform', 'plistlib', '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', 'winreg', 'xml', 'xml.parsers', 'xml.parsers.expat', 'xml.parsers.expat.errors', 'xml.parsers.expat.model', 'zipimport', 'zlib']
>>> perm1
'89'
```
Пример 2.
```py
>>> from mod2 import beta
>>> g = beta(2)
>>> g
535.4916555247646
>>> 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', '_pickle', '_pyrepl', '_pyrepl.pager', '_queue', '_random', '_signal', '_sitebuiltins', '_socket', '_sre', '_stat', '_string', '_struct', '_sysconfig', '_thread', '_tkinter', '_tokenize', '_typing', '_warnings', '_weakref', '_weakrefset', '_winapi', '_wmi', 'abc', 'ast', 'bdb', 'binascii', 'bisect', 'builtins', 'bz2', 'codecs', 'collections', 'collections.abc', 'configparser', 'contextlib', 'copyreg', 'datetime', 'dis', 'encodings', 'encodings.aliases', 'encodings.cp1251', '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', 'mod1', 'mod2', 'nt', 'ntpath', 'opcode', 'operator', 'os', 'os.path', 'pickle', 'pkgutil', 'platform', 'plistlib', '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', 'winreg', 'xml', 'xml.parsers', 'xml.parsers.expat', 'xml.parsers.expat.errors', 'xml.parsers.expat.model', 'zipimport', 'zlib']
```
```py
>>> from mod2 import alpha as al
>>> al()
****ALPHA****
Значение t=90
'90'
>>> alpha()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'alpha' is not defined
```
```py
>>> del al, beta
>>> from mod2 import alpha as al, beta as bt
>>> sys.modules.pop('mod2')
>>> sys.modules.pop('mod1')
>>> from mod2 import *
>>> tt = alpha()
****ALPHA****
Значение t=0.13
>>> uu = beta(float(tt))
>>> uu
1.5044194029024176
```
## 3. Создание многомодульных программ.
### 3.1. Пример простой многомодульной программы.
Модуль 0:
```py
import mod1
print('perm1 = ', mod1.perm1)
from mod2 import alpha as al
tt = al()
print('tt = ', tt)
from mod2 import beta
qq=beta(float(tt))
print('qq = ', qq)
```
```py
>>> import mod0
Mod1: Введите значение = 8
Mod1: Значение perm1 = 8
perm1 = 8
****ALPHA****
Значение t=2
tt = 2
qq = 535.4916555247646
```
```py
>>> mod0.tt
'2'
>>> mod0.qq
535.4916555247646
>>> mod0.mod1.perm1
'8'
```
### 3.2.
Файл mm0.py:
```py
import mm2
print('y =', mm2.vyhod)
```
Файл mm1.py:
```py
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
```
Файл mm2.py:
```py
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)
```
```py
k1,T,k2,Xm,A,F,N=9,6,4,11,3,0.5,1500
y = [0, 0, ... 0, -70.20177063675057, 0, 257.73311334096866, -677.4095530135962, ... -6.270038281034423e+306, -1.198995988522659e+307]
```
### 3.3. Области действия объектов в модулях:
Обращение в функции alpha к функции beta:
```py
def alpha():
print('****ALPHA****')
t=input('Значение t=')
beta(int(t))
return t
def beta(q):
import math
expi=q*math.pi
return math.exp(expi)
```
```py
Mod1: Введите значение = 8
Mod1: Значение perm1 = 8
perm1 = 8
****ALPHA****
Значение t=4
tt = 4
qq = 286751.31313665316
```
```py
def alpha():
print('****ALPHA****')
t=input('Значение t=')
return t
def beta(q):
import math
expi = int(alpha())*math.pi
return math.exp(expi)
```
```py
Mod1: Введите значение = 8
Mod1: Значение perm1 = 8
perm1 = 8
****ALPHA****
Значение t=4
tt = 4
****ALPHA****
Значение t=4
qq = 286751.31313665316
```
```py
#Модуль mod0
import mod1
print('perm1 = ', mod1.perm1)
from mod2 import alpha as al
tt = al()
print('tt = ', tt)
from mod2 import beta
qq=beta(float(tt))
print('qq = ', qq)
print(f't = {al.t}, expi = {beta.expi}')
Traceback (most recent call last):
File "C:\Users\mapon\OneDrive\Рабочий стол\ПО АС\ТЕМА8\mod0.py", line 9, in <module>
print(f't = {al.t}, expi = {beta.expi}')
AttributeError: 'function' object has no attribute 't'
Traceback (most recent call last):
File "C:\Users\mapon\OneDrive\Рабочий стол\ПО АС\ТЕМА8\mod0.py", line 10, in <module>
print(f't = {al}, expi = {beta.expi}')
^^^^^^^^^
AttributeError: 'function' object has no attribute 'expi'
```
```py
...
print('Умножено:' , int(mod1.perm1) * 3)
...
Mod1: Введите значение = 4
Mod1: Значение perm1 = 4
perm1 = 4
Умножено: 12
```
```py
>>> mod1.perm1 * 2
'55'
>>> mod0.tt * 2
'44'
>>> mod0.qq * 2
573502.6262733063
```

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

@@ -0,0 +1,75 @@
# Общее контрольное задание по Теме 8
Выполнил: Корнеев М.А.
## Задание
Разработайте программу, состоящую из трех модулей:
- Модуль 1 содержит функцию считывания числового списка из текстового файла с заданным именем (аргумент функции – имя файла). Элементы в файле могут располагаться по несколько на строке с разделением пробелом. Числа элементов в строках могут быть разными. Полученный список должен возвращаться в вызывающую программу.
- Модуль 2 содержит функцию расчета коэффициента корреляции по двум числовым спискам (аргументы функции – имена двух списков). Числа элементов в списках могут различаться. Значение коэффициента должно возвращаться в вызывающую программу.
- Модуль 3 запрашивает у пользователя и вводит имена двух файлов с исходными данными, дважды вызывает функцию из модуля 1 и считывает два списка из двух текстовых файлов. За-тем вызывает функцию расчета коэффициента корреляции с помощью функции из модуля 2 и отображает рассчитанное значение на экране с округлением до трех цифр после точки.
Подготовьте два текстовых файла с числовыми данными и проверьте по ним работу программы.
## Решение
okz1.py
```py
def reading (file):
nums = []
with open(file, 'r') as file:
for line in file:
nums.extend(map(float, line.split()))
return nums
```
okz2.py
```py
import math
def correlation(l1, l2):
n = min(len(l1), len(l2))#определяю длину для расчёта — берётся минимальная длина из двух списков
sum1 = sum(l1)
sum2 = sum(l2)
sum1sq = sum(now ** 2 for now in l1)#суммы квадратов элементов каждого списка
sum2sq = sum(now ** 2 for now in l2)
sum12 = sum(x * y for x, y in zip(l1, l2))
part1 = n * sum12 - sum1 * sum2
part2 = math.sqrt((n * sum1sq - sum1 ** 2) * (n * sum2sq - sum2 ** 2))#расчёт числителя и знаменателя формулы корреляции Пирсона
try:
corr = part1 / part2
return corr#коэф корреляции
except ZeroDivisionError:
print("Ошибка деления на ноль!")
return
```
okz3.py
```py
from okz1 import reading
from okz2 import correlation
file1 = input("Введите имя первого файла: ")
file2 = input("Введите имя второго файла: ")
arr1 = reading(file1)
arr2 = reading(file2)
if arr1 is None or arr2 is None:
print("Не удалось считать данные из файлов.")
else:
corr = correlation(arr1, arr2)
if corr is not None:
print(f"Коэффициент корреляции: {corr:.2f}")
```
Содержимое файлов:
```txt
data1.txt
1.0 2.0 3.0 4.0 5.0
6.0 7.0 8.0 9.0 10.0
data2.txt
10.0 9.5 9.0 8.5 8.0
7.5 7.0 6.5 6.0 1.0
```
```txt
Введите имя первого файла: data1.txt
Введите имя второго файла: data2.txt
Коэффициент корреляции: -0.88
```

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

@@ -0,0 +1,39 @@
# Индивидуальное контрольное задание по теме 8
Корнеев Максим, А-03-23
## Задание
* Разработайте функцию с 4 аргументами, создающую последовательность отсчетов случайного, равномерно распределенного сигнала типа белого шума с заданными параметрами: границы диапазона изменения, число отсчетов (аргументы функции). Сигнал должен быть записан построчно, по 3 элемента в строке с разделителем - запятая в текстовый файл с заданным именем (4-й аргумент функции), а также возвращен в вызывающую программу в виде списка.
## Решение
ikz1:
```py
import random
def my_func(a, b, n, file):
spis = [random.uniform(a,b) for _ in range(n)]
fp = open(file=file, mode='w')
for i in range(round(len(spis)/3)+1):
fp.write(str(spis[i*3:(i+1)*3])+'\n')
fp.close()
return spis
```
ikz0:
```py
import ikz1
sps = ikz1.my_func(1, 3, 10, 'text.txt')
print(sps)
```
Полученный результат:
```txt
[1.08025515835975, 2.9228688958029667, 2.1536790165278874, 1.4322368497545719, 2.8747368483554805, 2.306942390357838, 2.947395352017798, 1.7788680666905023, 1.112061937034012, 1.6359126745947525]
```
Содержимое файла:
```txt
[1.08025515835975, 2.9228688958029667, 2.1536790165278874]
[1.4322368497545719, 2.8747368483554805, 2.306942390357838]
[2.947395352017798, 1.7788680666905023, 1.112061937034012]
[1.6359126745947525]
```

4
TEMA8/text.txt Обычный файл
Просмотреть файл

@@ -0,0 +1,4 @@
[1.08025515835975, 2.9228688958029667, 2.1536790165278874]
[1.4322368497545719, 2.8747368483554805, 2.306942390357838]
[2.947395352017798, 1.7788680666905023, 1.112061937034012]
[1.6359126745947525]

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

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

После

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

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

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

После

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

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

@@ -0,0 +1,12 @@
import M2
import matplotlib.pyplot as plt
import pickle
plt.bar(M2.city, list(map(int,M2.n_vuz)))
plt.ylim(0, 10)
plt.show()
fp=open(f"{M2.f_name.split('.')[0]}.bin",'wb')
pickle.dump(M2.dict1,fp)
pickle.dump(M2.city,fp)
pickle.dump(M2.n_vuz,fp)
pickle.dump(M2.n_studs,fp)
fp.close()

20
TEMA9/M1.py Обычный файл
Просмотреть файл

@@ -0,0 +1,20 @@
def read_file(name):
f = open(name, mode = 'r')
sps1 = []
sps2 = []
sps3 = []
for stroka in f:
sps = []
strok=stroka.rstrip('\n')
sps=strok.split('#')
sps1.append(sps[0])
sps2.append(sps[1])
sps3.append(sps[2])
f.close()
return sps1,sps2,sps3
def make_dict(sps1,sps2,sps3):
dict1 = {}
for i in range(len(sps1)):
dict1[sps1[i]] = [sps2[i], sps3[i]]
return dict1

14
TEMA9/M2.py Обычный файл
Просмотреть файл

@@ -0,0 +1,14 @@
import os
import M1
flag = True
f_name = ''
while flag:
f_name = input('Введите имя файла: ')
if os.path.isfile(f_name):
flag = False
city, n_vuz, n_studs = M1.read_file(f_name)
print(f'Cities: {city}\nNumber vuz: {n_vuz}\nNumber_studs: {n_studs}')
dict1 = M1.make_dict(city, n_vuz, n_studs)
print(f'Dict: {dict1}')

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

@@ -0,0 +1,12 @@
class Class1:
def zad_zn(self,znach):
self.data=znach
def otobrazh(self):
print(self.data)
class Class2(Class1):
def otobrazh(self):
print('значение=',self.data)
def otobrazh(objekt):
print('значение объекта=',objekt)

21
TEMA9/SAU.py Обычный файл
Просмотреть файл

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

27
TEMA9/okz.py Обычный файл
Просмотреть файл

@@ -0,0 +1,27 @@
class Employee:
def __init__(self, fio, otdel, dolzhnost, oklad):
self.fio = fio
self.otdel = otdel
self.dolzhnost = dolzhnost
self.oklad = oklad
self._pooshrenia = []
def salary_raise(self, summa):
self.oklad += summa
print(f"Оклад сотрудника {self.fio} увеличен на {summa}. Новый оклад: {self.oklad}")
def change_department(self, new_department):
print(f"Сотрудник {self.fio} переведен из отдела {self.otdel} в отдел {new_department}.")
self.otdel = new_department
def change_position(self, new_position):
print(f"Должность сотрудника {self.fio} изменена с {self.dolzhnost} на {new_position}.")
self.dolzhnost = new_position
@property
def pooshrenia(self):
return self._pooshrenia
def add_encouragement(self, tekst):
self._pooshrenia.append(tekst)
print(f"Сотрудник {self.fio} теперь имеет поощрение: {tekst}")

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

@@ -0,0 +1,229 @@
# Тема 9 Создание пользовательских классов и объектов
Выполнил: Корнеев М.А.
## 1 Создание классов и их наследников
### 1.1 Создание автономного класса
```py
>>> class Class1:
... def zad_zn(self, znach):
... self.data = znach
... def otobrazh(self):
... print(self.data)
>>> z1 = Class1()
>>> z2 = Class1()
>>> z1.zad_zn('экз.класса 1')
>>> z2.zad_zn(-632.453)
>>> z1.otobrazh()
экз.класса 1
>>> z2.otobrazh()
-632.453
>>> z1.data = 'Новое значение атрибута у экз. 1'
>>> z1.otobrazh()
Новое значение атрибута у экз. 1
```
### 1.2 Создание класса-наследника
```py
>>> class Class2(Class1):
... def otobrazh(self):
... print('значение =', self.data)
...
>>> z3 = Class2()
>>> z3
<__main__.Class2 object at 0x000001BFF0556BA0>
>>> 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()
Новое значение атрибута у экз. 1
>>> del z1, z2, z3
```
## 2 Использование классов, содержащихся в модулях
Содержимое файла Mod3.py
```py
>>> class Class1:
... def zad_zn(self,znach):
... self.data=znach
... def otobrazh(self):
... print(self.data)
>>> class Class2(Class1):
... def otobrazh(self):
... print('значение=',self.data)
>>> def otobrazh(objekt):
... print('значение объекта=',objekt)
```
```py
>>> from Mod3 import Class1
>>> z4=Class1()
>>> z4.otobrazh()
Traceback (most recent call last):
File "<pyshell#37>", line 1, in <module>
z4.otobrazh()
File "/Users/maksimkorneev/Desktop/Лабы/ПОАС/python-labs/TEMA9/Mod3.py", line 5, in otobrazh
print(self.data)
AttributeError: 'Class1' object has no attribute 'data'
```
Ошибка возникла потому, что otobrazh было вызвано раньше, чем метод, инициализирующий атрибут data.
Мы пытаемся напечатать значение несуществующего объекта.
```py
>>> import mod3
>>> z4 = mod3.Class2()
>>> z4.zad_zn('Класс из модуля')
>>> z4.otobrazh()
значение = Класс из модуля
>>> mod3.otobrazh('Объект')
значение объекта = Объект
```
Здесь otobrazh - это уже просто функция, глобально определенная в модуле Mod3. Эта функция принимает
один обязательный параметр - выводимую переменную.
## 3 Использование специальных методов
```py
class Class3(Class2):
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
>>> z5 = Class3('abc')
>>> z5.otobrazh()
значение = abc
>>> z6 = z5 + 'def'
>>> z6.otobrazh()
значение = abcdef
>>> z6.zad_dr_zn(3)
>>> z6.otobrazh()
значение = abcdefabcdefabcdef
```
## 4 Присоединение атрибутов к классу
```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']
>>> 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)
>>> 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(z7)==dir(Class3)
False
>>> z7.rozden='1987'
>>> 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']
```
## 5 Выявление родительских классов
```py
>>> Class3.__bases__
(<class '__main__.Class2'>,)
>>> Class2.__bases__
(<class '__main__.Class1'>,)
>>> Class1.__bases__
(<class 'object'>,)
>>> Class3.__mro__
(<class '__main__.Class3'>, <class '__main__.Class2'>, <class '__main__.Class1'>, <class 'object'>)
>>> ZeroDivisionError.__mro__
(<class 'ZeroDivisionError'>, <class 'ArithmeticError'>, <class 'Exception'>, <class 'BaseException'>, <class 'object'>)
```
## 6 Создание свойства класса.
```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)
>>> from Mod3 import Class4
>>> exempl=Class4(12)
>>> exempl.svojstvo
12
>>> exempl.svojstvo=45
>>> print(exempl.svojstvo)
45
>>> del exempl.svojstvo
>>> exempl.svojstvo
Traceback (most recent call last):
File "<pyshell#84>", line 1, in <module>
exempl.svojstvo
File "<pyshell#77>", line 5, in chten
return sam.__prm
AttributeError: 'Class4' object has no attribute '_Class4__prm'
```
Такой вывод происходит, потому что этот атрибут уже удален.
## 7 Пример
Содержимое файла SAU.py
```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
>>> 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])
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
>>> import pylab
>>> pylab.plot(yt)
>>> pylab.show()
```
Полученный график:
![график](Figure_1.png)

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

@@ -0,0 +1,67 @@
# Общее контрольное задание по Теме 9
Выполнил: Корнеев М.А.
## Задание
Создайте и запишите в модуль класс, содержащий следующие компоненты:
- конструктор, задающий четырем атрибутам (fio, otdel, dolzhnost, oklad), представляющим фамилии сотрудников, название отделов,
названия должностей сотрудников и размеры их окладов, некоторые начальные значения;
- метод для обеспечения операции повышения оклада сотрудника на заданное значение;
- метод для обеспечения перевода сотрудника из одного отдела в другой;
- метод для изменения должности сотрудника;
- свойство, содержащее перечень (список) поощрений сотрудника.
- Создайте 2 экземпляра класса, задайте им некоторые значения атрибутов и свойства. Отобрази-те эти значения. Попробуйте с этими
экземплярами операции перевода из отдела в отдел, изме-нения должности и оклада, объявления благодарности.
## Решение
okz.py
```py
>>> class Employee:
... def __init__(self, fio, otdel, dolzhnost, oklad):
... self.fio = fio
... self.otdel = otdel
... self.dolzhnost = dolzhnost
... self.oklad = oklad
... self._pooshrenia = []
... def salary_raise(self, summa):
... self.oklad += summa
... print(f"Оклад сотрудника {self.fio} увеличен на {summa}. Новый оклад: {self.oklad}")
... def change_department(self, new_department):
... print(f"Сотрудник {self.fio} переведен из отдела {self.otdel} в отдел {new_department}.")
... self.otdel = new_department
... def change_position(self, new_position):
... print(f"Должность сотрудника {self.fio} изменена с {self.dolzhnost} на {new_position}.")
... self.dolzhnost = new_position
... @property
... def pooshrenia(self):
... return self._pooshrenia
... def add_encouragement(self, tekst):
... self._pooshrenia.append(tekst)
... print(f"Сотрудник {self.fio} теперь имеет поощрение: {tekst}")
```
```py
>>> from okz import *
>>> emp1 = Employee('Челышев Эдуард Артурович', 'ВМСС', 'Ассистент', 76000)
>>> emp2 = Employee('Бобряков Александр Владимирович', 'УИТ', 'Заведующий кафедрой', 760000)
>>> emp1.change_department('УИТ')
Сотрудник Челышев Эдуард Артурович переведен из отдела ВМСС в отдел УИТ.
>>> emp1.otdel
'УИТ'
>>> emp1.change_position('Старший преподаватель')
Должность сотрудника Челышев Эдуард Артурович изменена с Ассистент на Старший преподаватель.
>>> emp1.dolzhnost
'Старший преподаватель'
>>> emp2.salary_raise(-100000)
Оклад сотрудника Бобряков Александр Владимирович увеличен на -100000. Новый оклад: 660000
>>> emp2.oklad
660000
>>> emp2.add_encouragement('За победу в конкурсе "лучшая кафедра"')
Сотрудник Бобряков Александр Владимирович теперь имеет поощрение: За победу в конкурсе "лучшая кафедра"
>>> emp2.pooshrena
Traceback (most recent call last):
File "<pyshell#108>", line 1, in <module>
emp2.pooshrena
AttributeError: 'Employee' object has no attribute 'pooshrena'. Did you mean: 'pooshrenia'?
>>> emp2.pooshrenia
['За победу в конкурсе "лучшая кафедра"']
```

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

@@ -0,0 +1,98 @@
# Тест по модулю 3
Выполнил: Корнеев М.А.
## Задание
1) Создайте модуль М1, содержащий две функции:
- функция 1: аргумент - имя текстового файла с данными: в каждой строке - название города, число вузов, число студентов в каждом из этих вузов (значения разделены знаком "#"); функция должна прочитать данные из файла, создать из них 3 списка, соответственно, с названиями городов, с числами вузов и со списками чисел студентов - эти списки возвращаются в вызывающую программу;
- функция 2: аргументы - 3 списка, аналогичных результатам функции 1; функция должна создать и вернуть словарь с ключами - названиями городов и значениями - списками с числом вузов в городе и общим числом студентов.
2) Создайте еще один модуль М2, в котором должны выполняться операции:
- запрашивается имя файла с данными, проверяется его наличие и при отсутствии - повторение запроса;
- вызывается функция 1 и отображаются ее результаты;
- вызывается функция 2 со списками, полученными из функции 1, и отображается полученный словарь.
3) Создайте модуль М0 - главную программу, которая вызывает М2, отображает в виде столбиковой диаграммы числа вузов в городах и записывает словарь из функции 2 и списки из функции 1 в бинарный файл с именем, совпадающим с именем текстового файла с исходными данными и с расширением bin,
4) Проверьте работу функции с файлом, в который запишите
Нижний Новгород#6#23000
Краснодар#3#15600
Тамбов#2#12800
Брянск#3#17700
## Решение
M0.py
```py
import M2
import matplotlib.pyplot as plt
import pickle
plt.bar(M2.city, list(map(int,M2.n_vuz)))
plt.ylim(0, 10)
plt.show()
fp=open(f"{M2.f_name.split('.')[0]}.bin",'wb')
pickle.dump(M2.dict1,fp)
pickle.dump(M2.city,fp)
pickle.dump(M2.n_vuz,fp)
pickle.dump(M2.n_studs,fp)
fp.close()
```
M1.py
```py
def read_file(name):
f = open(name, mode = 'r')
sps1 = []
sps2 = []
sps3 = []
for stroka in f:
sps = []
strok=stroka.rstrip('\n')
sps=strok.split('#')
sps1.append(sps[0])
sps2.append(sps[1])
sps3.append(sps[2])
f.close()
return sps1,sps2,sps3
def make_dict(sps1,sps2,sps3):
dict1 = {}
for i in range(len(sps1)):
dict1[sps1[i]] = [sps2[i], sps3[i]]
return dict1
```
M2.py
```py
import os
import M1
flag = True
f_name = ''
while flag:
f_name = input('Введите имя файла: ')
if os.path.isfile(f_name):
flag = False
city, n_vuz, n_studs = M1.read_file(f_name)
print(f'Cities: {city}\nNumber vuz: {n_vuz}\nNumber_studs: {n_studs}')
dict1 = M1.make_dict(city, n_vuz, n_studs)
print(f'Dict: {dict1}')
```
Вывод программы:
```txt
Введите имя файла: test.txt
Cities: ['Нижний Новгород', 'Краснодар', 'Тамбов', 'Брянск']
Number vuz: ['6', '3', '2', '3']
Number_studs: ['23000', '15600', '12800', '17700']
Dict: {'Нижний Новгород': ['6', '23000'], 'Краснодар': ['3', '15600'], 'Тамбов': ['2', '12800'], 'Брянск': ['3', '17700']}
```
![график](Figure_2.png)

4
TEMA9/test.txt Обычный файл
Просмотреть файл

@@ -0,0 +1,4 @@
Нижний Новгород#6#23000
Краснодар#3#15600
Тамбов#2#12800
Брянск#3#17700