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

...

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

Автор SHA1 Сообщение Дата
Пользователь № 7 аудитории Ж-206 2f5ad95d89 module3test
3 дней назад
Пользователь № 7 аудитории Ж-206 cac2f4e015 report added
3 дней назад
Пользователь № 7 аудитории Ж-206 705ac6b6f4 Merge branch 'main' of http://uit.mpei.ru/git/SavinSA/python-labs
3 дней назад
Пользователь № 7 аудитории Ж-206 146d4afe05 indtask9var
3 дней назад
SavinSA ab2420af42 module9 full
3 дней назад
SavinSA c2ac0e7c1f full module8
3 дней назад
SavinSA 020d5eee13 module9 full
3 дней назад
SavinSA 719b887029 full module8
4 дней назад
SavinSA 6bad29193a mergetest
5 дней назад
Пользователь № 9 аудитории Ж-206 0283bcfe26 indtask addded
5 дней назад
SavinSA 2502587199 task added
5 дней назад
SavinSA c42e3a9f92 report full
5 дней назад
Пользователь № 9 аудитории Ж-206 c3ca705250 indtask addded
2 недель назад
SavinSA 9cf6b160e1 task added
2 недель назад
SavinSA 92a96b6b46 report full
2 недель назад
SavinSA 1a37b6390a mergeo
2 недель назад
SavinSA d2624961f3 report first half
2 недель назад
Пользователь № 9 аудитории Ж-206 bec8fdfe0d module test
2 недель назад
SavinSA dfb63b2895 report first half
3 недель назад
SavinSA 330df83e0b merge again
3 недель назад
SavinSA f242b1ef9c indtask added
3 недель назад
Пользователь № 9 аудитории Ж-206 906aeb67c3 module test
1 месяц назад
Пользователь № 9 аудитории Ж-206 1be7f5aa76 Merge branch 'main' of http://uit.mpei.ru/git/SavinSA/python-labs
1 месяц назад
SavinSA 040faf6242 indtask added
1 месяц назад
SavinSA 116920e3c5 indtask added
1 месяц назад
SavinSA e6b7309bc6 merge again
1 месяц назад
SavinSA 6817878ebd changed screenshot
1 месяц назад
Пользователь № 9 аудитории Ж-206 545fcbc623 individual task 24
1 месяц назад
SavinSA af01755cc9 changed screenshot
1 месяц назад
SavinSA bf4918a638 merge some
1 месяц назад
SavinSA 73b0cb0858 report added
1 месяц назад
Пользователь № 9 аудитории Ж-206 180ca3e2d7 individual task 24
1 месяц назад
SavinSA e31314925d task added
2 месяцев назад
SavinSA f0c4e5834d added task
2 месяцев назад
Пользователь № 9 аудитории Ж-206 8eeec64553 personal task 13
2 месяцев назад
SavinSA 61add6cbe4 merge
2 месяцев назад
SavinSA 4103666c30 report no task
2 месяцев назад
Пользователь № 9 аудитории Ж-206 15578754ba personal task 13
2 месяцев назад
SavinSA 5a4421bf33 Merge branch 'main' of http://uit.mpei.ru/git/SavinSA/python-labs
2 месяцев назад
SavinSA 86306314fd test
2 месяцев назад
SavinSA b2b611eb63 report added+photos
2 месяцев назад
SavinSA 2ee8aa2899 report+task
2 месяцев назад
SavinSA fa90ac00b2 report first half
2 месяцев назад
SavinSA 5e908a0f12 added report
2 месяцев назад
SavinSA 5942877cd9 TEMA2 report v2
2 месяцев назад
SavinSA 112ca055da TEMA2 report v1
2 месяцев назад
u207-05 be107f40c8 Task_3: Q&A
2 месяцев назад
u207-05 e34e01b1e9 report v3
2 месяцев назад
u207-05 5ec523cfd4 v3
2 месяцев назад
u207-05 249d1dd95d Task_2 reporn v2
2 месяцев назад
u207-05 4123c770c8 Task_2: report v1
2 месяцев назад
u207-05 fbb7d44706 Task_1: First commit
2 месяцев назад
Пользователь № 9 аудитории Ж-206 5e199363b2 module 1 full test
2 месяцев назад
SavinSA e2752e97c9 report+task
2 месяцев назад
SavinSA 40da83b905 report first half
2 месяцев назад
SavinSA 1d82fffef6 added report
2 месяцев назад
SavinSA 69140eab84 TEMA2 report v2
3 месяцев назад
SavinSA 17841b48b2 TEMA2 report v1
3 месяцев назад
u207-05 3eee856b82 Task_3: Q&A
3 месяцев назад
u207-05 ee7055033d report v3
3 месяцев назад
u207-05 092d7820f2 v3
3 месяцев назад
u207-05 be2feb4df8 Task_2 reporn v2
3 месяцев назад
u207-05 e91ec0837f Task_2: report v1
3 месяцев назад
u207-05 82f210a62b Task_1: First commit
3 месяцев назад

@ -0,0 +1,6 @@
#This is a very profound comment
#Программа по Теме 1 Савин С.А.
print('Hello')
h = input('Your name is -')
import os
os.chdir(r'C:\Users\u207-05\python-labs\TEMA1')

Двоичные данные
TEMA1/pic1.png

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

После

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

Двоичные данные
TEMA1/pic2.png

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

После

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

@ -0,0 +1,127 @@
# Отчет по теме 1
Савин Семён, А-02-23
# Основы языка программирования Python
## Пункты3-5
Через командную строку вы
```py
print('Hello')
h=input('Your name is -')
Hello
Your name is -sam
exit()
```
Программа закрыта (Вся командная строка)
## Пункт 8:
```py
import os
os.chdir(r'C:\Users\u207-05\python-labs\TEMA1')
```
## Пункт 9:
Были изменены параметры текста в редакторе при помощи меню "Options"
## Пункт 10:
Создан новый файл в редакторе написано:
```py
#This is a very profound comment
#Программа по Теме 1 Савин С.А.
print('Hello')
h = input('Your name is -')
import os
os.chdir(r'C:\Users\u207-05\python-labs\TEMA1')
```
Модуль запущен
### Вывод:
```py
= RESTART: C:/Users/u207-05/python-labs/TEMA1/Pr0.py
Hello
Your name is -sam
```
Последняя команда выбора рабочей папки выполнена без ошибок.
Также файл был выполнен следующим образом:
```py
import Pr0
Hello
Your name is -sam
```
И аналогично через клавишу F5 в открытом редакторе.
## Пункт 11:
При помощи повторного вызова команды import вставили имя файла - "prb1"
```py
import prb1
Как Вас зовут? Семён
Привет, Семён
```
## Пункт 12:
В папке __pycache__ нашел файл
pr0.cpython-311, открыл при помощи notepad++
Содержимое:
§
№йєhВ г  уZ —  e d ¦ «   ed¦ « ZddlZ ej d¦ «  dS )ЪHellozYour name is -й Nz"C:\Users\u207-05\python-labs\TEMA1)ЪprintЪinputЪosЪchdir© у ъ)C:\Users/u207-05/python-labs/TEMA1\Pr0.pyъ<module>r  sF рр ЂЂgЃЂШ ЂEР
СФЂШ Ђ Ђ Ђ Ш ЂР .С /Ф /Р /Р /Р /r
Это резльтат компиляции, который выглядит так по причине того, что в данной папке хранятся байт-коды, используемые при запуске программы для увеличения оптимизации.
## Пункт 13:
Пропущен по причине уже созданного файла report.md.
## Пункт 14:
Вызвана команда help по нескольким функциям.
help(print)
Help on built-in function print in module builtins:
print(*args, sep=' ', end='\n', file=None, flush=False)
Prints the values to a stream, or to sys.stdout by default.
sep
string inserted between values, default a space.
end
string appended after the last value, default a newline.
file
a file-like object (stream); defaults to the current sys.stdout.
flush
whether to forcibly flush the stream.
help(print),help(input)
Help on built-in function print in module builtins:
print(*args, sep=' ', end='\n', file=None, flush=False)
Prints the values to a stream, or to sys.stdout by default.
sep
string inserted between values, default a space.
end
string appended after the last value, default a newline.
file
a file-like object (stream); defaults to the current sys.stdout.
flush
whether to forcibly flush the stream.
Help on built-in function input in module builtins:
input(prompt='', /)
Read a string from standard input. The trailing newline is stripped.
The prompt string, if given, is printed to standard output without a
trailing newline before reading input.
If the user hits EOF (*nix: Ctrl-D, Windows: Ctrl-Z+Return), raise EOFError.
On *nix systems, readline is used if available.
Также была найдена запись о функции print() через f1
## Пункт 15:
Были снова выполнены файлы из рабочей папки, проведена работа с окнами.
Результат работы tdemo_chaos:
![Демонстрация хаоса](pic1.png)
Результат работы часов clock из примеров для демо:
![Часы](pic2.png)

@ -0,0 +1,140 @@
<<<<<<< HEAD
# Отчет по теме 1
Савин Семён, А-02-23
# Основы языка программирования Python
=======
# Отчет по ЛР1 Савин С.А.
>>>>>>> e91ec08 (Task_2: report v1)
## Пункты3-5
Через командную строку вы
```py
print('Hello')
h=input('Your name is -')
Hello
Your name is -sam
exit()
```
Программа закрыта (Вся командная строка)
## Пункт 8:
```py
import os
os.chdir(r'C:\Users\u207-05\python-labs\TEMA1')
```
## Пункт 9:
Были изменены параметры текста в редакторе при помощи меню "Options"
## Пункт 10:
Создан новый файл в редакторе написано:
```py
#This is a very profound comment
#Программа по Теме 1 Савин С.А.
print('Hello')
h = input('Your name is -')
import os
os.chdir(r'C:\Users\u207-05\python-labs\TEMA1')
```
Модуль запущен
### Вывод:
```py
= RESTART: C:/Users/u207-05/python-labs/TEMA1/Pr0.py
Hello
Your name is -sam
```
Последняя команда выбора рабочей папки выполнена без ошибок.
Также файл был выполнен следующим образом:
```py
import Pr0
Hello
Your name is -sam
```
И аналогично через клавишу F5 в открытом редакторе.
## Пункт 11:
При помощи повторного вызова команды import вставили имя файла - "prb1"
```py
import prb1
Как Вас зовут? Семён
Привет, Семён
```
## Пункт 12:
В папке __pycache__ нашел файл
pr0.cpython-311, открыл при помощи notepad++
Содержимое:
§
№йєhВ г  уZ —  e d ¦ «   ed¦ « ZddlZ ej d¦ «  dS )ЪHellozYour name is -й Nz"C:\Users\u207-05\python-labs\TEMA1)ЪprintЪinputЪosЪchdir© у ъ)C:\Users/u207-05/python-labs/TEMA1\Pr0.pyъ<module>r  sF рр ЂЂgЃЂШ ЂEР
СФЂШ Ђ Ђ Ђ Ш ЂР .С /Ф /Р /Р /Р /r
Это резльтат компиляции, который выглядит так по причине того, что в данной папке хранятся байт-коды, используемые при запуске программы для увеличения оптимизации.
## Пункт 13:
Пропущен по причине уже созданного файла report.md.
## Пункт 14:
Вызвана команда help по нескольким функциям.
help(print)
Help on built-in function print in module builtins:
print(*args, sep=' ', end='\n', file=None, flush=False)
Prints the values to a stream, or to sys.stdout by default.
sep
string inserted between values, default a space.
end
string appended after the last value, default a newline.
file
a file-like object (stream); defaults to the current sys.stdout.
flush
whether to forcibly flush the stream.
help(print),help(input)
Help on built-in function print in module builtins:
print(*args, sep=' ', end='\n', file=None, flush=False)
Prints the values to a stream, or to sys.stdout by default.
sep
string inserted between values, default a space.
end
string appended after the last value, default a newline.
file
a file-like object (stream); defaults to the current sys.stdout.
flush
whether to forcibly flush the stream.
Help on built-in function input in module builtins:
input(prompt='', /)
Read a string from standard input. The trailing newline is stripped.
The prompt string, if given, is printed to standard output without a
trailing newline before reading input.
If the user hits EOF (*nix: Ctrl-D, Windows: Ctrl-Z+Return), raise EOFError.
On *nix systems, readline is used if available.
Также была найдена запись о функции print() через f1
## Пункт 15:
Были снова выполнены файлы из рабочей папки, проведена работа с окнами.
Результат работы tdemo_chaos:
<<<<<<< HEAD
![Демонстрация хаоса](pic1.png)
Результат работы часов clock из примеров для демо:
![Часы](pic2.png)
=======
![C:\Users\u207-05\python-labs\TEMA1](pic1.png)
Результат работы часов clock из примеров для демо:
>>>>>>> e91ec08 (Task_2: report v1)

@ -0,0 +1,127 @@
# Отчет по теме 1
Савин Семён, А-02-23
# Основы языка программирования Python
## Пункты3-5
Через командную строку вы
```py
print('Hello')
h=input('Your name is -')
Hello
Your name is -sam
exit()
```
Программа закрыта (Вся командная строка)
## Пункт 8:
```py
import os
os.chdir(r'C:\Users\u207-05\python-labs\TEMA1')
```
## Пункт 9:
Были изменены параметры текста в редакторе при помощи меню "Options"
## Пункт 10:
Создан новый файл в редакторе написано:
```py
#This is a very profound comment
#Программа по Теме 1 Савин С.А.
print('Hello')
h = input('Your name is -')
import os
os.chdir(r'C:\Users\u207-05\python-labs\TEMA1')
```
Модуль запущен
### Вывод:
```py
= RESTART: C:/Users/u207-05/python-labs/TEMA1/Pr0.py
Hello
Your name is -sam
```
Последняя команда выбора рабочей папки выполнена без ошибок.
Также файл был выполнен следующим образом:
```py
import Pr0
Hello
Your name is -sam
```
И аналогично через клавишу F5 в открытом редакторе.
## Пункт 11:
При помощи повторного вызова команды import вставили имя файла - "prb1"
```py
import prb1
Как Вас зовут? Семён
Привет, Семён
```
## Пункт 12:
В папке __pycache__ нашел файл
pr0.cpython-311, открыл при помощи notepad++
Содержимое:
§
№йєhВ г  уZ —  e d ¦ «   ed¦ « ZddlZ ej d¦ «  dS )ЪHellozYour name is -й Nz"C:\Users\u207-05\python-labs\TEMA1)ЪprintЪinputЪosЪchdir© у ъ)C:\Users/u207-05/python-labs/TEMA1\Pr0.pyъ<module>r  sF рр ЂЂgЃЂШ ЂEР
СФЂШ Ђ Ђ Ђ Ш ЂР .С /Ф /Р /Р /Р /r
Это резльтат компиляции, который выглядит так по причине того, что в данной папке хранятся байт-коды, используемые при запуске программы для увеличения оптимизации.
## Пункт 13:
Пропущен по причине уже созданного файла report.md.
## Пункт 14:
Вызвана команда help по нескольким функциям.
help(print)
Help on built-in function print in module builtins:
print(*args, sep=' ', end='\n', file=None, flush=False)
Prints the values to a stream, or to sys.stdout by default.
sep
string inserted between values, default a space.
end
string appended after the last value, default a newline.
file
a file-like object (stream); defaults to the current sys.stdout.
flush
whether to forcibly flush the stream.
help(print),help(input)
Help on built-in function print in module builtins:
print(*args, sep=' ', end='\n', file=None, flush=False)
Prints the values to a stream, or to sys.stdout by default.
sep
string inserted between values, default a space.
end
string appended after the last value, default a newline.
file
a file-like object (stream); defaults to the current sys.stdout.
flush
whether to forcibly flush the stream.
Help on built-in function input in module builtins:
input(prompt='', /)
Read a string from standard input. The trailing newline is stripped.
The prompt string, if given, is printed to standard output without a
trailing newline before reading input.
If the user hits EOF (*nix: Ctrl-D, Windows: Ctrl-Z+Return), raise EOFError.
On *nix systems, readline is used if available.
Также была найдена запись о функции print() через f1
## Пункт 15:
Были снова выполнены файлы из рабочей папки, проведена работа с окнами.
Результат работы tdemo_chaos:
![Демонстрация хаоса](pic1.png)
Результат работы часов clock из примеров для демо:
![Часы](pic2.png)

@ -0,0 +1,124 @@
# Отчет по ЛР1 Савин С.А.
## Пункты3-5
Через командную строку вы
```py
print('Hello')
h=input('Your name is -')
Hello
Your name is -sam
exit()
```
Программа закрыта (Вся командная строка)
## Пункт 8:
```py
import os
os.chdir(r'C:\Users\u207-05\python-labs\TEMA1')
```
## Пункт 9:
Были изменены параметры текста в редакторе при помощи меню "Options"
## Пункт 10:
Создан новый файл в редакторе написано:
```py
#This is a very profound comment
#Программа по Теме 1 Савин С.А.
print('Hello')
h = input('Your name is -')
import os
os.chdir(r'C:\Users\u207-05\python-labs\TEMA1')
```
Модуль запущен
### Вывод:
```py
= RESTART: C:/Users/u207-05/python-labs/TEMA1/Pr0.py
Hello
Your name is -sam
```
Последняя команда выбора рабочей папки выполнена без ошибок.
Также файл был выполнен следующим образом:
```py
import Pr0
Hello
Your name is -sam
```
И аналогично через клавишу F5 в открытом редакторе.
## Пункт 11:
При помощи повторного вызова команды import вставили имя файла - "prb1"
```py
import prb1
Как Вас зовут? Семён
Привет, Семён
```
## Пункт 12:
В папке __pycache__ нашел файл
pr0.cpython-311, открыл при помощи notepad++
Содержимое:
§
№йєhВ г  уZ —  e d ¦ «   ed¦ « ZddlZ ej d¦ «  dS )ЪHellozYour name is -й Nz"C:\Users\u207-05\python-labs\TEMA1)ЪprintЪinputЪosЪchdir© у ъ)C:\Users/u207-05/python-labs/TEMA1\Pr0.pyъ<module>r  sF рр ЂЂgЃЂШ ЂEР
СФЂШ Ђ Ђ Ђ Ш ЂР .С /Ф /Р /Р /Р /r
Это резльтат компиляции, который выглядит так по причине того, что в данной папке хранятся байт-коды, используемые при запуске программы для увеличения оптимизации.
## Пункт 13:
Пропущен по причине уже созданного файла report.md.
## Пункт 14:
Вызвана команда help по нескольким функциям.
help(print)
Help on built-in function print in module builtins:
print(*args, sep=' ', end='\n', file=None, flush=False)
Prints the values to a stream, or to sys.stdout by default.
sep
string inserted between values, default a space.
end
string appended after the last value, default a newline.
file
a file-like object (stream); defaults to the current sys.stdout.
flush
whether to forcibly flush the stream.
help(print),help(input)
Help on built-in function print in module builtins:
print(*args, sep=' ', end='\n', file=None, flush=False)
Prints the values to a stream, or to sys.stdout by default.
sep
string inserted between values, default a space.
end
string appended after the last value, default a newline.
file
a file-like object (stream); defaults to the current sys.stdout.
flush
whether to forcibly flush the stream.
Help on built-in function input in module builtins:
input(prompt='', /)
Read a string from standard input. The trailing newline is stripped.
The prompt string, if given, is printed to standard output without a
trailing newline before reading input.
If the user hits EOF (*nix: Ctrl-D, Windows: Ctrl-Z+Return), raise EOFError.
On *nix systems, readline is used if available.
Также была найдена запись о функции print() через f1
## Пункт 15:
Были снова выполнены файлы из рабочей папки, проведена работа с окнами.
Результат работы tdemo_chaos:
![C:\Users\u207-05\python-labs\TEMA1](pic1.png)
Результат работы часов clock из примеров для демо:

@ -0,0 +1,11 @@
# Общее контрольное задание по теме 1
Савин Семён, А-02-23
## Вопрос 3
Что означает название интерактивной оболочки IDLE?
## Ответ
Integrated Development and Learning Environment (Интегрированная среда разработки и обучения)

@ -0,0 +1,531 @@
# Отчет по Теме 2
Савин Семён, А-02-23
## Пункт 2. Изучение простых объектов
Переменным f1 и f2 были присвоены значения (целые числа).
```py
>>> import os
>>> os.chdir ('C:\\Users\\somas\\python-labs\\TEMA2')
>>> f1 = 16; f2 = 3
>>> f1, f2
(16, 3)
>>> f1;f2
16
3
```
Проверяем, какие объекты есть в среде python, а также выводим атрибуты для переменной f1.
```py
>>> 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__', '__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_length', 'conjugate', 'denominator', 'from_bytes', 'imag', 'numerator', 'real', 'to_bytes']
```
Выводим класс переменной f2 и удаляем обе переменные с проверкой удаления.
```py
>>> type (f2)
<class 'int'>
>>> del f1,f2
>>> f1,f2
Traceback (most recent call last):
File "<pyshell#10>", line 1, in <module>
f1,f2
NameError: name 'f1' is not defined
>>> f2
Traceback (most recent call last):
File "<pyshell#11>", line 1, in <module>
f2
NameError: name 'f2' is not defined
```
## Пункт 3. Правила именования объектов
Создал несколько переменных разных типов, а также с неверным названием.
```py
>>> ggl = 1.6
>>> hhl = 'Строка'
>>> 73sr = 3
SyntaxError: invalid syntax
>>> and = 7
SyntaxError: invalid syntax
```
## Пункт 4. Просмотр ключевых слов
Был выведен и сохранен в переменной keylist список ключевых слов.
```py
>>> keyword.kwlist
['False', 'None', 'True', '__peg_parser__', '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']
>>> keylist = keyword.kwlist
>>> keylist
['False', 'None', 'True', '__peg_parser__', 'and', 'as', 'assert', 'async', 'await', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'nonlocal', 'not', 'or', 'pass', 'raise', 'return', 'try', 'while', 'with', 'yield']
```
## Пункт 5. Просмотр встроенных идентификаторов
Получен список встроенных идентификаторов
```py
>>> import builtins
>>> dir(builtins)
['ArithmeticError', 'AssertionError', 'AttributeError', 'BaseException', 'BlockingIOError', 'BrokenPipeError', 'BufferError', 'BytesWarning', 'ChildProcessError', 'ConnectionAbortedError', 'ConnectionError', 'ConnectionRefusedError', 'ConnectionResetError', 'DeprecationWarning', 'EOFError', 'Ellipsis', 'EnvironmentError', 'Exception', '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', 'RecursionError', 'ReferenceError', 'ResourceWarning', 'RuntimeError', 'RuntimeWarning', 'StopAsyncIteration', 'StopIteration', 'SyntaxError', 'SyntaxWarning', 'SystemError', 'SystemExit', 'TabError', 'TimeoutError', 'True', 'TypeError', 'UnboundLocalError', 'UnicodeDecodeError', 'UnicodeEncodeError', 'UnicodeError', 'UnicodeTranslateError', 'UnicodeWarning', 'UserWarning', 'ValueError', 'Warning', 'WindowsError', 'ZeroDivisionError', '_', '__build_class__', '__debug__', '__doc__', '__import__', '__loader__', '__name__', '__package__', '__spec__', 'abs', 'all', '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 - модуль от числа
max/min - вывод максимального/минимального числа для либо списка либо для нескольких перечисленных переменных
len - выводит кол-во объектов в контейнере
pow - возводит число в степень
round - округляет число
sum - дает сумму всех элементов в контейнере
sorted - сортирует по возрастанию элементы в контейнере
zip - "сшивает" значения из одной последовательности значений с соответвтвующими значениями из другой
```py
>>> x = -3
>>> abs(x)
3
>>> pow(x,2)
9
>>> x = 1.576
>>> round(x)
2
>>> x = 1.50
>>> round(x)
2
```
## Пункт 6. Значимость регистра
При присваивании имен переменным важен также регистр букв.
```py
>>> x = 1.576
>>> round(x)
2
>>> x = 1.50
>>> round(x)
2
```
## Пункт 7. Изучение простых базовых типов.
## 7.1. Логический тип
```py
>>> bb1 = True; bb2 = False
>>> bb1,bb2
(True, False)
>>> type(bb1)
<class 'bool'>
```
## 7.2. Другие простые типы
Изучены некоторые другие типы числовых переменных
```py
>>> ii1 = -1234567890
>>> type(ii1)
<class 'int'>
>>> ff1 = -8.9876e-12
>>> type(ff1)
<class 'float'>
>>> dv1 = 0b1101010
>>> type(dv1)
<class 'int'>
>>> vsm1 = 0o52765
>>> shest1 = 0x7109af6
>>> ccl = 2-3j
>>> a = 3.67; b = -0.45
>>> cc2 = complex(a,b)
>>> cc2
(3.67-0.45j)
>>> type(cc2)
<class 'complex'>
```
## 7.3. Строка
Также изучили разные способы вывода простой строки с помощью "экранированных последовательностей"
```py
>>> ss1 = 'this is a string'
>>> print(ss1)
this is a string
>>> ss1a = "this is a \" string \", \n \t printed on two lines"
>>> print(ss1a)
this is a " string ",
printed on two lines
>>> ss1b = "my name is: \n Savin S.A."
>>> print(ss1b)
my name is:
Savin S.A.
```
Также вывели многострочное предложение с помощью тройных кавычек
```py
>>> mnogo="""Нетрудно заметить , что в результате операции
над числами разных типов получается число,
имеющее более сложный тип из тех, которые участвуют в операции."""
>>> print(mnogo)
Нетрудно заметить , что в результате операции
над числами разных типов получается число,
имеющее более сложный тип из тех, которые участвуют в операции.
```
Изучил действия со сторокой - вывд определенных букв по индексу в строке, а так же разрезание строки(с шагами 1 и 2)
```py
>>> ss1[0]
't'
>>> ss1[8]
'a'
>>> ss1[-2]
'n'
>>> ss1[6:9]
's a'
>>> ss1[13:]
'ing'
>>> ss1[5:-8]
'is '
>>> ss1[3:17:2]
'si tig'
>>> ss1[17:3:-2]
'git i'
>>> ss1[-4:3:-2]
'rsas '
```
(Изначальная строка - this is a string)
При изменении строки случается ошибка - так как строка неизменяема. Однако при переопределении можно внести изменения.
```py
>>> ss1[4] = '='
Traceback (most recent call last):
File "<pyshell#88>", line 1, in <module>
ss1[4] = '='
TypeError: 'str' object does not support item assignment
>>> ss1 = ss1[:4] + '+' + ss1[5:]
>>> ss1
'this+is a string'
```
Самостоятельно поработал со строкой ss1b - двухстрочное предложение. А также удалил старые значения x,y, заменив на другие.
Проверил их тип.
```py
>>> ss1b[4:17:2]
'aei:\nSv'
>>> ss1b[16:]
'vin S.A.'
>>> ss1b[14:]
'Savin S.A.'
>>> del x
>>> del y
>>> x = True
>>> y = 14-5j
>>> type(x);type(y)
<class 'bool'>
<class 'complex'>
```
## Пункт 8. Изучение более сложных типов.
## 8.1. Список
Работа со списками - можно задать любые значение и типы. Список - упорядоченная коллекция объектов.
```py
>>> spis1 = [111,'spisok', 5-9j]
>>> spis1
[111, 'spisok', (5-9j)]
>>> stup=[0,0,1,1,1,1,1,1,1]
>>> stup
[0, 0, 1, 1, 1, 1, 1, 1, 1]
>>> spis = [1,2,3,4,
5,6,7,8,
9,10]
>>> spis
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
```
Также по индексу можно сослаться на определенные элементы. Или перечислить с некоторым шагом.
```py
>>> spis[-1]
10
>>> stup[-8::2]
[0, 1, 1, 1]
>>> spis[-9::2]
[2, 4, 6, 8, 10]
```
Списки можно изменять, меняя элементы и переписывая их.
```py
>>> spis1[1] = 'Список'
>>> spis1
[111, 'Список', (5-9j)]
```
len(...) возвращает длину списка(количестево элементов в контейнере)
spis1.append(элемент) добавляет элемент в конец списка
spis1+[элемент] - добавляет элемент на вывод 1 раз. Не вписывает этот элемент в список
spis1.pop(индекс элемента) - удаляет элемент с указанным индексом
spis1.reverse - переворачивает список
spis1.insert(индекс, элемент) - вставляет элемент после элемента с указанным индексом
spis1.extend(список) - присоединяет в конец другой список
spis1.remove(элемент) - удаляет первый встреченный элемент равный указанному
spis1.sort() - сортирует список в порядке возрастания
spis1.copy() - создает поверхностную копию(shallow copy)
spis1.index(элемент) - возвращает индекс первого соответсвующего элемента
spis1.clear() - очищает список
spis1.count(элемент) - считает кол-во соответствующих элементов
```py
>>> len(spis)
10
>>> len(spis1)
3
>>> help(spis1.append)
Help on built-in function append:
append(object, /) method of builtins.list instance
Append object to the end of the list.
>>> spis1.append('New item')
>>> spis1
[111, 'Список', (5-9j), 'New item']
>>> spis1+['Newest item']
[111, 'Список', (5-9j), 'New item', 'Newest item']
>>> spis1
[111, 'Список', (5-9j), 'New item']
>>> spis1.append(ss1b)
>>> spis1
[111, 'Список', (5-9j), 'New item', 'my name is: \n Savin S.A.']
>>> spis1.pop(1)
'Список'
>>> spis1
[111, (5-9j), 'New item', 'my name is: \n Savin S.A.']
>>> spis1.reverse
<built-in method reverse of list object at 0x000001D8904F0C80>
>>> spis1
[111, (5-9j), 'New item', 'my name is: \n Savin S.A.']
>>> spis1.reverse()
>>> spis1
['my name is: \n Savin S.A.', 'New item', (5-9j), 111]
>>> spis1.insert(2, 2+ 2j)
>>> spis1
['my name is: \n Savin S.A.', 'New item', (2+2j), (5-9j), 111]
>>> spis1.extend(spis)
>>> spis1
['my name is: \n Savin S.A.', 'New item', (2+2j), (5-9j), 111, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
>>> spis1.append('New item')
>>> spis1
['my name is: \n Savin S.A.', 'New item', (2+2j), (5-9j), 111, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 'New item']
>>> spis1.remove('New item')
>>> spis1
['my name is: \n Savin S.A.', (2+2j), (5-9j), 111, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 'New item']
>>> spis1.count(1)
1
>>> spis1.index(10)
13
>>> spis.clear()
>>> spis1.clear()
>>> spis1
[]
>>> spis
[]
```
Далее создаем вложенные списки. Здесь я также попробовал применить spis2.copy() и проверить как работает поверхностная копия.
В итоге сделан вывод - изменения в копии не вносятся только на первом уровне. Если поменять вложенный список, то он поменяется и для оригинала.
Тут же я самостоятельно изменил вложенный элемент при помощи append. После изменил значения элемента во вложенном списке.
```py
>>> spis1 = (1,2,3)
>>> spis1 = [1,2,3]
>>> spis1
[1, 2, 3]
>>> spis2 = [spis1,[4,5,6,7]]
>>> spis2
[[1, 2, 3], [4, 5, 6, 7]]
>>> copytest = spis2.copy()
>>> copytest
[[1, 2, 3], [4, 5, 6, 7]]
>>> spis2
[[1, 2, 3], [4, 5, 6, 7]]
>>> copytest.append(3)
>>> copytest
[[1, 2, 3], [4, 5, 6, 7], 3]
>>> spis2
[[1, 2, 3], [4, 5, 6, 7]]
>>> copytest
[[1, 2, 3], [4, 5, 6, 7], 3]
>>> copytest[1].append(2)
>>> copytest
[[1, 2, 3], [4, 5, 6, 7, 2], 3]
>>> spis2
[[1, 2, 3], [4, 5, 6, 7, 2]]
>>> spis2
[[1, 2, 3], [4, 5, 6, 7, 2]]
>>> spis2[0] = 78
>>> spis2
[78, [4, 5, 6, 7, 2]]
```
## 8.2. Кортеж
Работа с кортежами - их нельзя изменять, но можно переопределять, таким образом внося изменения.
```py
>>> kort1 = (222,'Kortezh', 77+8j)
>>> 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, 'my name is: \n Savin S.A.')
>>> kort2 = kort1[:2] + kort1[3:]
>>> kort2
(222, 'Kortezh', 1, 2, 'my name is: \n Savin S.A.')
>>> kort2.index(2)
3
>>> kort2.count(222)
1
>>> kort2[2] = 90
Traceback (most recent call last):
File "<pyshell#227>", line 1, in <module>
kort2[2] = 90
TypeError: 'tuple' object does not support item assignment
```
## 8.3. Словарь
Работа со словарями. Ключи - неизменяемы.
```py
>>> dic1={'Saratov':145, 'Orel':56, 'Vologda':45}
>>> dic1['Orel']
56
>>> dic1['Pskov'] = 78
>>> dic1
{'Saratov': 145, 'Orel': 56, 'Vologda': 45, 'Pskov': 78}
>>> sorted(dic1.keys())
['Orel', 'Pskov', 'Saratov', 'Vologda']
>>> sorted(dic1.values())
[45, 56, 78, 145]
>>> dic1
{'Saratov': 145, 'Orel': 56, 'Vologda': 45, 'Pskov': 78}
>>> dic2={1:'mean', 2:'standart deviation', 3:'correlation'}
>>> 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': 'my name is: \n Savin S.A.'}
>>> dic5 = dict(zip(['A','B','C','Stroka'],[16,-3,9,ss1b]))
>>> dic5
{'A': 16, 'B': -3, 'C': 9, 'Stroka': 'my name is: \n Savin S.A.'}
```
Свой словарь состоит из 5 элементов, потому что мы "сшили" два контейнера, длина определилась по минимальному кол-ву.
```py
>>> testkort = ('B','S','M','H','D','A','R')
>>> testlist = ['bow','sword','mace','helbard','dirk']
>>> dictest=dict(zip(testkort,testlist))
>>> dictest
{'B': 'bow', 'S': 'sword', 'M': 'mace', 'H': 'helbard', 'D': 'dirk'}
```
## 8.4. Множество
Множества могут состоять только из неповторяющихся неизменяемых элементов - при создании множества со списком выведет ошибку.
```py
>>> mnoz1={'двигатель','датчик','линия связи','датчик','микропроцессор','двигатель'}
>>> mnoz1
{'линия связи', 'датчик', 'микропроцессор', 'двигатель'}
>>> len(mnoz1)
4
>>> 'датчик' in mnoz1
True
>>> mnoz1.add('htkt')
>>> mnoz1.remove('htkt')
>>> mnoz1.add('реле')
>>> mnoz1
{'датчик', 'двигатель', 'микропроцессор', 'линия связи', 'реле'}
>>> mnoz1.remove('линия связи')
>>> mnoz1
{'датчик', 'двигатель', 'микропроцессор', 'реле'}
>>> mnoz2 = {'дерево', 15, 78, [6,7,8]}
Traceback (most recent call last):
File "<pyshell#268>", line 1, in <module>
mnoz2 = {'дерево', 15, 78, [6,7,8]}
TypeError: unhashable type: 'list'
>>> kortmnoz = (7,8,7,8)
>>> mnoz2 = {'дерево', 16, 19, kortmnoz}
>>> mnoz2
{16, (7, 8, 7, 8), 19, 'дерево'}
>>> mnoz2.add(kort1)
>>> mnoz2
{(222, 'Kortezh', (77+8j), 1, 2, 'my name is: \n Savin S.A.'), 16, (7, 8, 7, 8), 19, 'дерево'}
>>> mnoz2.remove('дерево')
>>> mnoz2
{(222, 'Kortezh', (77+8j), 1, 2, 'my name is: \n Savin S.A.'), 16, (7, 8, 7, 8), 19}
>>> len(mnoz2)
4
```
# Общее контрольное задаие по теме 2
Савин Семён, А-02-23
## Задание
1) Создать переменную с именем familia и со значением - символьной строкой – своей фамилией в латинской транскрипции.
2) Создать переменную со значением, совпадающим с первой буквой из familia.
3) Создать переменную с именем sp_kw со значением – списком всей ключевых слов языка Python.
4) Удалите из списка sp_kw значение 'nonlocal'. Выводом списка в командном окне IDLE убедитесь, что это значение удалено из списка.
5) Создайте кортеж kort_nam с именами: вашим и еще 3-х студентов из вашей группы. Напишите инструкцию, позволяющую убедиться, что тип переменной – это tuple.
6) Напишите инструкцию, добавляющую в kort_nam имена еще двух студентов.
7) Напишите инструкцию, позволяющую определить, сколько раз в кортеже присутствуют студенты с именем «Дима».
8) Создайте словарь dict_bas, в котором ключами являются русские названия типов переменных, использованных в предыдущих операторах, а значениями – ранее созданные переменные, соответствующие этим типам.
## Решение
```py
>>> familia = 'Savin'
>>> familia
'Savin'
>>> bukva = familia[0]
>>> bukva
'S'
>>> sp_kv = keyword.kwlist
>>> sp_kv
['False', 'None', 'True', '__peg_parser__', '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_kv.remove('nonlocal')
>>> sp_kv
['False', 'None', 'True', '__peg_parser__', '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.count('Дима')
0
>>> dict_bas = {'Строка': [familia,bukva], 'Список': sp_kv, 'Кортеж': kort_nam}
>>> dict_bas
{'Строка': ['Savin', 'S'], 'Список': ['False', 'None', 'True', '__peg_parser__', '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'], 'Кортеж': ('Семён', 'Ярослав', 'Миша')}
```
Для работы со строкой использовал ссылку по индексу, отпечатал первую букву.
Для работы со списком присвоил значению sp_kv keyword.kwlist - это уже список, поэтому без []
В кортеж не записано имен "Дима", kort_nam.count('Дима') выводит 0
Внес в словарь две строки, перед эти объединив их в список - одному ключу одно значение.

@ -0,0 +1,61 @@
# Общее контрольное задание по Теме 3
Савин Семён, А-02-23
## Задание
Реализовать, записать в текстовый файл и проанализировать результаты последовательности инструкций, выполняющих следующие действия:
Преобразовать восьмеричное значение 45 в целое число.
Создать объект-словарь D со значениями {"усиление":23, "запаздывание":12, "постоянная времени":78} и затем осуществить его преобразование в два списка: ключей и значений, а затем – эти два списка преобразовать в один кортеж. Чем отличается кортеж от списка?
Напишите и выполните единое выражение, осуществляющее деление числа 1768 на 24.8 с округлением вниз, с определением после этого остатка от деления получившегося значения на 3 и затем возведения результата в степень 2.4.
Напишите и выполните единое выражение, последовательно осуществляющее следующие операции: двоичное И для чисел 13 и 27, инверсия полученного значения, двоичное исключающее ИЛИ для полученного значения и числа 14, сдвиг полученного значения на два разряда влево.
Создать список с 4 одинаковыми элементами 'колебат' и написать оператор проверки наличия комбинации символов 'аткол' в результате конкатенации второго и третьего элементов этого списка.
Определить список методов, доступных у ранее созданного словаря D. Поочередно использовать его методы keys и values, определить, что можно получить с применением этих методов.
Создать объект - символьную строку с текстом данного предложения. Из символьной строки создать список, элементами которого будут отдельные слова из созданной строки. Заменить в списке элемент «-» на «,». Удалить из списка элемент со значением «данного». Отобразить получившийся список.
## Решение
```py
>>> x = "45"
>>> x = int(x,8)
>>> x
37
>>> D = {"усиление":23, "запаздывание":12, "постоянная времени":78}
>>> Dk = list(D.keys())
>>> Dk
['усиление', 'запаздывание', 'постоянная времени']
>>> Dv = list(D.values())
>>> Dv
[23, 12, 78]
>>> kort = tuple(Dk+Dv)
>>> kort
('усиление', 'запаздывание', 'постоянная времени', 23, 12, 78)
>>> ((1768//24.8)%3)**2.4
5.278031643091577
>>> ((~(13&27))^14)<<2
-32
>>> spis = ["колебат","колебат","колебат","колебат"]
>>> 'аткол' in (spis[1] + spis[2])
True
>>> dir(D)
['__class__', '__class_getitem__', '__contains__', '__delattr__', '__delitem__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__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']
>>> type(D.keys())
<class 'dict_keys'>
>>> type(D.values())
<class 'dict_values'>
>>> stroka = 'Создать объект - символьную строку с текстом данного предложения'
>>> stroka1 = stroka.split()
>>> stroka1
['Создать', 'объект', '-', 'символьную', 'строку', 'с', 'текстом', 'данного', 'предложения']
>>> stroka1[2] = ','
>>> del stroka1[7]
>>> stroka1
['Создать', 'объект', ',', 'символьную', 'строку', 'с', 'текстом', 'предложения']
```

@ -0,0 +1,598 @@
# Отчет по Теме 3
Савин Семён, А-02-23
## Пункт 2. Преобразование простых типов объектов.
## 2.1 Преобразование в логический тип
```py
logiz1 = bool(56)
>>> logiz2 = bool(0)
>>> logiz3 = bool("Beta")
>>> logiz4 = bool("")
>>> logiz1
True
>>> logiz2
False
>>> logiz3
True
>>> logiz4
False
```
## 2.2 Преобразование в целое число
```py
tt1 = int(198.6)
>>> tt2 = int("-76")
>>> tt3 = int("B",16)
>>> tt4 = int("71",8)
>>> tt5 = int("98.76")
Traceback (most recent call last):
File "<pyshell#12>", line 1, in <module>
tt5 = int("98.76")
ValueError: invalid literal for int() with base 10: '98.76'
>>> tt1
198
>>> tt2
-76
>>> tt3
11
>>> tt4
57
```
## 2.3 Преобразование в вещественное число
```py
flt1 = float(789)
>>> flt2 = float(-6.78e2)
>>> flt3 = float ("Infinity")
>>> flt4 = float("-inf")
>>> flt1
789.0
>>> flt2
-678.0
>>> flt3
inf
>>> flt4
-inf
```
## Пункт 3. Преобразование более сложных базовых типов объектов.
## 3.1. Преобразование в строку
```py
>>> strk1 = str(23.6)
>>> strk2 = str(logiz3)
>>> strk3 = str(["A","B","C"])
>>> strk4 = str(("A","B","C"))
>>> strk5=str({"A":1,"B":2,"C":9})
>>> strk1
'23.6'
>>> strk2
'True'
>>> strk3
"['A', 'B', 'C']"
>>> strk4
"('A', 'B', 'C')"
>>> strk5
"{'A': 1, 'B': 2, 'C': 9}"
```
## 3.2. Преобразование в список
```py
>>> spis1 = list("Строка символов")
>>> spis2 = list((124,236,-15,908))
>>> spis3 = list({"A":1,"B":2,"C":9})
>>> spis1
['С', 'т', 'р', 'о', 'к', 'а', ' ', 'с', 'и', 'м', 'в', 'о', 'л', 'о', 'в']
>>> spis2
[124, 236, -15, 908]
>>> spis3
['A', 'B', 'C']
```
## 3.3. Преобразование в кортеж
```py
>>> kort7=tuple('Строка символов')
>>> kort8 = tuple(spis2)
>>> kort9 = tuple({"A":1, "B":2, "C":9})
>>> kort7
('С', 'т', 'р', 'о', 'к', 'а', ' ', 'с', 'и', 'м', 'в', 'о', 'л', 'о', 'в')
>>> kort8
(124, 236, -15, 908)
>>> kort9
('A', 'B', 'C')
```
## 3.4 Удаление объектов
```py
>>> del strk5,kort8
>>> strk5
Traceback (most recent call last):
File "<pyshell#49>", line 1, in <module>
strk5
NameError: name 'strk5' is not defined
>>> kort8
Traceback (most recent call last):
File "<pyshell#50>", line 1, in <module>
kort8
NameError: name 'kort8' is not defined
```
## Пункт 4. Арифметические операции.
## 4.1. Сложение и вычитание
```py
>>> 12+7+90
109
>>> 5.689e-1 - 0.456
0.11289999999999994
>>> 23.6+54
77.6
>>> 14-56.7+89
46.3
```
## 4.2. Умножение
```py
>>> -6.7*12
-80.4
```
## 4.3. Деление
```py
>>> -234.5/6
-39.083333333333336
>>> a=178/45
>>> a
3.9555555555555557
```
## 4.4. Деление с округлением вниз
```py
>>> b=178//45
>>> c=-24.6//12.1
>>> b
3
>>> c
-3.0
```
## 4.5. Получение остатка от деления
```py
>>> 146%33
14
>>> 148%33
16
>>> 12.6%3.8
1.2000000000000002
>>> 11%3.8
3.4000000000000004
>>> 4.0%1.0
0.0
```
## 4.6. Возведение в степень
```py
>>> 14**3
2744
>>> e=2.7**3.6
>>> e
35.719843790663525
>>> 2**4.5
22.627416997969522
>>> g = 14 - 8j
>>> g**2
(132-224j)
>>> g%2
Traceback (most recent call last):
File "<pyshell#79>", line 1, in <module>
g%2
TypeError: can't mod complex numbers.
>>> g//2
Traceback (most recent call last):
File "<pyshell#80>", line 1, in <module>
g//2
TypeError: can't take floor of complex number.
>>> g/2
(7-4j)
>>> g*5
(70-40j)
```
## Пункт 5. Операции с двоичными представлениями целых чисел.
## 5.1. Двоичная инверсия
```py
>>> dv1 = 9
>>> dv2 = ~dv1
>>> bin(dv2)
'-0b1010'
```
## 5.2. Двоичное "И"
```py
>>> bin(7&9)
'0b1'
>>> bin(7&8)
'0b0'
```
## 5.3. Двоичное "ИЛИ"
```py
>>> a = bin(7|9)
>>> b = bin(7|8)
>>> a
'0b1111'
>>> b
'0b1111'
```
## 5.4. Двоичное "исключающее ИЛИ"
```py
>>> c = bin(14^5)
>>> c
'0b1011'
```
## 5.5. Сдвиг двоичного представления
```py
>>> h = 14
>>> bin(h)
'0b1110'
>>> g = h<<2
>>> g
56
>>> bin(g)
'0b111000'
>>> g1 = h>>1
>>> g2 = h>>2
>>> bin(g1), bin(g2)
('0b111', '0b11')
```
## Пункт 6. Операции при работе с последовательностями.
## 6.1. Объединние последовательностей.
```py
'Система '+'регулирования'
'Система регулирования'
>>> ['abc','de','fg']+['hi','jkl']
['abc', 'de', 'fg', 'hi', 'jkl']
>>> ('abc','de','fg')+('hi','jkl')
('abc', 'de', 'fg', 'hi', 'jkl')
```
## 6.2. Повторение последовательностей
```py
>>> 'ля-'*5
'ля-ля-ля-ля-ля-'
>>> ['ку','-']*3
['ку', '-', 'ку', '-', 'ку', '-']
>>> ('кис','-')*4
('кис', '-', 'кис', '-', 'кис', '-', 'кис', '-')
>>> signal1=[0]*3+[1]*99
>>> signal2=(0,)*3+(1,)*5+(0,)*7
>>> 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, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0)
```
## 6.3. Проверка наличия заданного элемента.
```py
stroka='Система автоматического управления'
>>> 'автомат' in stroka
True
>>> 'ку' in ['ку','-']*3
True
>>> 'ля-' in ('abc', 'de', 'fg', 'hi', 'jkl')
False
```
## 6.4. Подстановка значений в строку
```py
>>> stroka='Температура = %g %s %g'
>>> stroka
'Температура = %g %s %g'
>>> stroka % (16, "меньше", 25)
'Температура = 16 меньше 25'
stroka='Температура = %(zn1)g %(sravn)s %(zn2)g'
>>> stroka % {'zn1':16,'sravn':' меньше ','zn2':25}
'Температура = 16 меньше 25'
```
## Пункт 7. Оператор присваивания
## 7.1. Обычное присваивание значения.
```py
zz = -12
```
## 7.2. Увеличение/уменьшение на заданную величину.
```py
>>> zz+=5
>>> zz
-7
>>> zz-=3
>>> zz
-10
>>> stroka = "система"
>>> stroka += " регулирования"
>>> stroka
'система регулирования'
```
## 7.3. Умножение/деление на заданную величину.
```py
>>> zz
-10
>>> zz/=2
>>> zz
-5.0
>>> zz*=5
>>> zz
-25.0
```
## 7.4. Деление с округлением, вычисление остатка и возведение в степень.
```py
>> zz+=2.7
>>> zz
-2.3
>>> zz//=2
>>> zz
-2.0
>>> zz+=8.5
>>> zz
6.5
>>> zz%=4
>>> zz
2.5
>>> zz**=2
>>> zz
6.25
```
## 7.5. Множественное присваивание
```py
>>> w=v=10
>>> n1,n2,n3=(11,-3,'all')
>>> w
10
>>> v
10
>>> n1
11
>>> n2
-3
>>> n3
'all'
>>> n1,n2,n3 = [11,-3,'all']
>>> n1
11
>>> n2
-3
>>> n3
'all'
>>> n1,n2,n3 = {11,-4,'al'}
>>> n1
11
>>> n2
-4
>>> n3
'al'
>>> testdict
{'a': 'test1', 'b': 14, 'c': 'test3'}
>>> n1,n2,n3 = testdict["a"], testdict["b"], testdict["c"]
>>> n1
'test1'
>>> n2
14
>>> n3
'test3'
>>> strka = "ФБВГД"
>>> n1,n2,n3 = strka[1],strka[3], strka[4]
>>> n1
'Б'
>>> n2
'Г'
>>> n3
'Д'
```
## Пункт 8. Логические операции.
## 8.1. Операции сравнения.
```py
>>> w==v
True
>>> w<=v
True
>>> w>=v
True
>>> w>v
False
>>> w<v
False
>>> w
10
>>> v
10
```
## 8.2. Проверка наличия заданного элемента в последовательности, множестве. Наличие ключа в словаре
```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
```
## 8.3. Создание больших логических выражений с использованием соединительных слов.
```py
>>> a = 17
>>> b=-6
>>> (a>=b) and ('book' in mnoz1) and not ('Pskov' in dic1)
True
>>> (a==b) or ("AVTI" in dct1["Institut"])
True
>>> not ("book" in mnoz1) and("Moskow" in dic1)
False
```
## 8.4. Проверка ссылок переменных на один и тот же объект
```py
>>> w=v=10
>>> w is v
True
>>> w1=['A','B']
>>> v1=['A','B']
>>> w1 is v1
False
>>> w1=v1=['A','B']
>>> w1 is v1
True
```
## Пункт 9. Операции с объектами, выполняемые с помощью методов.
## 9.1. Методы для работы со строками.
```py
>>> stroka='Микропроцессорная система управления'
>>> dir(stroka)
['__add__', '__class__', '__contains__', '__delattr__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__getnewargs__', '__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("c")
('Микропроцессорнаясистемауправления', '', '')
>>> stroka3.partition("с")
('Микропроце', 'с', 'сорнаясистемауправления')
>>> stroka3.rpartition("с")
('Микропроцессорнаяси', 'с', 'темауправления')
>>> help(format)
Help on built-in function format in module builtins:
format(value, format_spec='', /)
Return value.__format__(format_spec)
format_spec defaults to the empty string.
See the Format Specification Mini-Language section of help('FORMATTING') for
details.
>>> strk1='Момент времени {}, значение = {}'
>>> strk1.format(1,89.7)
'Момент времени 1, значение = 89.7'
>>> strk2='Момент времени {1}, значение = {0}:{2}'
>>> strk2.format(36.7,2,'норма!')
'Момент времени 2, значение = 36.7:норма!'
>>> strk3='Момент времени {num}, значение = {znch}'
>>> strk3.format(znch=89.7,num=2)
'Момент времени 2, значение = 89.7'
```
## 9.2. Методы работы со списками.
```py
>>> spsk = [1,2,3,4,5,'a','b','c']
>>> spsk.pop(2)
3
>>> spsk.append('c')
>>> spsk
[1, 2, 4, 5, 'a', 'b', 'c', 'c']
>>> spsk.insert(2,'a')
>>> spsk
[1, 2, 'a', 4, 5, 'a', 'b', 'c', 'c']
>>> spsk.count('a')
2
>>> spsk
[1, 2, 'a', 4, 5, 'a', 'b', 'c', 'c']
>>> dir(spsk)
['__add__', '__class__', '__class_getitem__', '__contains__', '__delattr__', '__delitem__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__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']
```
## 9.3. Методы работы с кортежами
```py
>>> kort = (1,2,3,4,5,'a','c')
>>> dir(kort)
['__add__', '__class__', '__class_getitem__', '__contains__', '__delattr__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__getnewargs__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__iter__', '__le__', '__len__', '__lt__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__rmul__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', 'count', 'index']
>>> kort.count(a)
0
>>> kort.count('a')
1
>>> len(kort)
7
```
## 9.4. Методы работы с множествами и словарями
```py
>>> slova = {"A": 123, "B":456}
>>> dir(slova)
['__class__', '__class_getitem__', '__contains__', '__delattr__', '__delitem__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__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']
>>> slova.keys()
dict_keys(['A', 'B'])
>>> slova.items
<built-in method items of dict object at 0x0000022F4A053F00>
>>> mnoz = {1,2,3,4,5,6}
>>> dir(mnoz)
['__and__', '__class__', '__class_getitem__', '__contains__', '__delattr__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__iand__', '__init__', '__init_subclass__', '__ior__', '__isub__', '__iter__', '__ixor__', '__le__', '__len__', '__lt__', '__ne__', '__new__', '__or__', '__rand__', '__reduce__', '__reduce_ex__', '__repr__', '__ror__', '__rsub__', '__rxor__', '__setattr__', '__sizeof__', '__str__', '__sub__', '__subclasshook__', '__xor__', 'add', 'clear', 'copy', 'difference', 'difference_update', 'discard', 'intersection', 'intersection_update', 'isdisjoint', 'issubset', 'issuperset', 'pop', 'remove', 'symmetric_difference', 'symmetric_difference_update', 'union', 'update']
>>> mnoz.pop()
1
>>> mnoz
{2, 3, 4, 5, 6}
```

@ -0,0 +1,94 @@
# Тест по теме 3
Савин Семён, А-02-23
## Вариант 26.
## Вопрос 1. Можно ли с помощью оболочки IDLE создавать загрузочные (ЕХЕ,СОМ) программы?
В самом IDLE нельзя создавать загрузочные файлы, только скрипты, после чего можно преобразовать в сторонних программах.
## Вопрос 2.
Задание: Создайте объект-множество с 8 элементами - статистическими терминами ("среднее значение",:). Напишите инструкцию, доказывающую, что создан объект именно требуемого типа. Напишите инструкцию отображения списка атрибутов созданного объекта.
## Решение
```py
mnozstat = {"среднее значение", "медиана", "дисперсия", "корелляция", "стандартное отклонение", "выборка", "математическое ожидание"}
mnozstat
{'медиана', 'выборка', 'стандартное отклонение', 'корелляция', 'дисперсия', 'математическое ожидание', 'среднее значение'}
type(mnozstat)
<class 'set'>
dir(mnozstat)
['__and__', '__class__', '__class_getitem__', '__contains__', '__delattr__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getstate__', '__gt__', '__hash__', '__iand__', '__init__', '__init_subclass__', '__ior__', '__isub__', '__iter__', '__ixor__', '__le__', '__len__', '__lt__', '__ne__', '__new__', '__or__', '__rand__', '__reduce__', '__reduce_ex__', '__repr__', '__ror__', '__rsub__', '__rxor__', '__setattr__', '__sizeof__', '__str__', '__sub__', '__subclasshook__', '__xor__', 'add', 'clear', 'copy', 'difference', 'difference_update', 'discard', 'intersection', 'intersection_update', 'isdisjoint', 'issubset', 'issuperset', 'pop', 'remove', 'symmetric_difference', 'symmetric_difference_update', 'union', 'update']
```
## Вопрос 3.
Задание: Напишите инструкцию удаления из множества одного из терминов, например, "среднее значение". Добавьте вместо него термин "математическое ожидание". Отобразите на экране получившийся объект.
## Решение
```py
mnozstat
{'медиана', 'выборка', 'стандартное отклонение', 'корелляция', 'дисперсия', 'математическое ожидание', 'среднее значение'}
mnozstat.remove("медиана")
mnozstat
{'выборка', 'стандартное отклонение', 'корелляция', 'дисперсия', 'математическое ожидание', 'среднее значение'}
mnozstat.add("математическое ожидание")
mnozstat
{'выборка', 'стандартное отклонение', 'корелляция', 'дисперсия', 'математическое ожидание', 'среднее значение'}
mnozstat.add("матожидание")
mnozstat
{'матожидание', 'выборка', 'стандартное отклонение', 'корелляция', 'дисперсия', 'математическое ожидание', 'среднее значение'}
```
При добавлении "Математическое ожидание" множество не изменилось, т.к. множество содержит неповторяющиеся объекты.
Доавил вместо этого "матожидание".
## Вопрос 4.
Задание: Преобразуйте множество в список. Отобразите полученный объект. Добавьте в конец списка значение "гетероскедастичность". Напишите инструкцию вывода из этого значения в списке символов, начиная с 7-го и до 13-го.
## Решение
```py
liststat = list(mnozstat)
liststat
['матожидание', 'выборка', 'стандартное отклонение', 'корелляция', 'дисперсия', 'математическое ожидание', 'среднее значение']
liststat.append("гетероскедастичность")
liststat
['матожидание', 'выборка', 'стандартное отклонение', 'корелляция', 'дисперсия', 'математическое ожидание', 'среднее значение', 'гетероскедастичность']
liststat[-1]
'гетероскедастичность'
stringtest=liststat[-1]
stringtest
'гетероскедастичность'
stringtest[6:13]
'скедаст'
```
Два способа - первый не использует дополнительную переменную.
## Вопрос 5.
Задание: Создайте на основе множества словарь, в котором ключи - термины из множества, а значения - код термина (например, число - порядковый номер).
## Решение
```py
slovtest1 = dict(zip(liststat,["M1","M2","M3","M4","M5","M6","M7","M8"]))
slovtest1
{'матожидание': 'M1', 'выборка': 'M2', 'стандартное отклонение': 'M3', 'корелляция': 'M4', 'дисперсия': 'M5', 'математическое ожидание': 'M6', 'среднее значение': 'M7', 'гетероскедастичность': 'M8'}
slovtest.keys()
dict_keys(['матожидание'])
slovtest1.keys()
dict_keys(['матожидание', 'выборка', 'стандартное отклонение', 'корелляция', 'дисперсия', 'математическое ожидание', 'среднее значение', 'гетероскедастичность'])
slovtest1.values()
dict_values(['M1', 'M2', 'M3', 'M4', 'M5', 'M6', 'M7', 'M8'])
slovtest2 = dict(zip(mnozstat,[1,2,3,4,5,6,7,8]))
slovtest2
{'матожидание': 1, 'выборка': 2, 'стандартное отклонение': 3, 'корелляция': 4, 'дисперсия': 5, 'математическое ожидание': 6, 'среднее значение': 7}
```
Через dict(zip()) можно "сшить" и два списка, и список со множеством, чтобысоздать словарь.

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

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

После

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

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

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

После

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

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

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

После

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

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

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

После

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

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

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

После

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

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

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

После

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

@ -0,0 +1,344 @@
# Отчёт по теме 4
Савин Семён, А-02-23
## Пункт 2. Стандартные функции из модуля builtins.
## Пункт 2.1. Округление
```py
Help on built-in function round in module builtins:
round(number, ndigits=None)
Round a number to a given precision in decimal digits.
The return value is an integer if ndigits is omitted or None. Otherwise
the return value has the same type as the number. ndigits may be negative.
>>> round(123.456,1)
123.5
>>> round(123.456,0)
123.0
>>> round(123.456)
123
```
## Пункт 2.2. Создание последовательности
```py
>>> gg = range(76,123,9)
>>> gg
range(76, 123, 9)
>>> list(gg)
[76, 85, 94, 103, 112, 121]
>>> range(23)
range(0, 23) #шаг по умолчанию 1, от 0 до 22.
>>>
```
## Пункт 2.3. Zip
```py
>>> qq = ["Савин", "Мамакин", "Капитонов", "Симанков"]
>>> ff = zip(gg,qq)
>>> tuple(ff)
((76, 'Савин'), (85, 'Мамакин'), (94, 'Капитонов'), (103, 'Симанков'))
>>> ff[1]
Traceback (most recent call last):
File "<pyshell#11>", line 1, in <module>
ff[1]
TypeError: 'zip' object is not subscriptable #нельзя обращаться по индексу
```
## Пункт 2.4. Eval
```py
>>> fff=float(input('коэффициент усиления='))
коэффициент усиления=13
>>> dan = eval('5*fff-156')
>>> dan
-91.0
```
## Пункт 2.5. Exec
```py
>>> exec(input('введите инструкции:'))
введите инструкции:perem=-123.456;gg=round(abs(perem)+98,3)
>>> gg
221.456
>>>
```
## Пункт 2.6. Другие встроенные функции
```py
>>> hi = 6
>>> hello = pow(hi,2)
>>> hello
36
>>> help(divmod)
Help on built-in function divmod in module builtins:
divmod(x, y, /)
Return the tuple (x//y, x%y). Invariant: div*y + mod == x.
>>> divmod(40, 13)
(3, 1)
>>> list(map(len,qq))
[5, 7, 9, 8]
```
## Пункт 3. Модуль Math.
```py
>>> import math
>>> dir(math)
['__doc__', '__loader__', '__name__', '__package__', '__spec__', 'acos', 'acosh', 'asin', 'asinh', 'atan', 'atan2', 'atanh', 'ceil', 'comb', 'copysign', 'cos', 'cosh', 'degrees', 'dist', 'e', 'erf', 'erfc', 'exp', 'expm1', 'fabs', 'factorial', 'floor', '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', 'tan', 'tanh', 'tau', 'trunc', 'ulp']
>>> help(math.factorial)
Help on built-in function factorial in module math:
factorial(x, /)
Find x!.
Raise a ValueError if x is negative or non-integral.
>>> math.factorial(5)
120
>>> math.sin(1565)
0.46785173260407253
>>> math.log10(200)
2.3010299956639813
>>> math.sqrt(36)
6.0
>>> math.sin(2*math.pi/7 + math.exp(0.23))
0.8334902641414562
```
## Пункт 4. Модуль cmath
```py
>>> import cmath
>>> dir(cmath)
['__doc__', '__loader__', '__name__', '__package__', '__spec__', 'acos', 'acosh', 'asin', 'asinh', 'atan', 'atanh', 'cos', 'cosh', 'e', 'exp', 'inf', 'infj', 'isclose', 'isfinite', 'isinf', 'isnan', 'log', 'log10', 'nan', 'nanj', 'phase', 'pi', 'polar', 'rect', 'sin', 'sinh', 'sqrt', 'tan', 'tanh', 'tau']
>>> cmath.sqrt(1.2-0.5j)
(1.118033988749895-0.22360679774997896j)
>>> cmath.phase(1-0.5j)
-0.4636476090008061
>>>
```
## Пункт 5. Модуль random.
```py
>>> help(random.seed)
Help on method seed in module random:
seed(a=None, version=2) method of random.Random instance
Initialize internal state from a seed.
The only supported seed types are None, int, float,
str, bytes, and bytearray.
None or no argument seeds from current time or from an operating
system specific randomness source if available.
If *a* is an int, all bits are used.
For version 2 (the default), all of the bits are used if *a* is a str,
bytes, or bytearray. For version 1 (provided for reproducing random
sequences from older versions of Python), the algorithm for str and
bytes generates a narrower range of seeds.
>>> help(random.seed())
Help on NoneType object:
class NoneType(object)
| Methods defined here:
|
| __bool__(self, /)
| True if self else False
|
| __repr__(self, /)
| Return repr(self).
|
| ----------------------------------------------------------------------
| Static methods defined here:
|
| __new__(*args, **kwargs) from builtins.type
| Create and return a new object. See help(type) for accurate signature.
>>> random.seed()
>>> random.random()
0.23882613686570964
>>> random.uniform(0,1)
0.3999614707805891
>>> random.randint(0,100)
6
>>> random.gauss(2, 10)
5.707349953271636
>>> random.choice([1,2,3,4,5])
2
>>> sp = [1,2,3,4,5,6,7,8,9,10,11]
>>> random.shuffle(sp)
>>> sp
[11, 7, 5, 3, 2, 10, 9, 8, 1, 6, 4]
>>> random.sample(sp,3)
[5, 10, 3]
>>> random.betavariate(0.7,0.7)
0.7563022719328397
>>> random.gammavariate(0.89,0.89)
0.5554159983098497
>>> sp1=[random.random(), random.gauss(0.5,0.5), random.betavariate(0.5,0.5), random.gammavariate(0.5, 0.5)]
>>> sp1
[0.3367662138533899, 0.25139981537793343, 0.6382522055172093, 0.7493560082921834]
```
## Пункт 6. Модуль time.
```py
>>> import time
>>> dir(time)
['_STRUCT_TM_ITEMS', '__doc__', '__loader__', '__name__', '__package__', '__spec__', 'altzone', 'asctime', 'ctime', 'daylight', 'get_clock_info', 'gmtime', 'localtime', 'mktime', 'monotonic', 'monotonic_ns', 'perf_counter', 'perf_counter_ns', 'process_time', 'process_time_ns', 'sleep', 'strftime', 'strptime', 'struct_time', 'thread_time', 'thread_time_ns', 'time', 'time_ns', 'timezone', 'tzname']
>>> c1=time.time()
>>> c2 = time.time() - c1
>>> c2
8.849342107772827
>>> data = time.gmtime()
>>> data.tm_mon
10
>>> data1 = time.localtime()
>>> data1.tm_year
2025
>>> time.asctime(data)
'Mon Oct 13 01:26:52 2025'
>>> time.ctime(123461273)
'Fri Nov 30 01:47:53 1973'
>>> time.mktime(data1)
1760318835.0
>>> time.localtime(c1)
time.struct_time(tm_year=2025, tm_mon=10, tm_mday=13, tm_hour=4, tm_min=26, tm_sec=23, tm_wday=0, tm_yday=286, tm_isdst=0)
>>> time.localtime()
time.struct_time(tm_year=2025, tm_mon=10, tm_mday=13, tm_hour=4, tm_min=28, tm_sec=59, tm_wday=0, tm_yday=286, tm_isdst=0)
>>>
```
## Пункт 7. Модуль Pylab
```py
>>> import pylab
>>> x = list(range(-3,55,4))
>>> t = list(range(15))
>>> pylab.plot(t,x)
[<matplotlib.lines.Line2D object at 0x0000020E0362C670>]
>>> pylab.title('Первый график')
Text(0.5, 1.0, 'Первый график')
>>> pylab.xlabel("Время")
Text(0.5, 0, 'Время')
>>> pylab.ylabel("Сигнал")
Text(0, 0.5, 'Сигнал')
>>> pylab.show()
```
![График 1](1.png)
```py
>>> X1 = [12,6,8,10,7]
>>> X2 = [5,7,9,11,13]
>>> pylab.plot(X1)
[<matplotlib.lines.Line2D object at 0x0000020E01DF7E20>]
>>> pylab.plot(X2)
[<matplotlib.lines.Line2D object at 0x0000020E01E05100>]
>>> pylab.show()
```
![График 2](2.png)
```py
>>> pylab.show()
>>> region=["Центр", "Урал", "Сибирь", "Юг"]
>>> naselen = [65,12,23,17]
>>> pylab.pie(naselen,labels = region)
([<matplotlib.patches.Wedge object at 0x0000020E01FCA910>, <matplotlib.patches.Wedge object at 0x0000020E01FCA850>, <matplotlib.patches.Wedge object at 0x0000020E01FE2250>, <matplotlib.patches.Wedge object at 0x0000020E01FE26D0>], [Text(-0.191013134139045, 1.0832885038559115, 'Центр'), Text(-0.861328292412156, -0.6841882582231001, 'Урал'), Text(0.04429273995539947, -1.0991078896938387, 'Сибирь'), Text(0.9873750693480946, -0.48486129194837324, 'Юг')])
>>> pylab.show()
```
![Диаграмма круговая](Ris2.png)
```py
>>> pylab.hist(X2,5)
(array([1., 1., 1., 1., 1.]), array([ 5. , 6.6, 8.2, 9.8, 11.4, 13. ]), <BarContainer object of 5 artists>)
>>> pylab.show()
>>> pylab.hist(X1,3)
(array([2., 1., 2.]), array([ 6., 8., 10., 12.]), <BarContainer object of 3 artists>)
>>> pylab.show()
```
![Гистограмма 1](hist1.png)
![Гистограмма 2](hist2.png)
```py
>>> pylab.bar(X1,X2)
<BarContainer object of 5 artists>
>>> pylab.show()
```
![Столбиковая диаграмма](bar.png)
## Пункт 8. Модуль statistics
```py
>>> import statistics as stat
>>> dir(stat)
['Counter', 'Decimal', 'Fraction', 'NormalDist', 'StatisticsError', '__all__', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', '_coerce', '_convert', '_exact_ratio', '_fail_neg', '_find_lteq', '_find_rteq', '_isfinite', '_normal_dist_inv_cdf', '_ss', '_sum', 'bisect_left', 'bisect_right', 'erf', 'exp', 'fabs', 'fmean', 'fsum', 'geometric_mean', 'groupby', 'harmonic_mean', 'hypot', 'itemgetter', 'log', 'math', 'mean', 'median', 'median_grouped', 'median_high', 'median_low', 'mode', 'multimode', 'numbers', 'pstdev', 'pvariance', 'quantiles', 'random', 'sqrt', 'stdev', 'tau', 'variance']
>>> stattest = [1,2,65,7,4,32,1,15,45]
>>> stat.median(stattest)
7
>>> stat.mode(stattest)
1
>>> stat.mean(stattest)
19.11111111111111
>>> stat.quantiles(stattest)
[1.5, 7.0, 38.5]
>>>
```
## Общее контрольное задание
## Задание
Реализовать, записать в текстовый файл и проанализировать результаты последовательности инструкций, выполняющих следующие действия:
• Напишите и исполните единое выражение, реализующее последовательное выполнение следующих операций: вычисление фазы комплексного числа 0.2+0.8j, округление результата до двух знаков после запятой, умножение полученного значения на 20, получение кортежа из двух значений: округленное вниз значение от деления результата на 3 и остатка от этого деления.
• Создайте объект класса struct_time с временными параметрами для текущего московского времени. Создайте строку с текущим часом и минутами.
• Создайте список с элементами – названиями дней недели. Сделайте случайную выборку из этого списка с тремя днями недели.
• Напишите инструкцию случайного выбора числа из последовательности целых чисел от 14 до 32 с шагом 3.
• Сгенерируйте нормально распределенное число N с математическим ожиданием 15 и стандартным отклонением 4 и округлите его до целого значения. Создайте список с N элементами – случайно выбранными буквами латинского алфавита.
• Напишите инструкцию для определения временного интервала в минутах, прошедшего с момента предыдущего (из п.2) определения временных параметров.
## Решение
```py
>>> divmod(((round(cmath.phase(0.2+0.8j),2))*20),3)
(8.0, 2.6000000000000014)
>>> tt = time.localtime()
>>> str(tt.tm_hour) + ":" + str(tt.tm_min)
'4:48'
>>> days = ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']
>>> random.sample(days,3)
['Wed', 'Tue', 'Thu']
>>> random.choice(range(14,32,3))
17
>>> round(random.gauss(15,4))
16
>>> random.sample(['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z'], round(random.gauss(15,4)))
['c', 't', 'n', 'q', 'p', 'x', 'o', 'y', 'v', 'a', 'i', 'r', 'd']
>>> (time.time() - time.mktime(tt))/60
5.181675366560618
>>>
```

@ -0,0 +1,27 @@
## Индивидуальное задание по Теме 4.
Савин Семён, А-02-23
## Вариант 13. Задание
Зафиксируйте текущее Московское время и запишите его в переменную. Создайте список с элементами, равномерно размещенными в диапазоне от 0 до 240 с шагом, равным значению часа в текущем времени. Подсчитайте число элементов в списке. Сделайте задержку исполнения программы на 7 сек. Выведите на экран сообщение: «Число элементов =<значение>».
## Решение
```py
data1 = time.localtime()
data1
time.struct_time(tm_year=2025, tm_mon=10, tm_mday=13, tm_hour=14, tm_min=5, tm_sec=20, tm_wday=0, tm_yday=286, tm_isdst=0)
data1
hour = data1.tm_hour
hour
14
rangetest = range(0,241,hour)
rangetest
range(0, 241, 14)
rangelist = list(rangetest)
rangelist
[0, 14, 28, 42, 56, 70, 84, 98, 112, 126, 140, 154, 168, 182, 196, 210, 224, 238]
time.sleep(7); print('число элементов = ', len(rangelist))
число элементов = 18
```

Двоичные данные
TEMA5/1.png

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

После

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

Двоичные данные
TEMA5/2.png

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

После

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

@ -0,0 +1,32 @@
# Индивидуальное задание по теме 5
Савин Семён, А-02-23
## Задание
Создайте словарь с 30 элементами, состоящими из ключей – целых чисел от 0 до 29, и значений – случайных, равномерно распределенных чисел в интервале значений от -10 до +7. Рассчитайте сумму неотрицательных значений из словаря и отобразите её в виде строки: «Сумма неотрицательных значений словаря= XXX»
## Решение
```py
>>> import random
>>> dic = {}
>>> for i in range(30):
... dic[i] = random.uniform(-10,7)
...
...
>>> dic
{0: 2.702699921460894, 1: -9.313799222713357, 2: 1.745150913860483, 3: 2.2713258625881334, 4: -4.204720276118, 5: -9.86298962222136, 6: 1.6909669546619206, 7: 6.653028615635439, 8: -0.602447489888629, 9: -0.22554068075154987, 10: 6.635735241625408, 11: 6.9674957633743055, 12: 1.302255015488445, 13: -7.544626666322164, 14: 4.920064297002757, 15: -1.1750801046722401, 16: 0.533269283762408, 17: 1.3690999434519036, 18: -9.961061355462801, 19: -7.606628471809557, 20: -9.407647840692164, 21: -9.48331386837302, 22: 0.4328807007084503, 23: -5.682208298228706, 24: -3.3609835072871173, 25: 6.440617938001598, 26: 1.4526538850069457, 27: 1.5744886145201402, 28: -1.6853041418731678, 29: -5.310800997844408}
>>> summap = 0
>>> for key in dic:
... if dic[key] >= 0:
... summap += dic[key]
...
...
>>> summap
46.691732951149234
>>> print('Сумма неотрицательных значений словаря = ' , summap)
Сумма неотрицательных значений словаря = 46.691732951149234
```

@ -0,0 +1,316 @@
# Отчёт по теме 5.
Савин Семён, А-02-23
## Пункт 2.
Изучено ветвление по условию. Разные способы и формы использования конструкций с if, elif, else.
```py
>>> porog = 10
>>> rashod1 = 15
>>> rashod = 20
>>> if rashod>=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
12
>>> if porog ==3:
dohod =1
elif porog == 4:
dohod=2
elif porog ==5:
dohod=3
else:
dohod=0
>>> dohod
0
>>> if porog>=5:rashod1=6;rashod2 =0
>>>
>>> rashod1
6
>>> rashod2
0
```
## Пункт 3. Цикл по перечислению, использование for.
## Пункт 3.1. Простой цикл.
```py
>>> temperatura = 5
>>> for i in range(3,18,3):
temperatura+=i
>>> temperatura
50
```
## Пункт 3.2. Более сложный цикл
```py
>>> 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]
```
Разница в том, что цикл for в первом случае каждый раз работает с увеличивающимся списком, и заканчивается только когда случится break.
Второй цикл закончится после четырех итераций - по длине неполной копии (shallow copy) изначального списка.
## Пункт 3.3.
```py
>>> 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)
471
>>> for i in range(10):
sps5.append(rn.randint(1,100))
ss=sum(sps5)
if ss>500:break
else:
print(ss)
>>> ss
544
>>> for i in range(10):
sps5.append(rn.randint(1,100))
ss=sum(sps5)
if ss>500:
print(ss); break
else:
print(ss)
575
```
ss не выводится, т.к. в случае превышения суммы 500, есть только break, но нет выполнения команды вывода ответа.
В третьем вызове добавил выполнение команды print(ss), потом break.
## Пункт 3.4. Пример работы с символьной строкой.
```py
>>> stroka
'Это - автоматизированная системаЭто - автоматизированная система'
>>> stroka = 'Это - автоматизированная система'
>>> stroka1 = ''
>>> for ss in stroka:
stroka1+=''+ss
>>> stroka1
'Это - автоматизированная система'
```
Пункт 3.5. Запись цикла в строке
```py
>>> import math
>>> sps2=[math.sin(i*math.pi/5+2) for i in range(100)]
>>> import pylab
>>> pylab.plot(sps2)
[<matplotlib.lines.Line2D object at 0x000001BAE2E31670>]
>>> pylab.show()
```
![Полученный график] (1.png)
## Пункт 4. Цикл While
## Пункт 4.1. Цикл со счетчиком
```py
>>> while rashod:
print('Расход=', rashod)
rashod-=50
Расход= 300
Расход= 250
Расход= 200
Расход= 150
Расход= 100
Расход= 50
```
Цикл while заканчивается тогда когда число rashod достигает 0, так как условие больше не соблюдается.
## Пункт 4.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
>>> pylab.plot(sps2)
[<matplotlib.lines.Line2D object at 0x000001BAE5165BB0>]
>>> pylab.show()
```
![Полученный график] (2.png)
##4.3. Определение является ли число простым
```py
>>> pylab.show()
>>> chislo = 267
>>> kandidat = chislo//2
>>> while kandidat>1:
if chislo%kandidat==0:
print(chislo, ' имеет множитель ', kandidat)
break
kandidat -= 1
else:
print(chislo, 'является простым')
267 имеет множитель 89
>>> for i in range(250,301):
chislo = i
kandidat = chislo//2
while kandidat>1:
if chislo%kandidat==0:
print(chislo, ' имеет множитель ', kandidat)
break
kandidat-=1
else:
print(chislo, ' является простым')
250 имеет множитель 125
251 является простым
252 имеет множитель 126
253 имеет множитель 23
254 имеет множитель 127
255 имеет множитель 85
256 имеет множитель 128
257 является простым
258 имеет множитель 129
259 имеет множитель 37
260 имеет множитель 130
261 имеет множитель 87
262 имеет множитель 131
263 является простым
264 имеет множитель 132
265 имеет множитель 53
266 имеет множитель 133
267 имеет множитель 89
268 имеет множитель 134
269 является простым
270 имеет множитель 135
271 является простым
272 имеет множитель 136
273 имеет множитель 91
274 имеет множитель 137
275 имеет множитель 55
276 имеет множитель 138
277 является простым
278 имеет множитель 139
279 имеет множитель 93
280 имеет множитель 140
281 является простым
282 имеет множитель 141
283 является простым
284 имеет множитель 142
285 имеет множитель 95
286 имеет множитель 143
287 имеет множитель 41
288 имеет множитель 144
289 имеет множитель 17
290 имеет множитель 145
291 имеет множитель 97
292 имеет множитель 146
293 является простым
294 имеет множитель 147
295 имеет множитель 59
296 имеет множитель 148
297 имеет множитель 99
298 имеет множитель 149
299 имеет множитель 23
300 имеет множитель 150
```

@ -0,0 +1,112 @@
# Общее контрольное задание по Теме 5
Савин Семён, А-02-23
## Задание
Реализовать, записать в текстовый файл программы и результаты их выполнения при решении следующих задач:
• Для заданной символьной строки с англоязычным текстом (его можно заимствовать из помо-щи) определите порядковый номер каждой буквы в английском алфавите.
• Создайте список со словами из задания данного пункта. Для этого списка – определите, есть ли в нем некоторое заданное значение, и выведите соответствующее сообщение: либо о нахожде-нии элемента, либо о его отсутствии в списке (проверить как с имеющимся, так и с отсутству-ющим словом).
• Создайте список студентов вашей группы (3-4 фамилии) и список их средних баллов в летней сессии – в порядке перечисления студентов в первом списке. Создайте еще 2 аналогичных списка для тех же студентов, но в другом порядке, по зимней сессии. Напишите инструкции, позволяющие по указанной (запрошенной и введенной) фамилии студента вывести его средние баллы по двум сессиям.
## Решение
```py
#Решение задачи 1
>>> st = 'Traceback (most recent call last)'
>>> bukv = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j' 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z']
>>> for i in st:
if i.lower() in bukv:
print (i , '-' (''.join(bukv)).find(i.lower()) + 1)
SyntaxError: 'str' object is not callable; perhaps you missed a comma?
>>> for i in st:
if i.lower() in bukv:
print (i , '-', (''.join(bukv)).find(i.lower()) + 1)
T - 20
r - 18
a - 1
c - 3
e - 5
b - 2
a - 1
c - 3
m - 13
o - 15
s - 19
t - 20
r - 18
e - 5
c - 3
e - 5
n - 14
t - 20
c - 3
a - 1
l - 12
l - 12
l - 12
a - 1
s - 19
t - 20
#Решение задачи 2
>>> spis = 'Создайте список со словами из задания данного пункта. Для этого списка – определите, есть ли в нем некоторое заданное значение, и выведите соответствующее сообщение: либо о нахожде-нии элемента, либо о его отсутствии в списке (проверить как с имеющимся, так и с отсутствующим словом).'
>>> ch = True
>>> while ch == True:
check = input('Введите слово для поиска: ')
for i in range (len(s)):
if s[i] == check:
print('есть!')
ch = False
break
else:
if i == len(s)-1:
print('нет!')
ch = False
Введите слово для поиска: словами
есть!
>>> ch = True
>>> while ch == True:
check = input('Введите слово для поиска: ')
for i in range (len(s)):
if s[i] == check:
print('есть!')
ch = False
break
else:
if i == len(s)-1:
print('нет!')
ch = False
Введите слово для поиска: сло
нет!
#Задание 3
>>> stud = ['Савин', 'Мамакин', 'Киреев', 'Капитонов']
>>> l = [3.78, 4.3, 4.85, 4.43]
>>> studz = ['Мамакин', 'Савин', "Капитонов", "Киреев"]
>>> z = [4.6, 3.9, 4.52, 4.91]
>>> checkf = input('Введите фамилию')
Введите фамилиюСавин
>>> for i in range(len(stud)):
if stud[i] == checkf:
print('Средний балл за лето - ', l[i])
if studz[i] == checkf:
print('Средний балл за зиму - ', z[i])
Средний балл за лето - 3.78
Средний балл за зиму - 3.9
```

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

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

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

После

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

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

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

После

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

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

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

После

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

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

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

После

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

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

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

После

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

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

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

После

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

Двоичные данные
TEMA6/indbin.mnz

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

@ -0,0 +1,55 @@
# Общее контрольное задание по теме 6
Савин Семён, А-02-23
## Задание
Придумайте инструкции и запишите их в файл с расширением .py , которые выполняют следую-щие операции:
• Создаётся объект-кортеж со 125 целыми случайными числами из диапазона от 6 до 56, представленными в виде символьных строк.
• Создаётся объект-список с вашей фамилией и 4 фамилиями ваших одноклассников.
• Записывается кортеж в бинарный файл.
• Записывается в этот же файл список и закрывается файл.
• Открывается этот файл для чтения и считывает из него данные в 2 новых объекта.
• Проверяется на совпадение новых объектов с исходными и выводится соответствующее сообщение.
• Разделяется кортеж на совокупности по 5 чисел в каждой и они записываются в виде от-дельных списков со своими именами.
## Решение
```py
import os
import random
import pickle
os.chdir('C:\\Users\\somas\\python-labs\\TEMA6')
random.seed()
kor = tuple(str(random.randint(6,56)) for i in range(125))
print(kor)
famil = ['Савин', 'Мамакин', 'Криви', 'Капитонов', 'Киреев']
fp = open('indbin.mnz', 'wb')
pickle.dump(kor,fp)
pickle.dump(famil, fp)
fp.close()
fp = open('indbin.mnz', 'rb')
obj1 = pickle.load(fp)
obj2 = pickle.load(fp)
if obj1 == kor and obj2 == famil:
print('Совпало')
for i in range(0,len(kor), 5):
exec(f'spis{i} = kor[i:i+5]')
print(spis0)
```
Результат работы модуля:
```py
================================= RESTART: C:\Users\somas\python-labs\TEMA6\task.py ================================
('7', '43', '21', '8', '44', '38', '24', '33', '17', '54', '23', '25', '39', '42', '33', '30', '37', '42', '25', '40', '11', '42', '48', '19', '22', '24', '16', '17', '53', '50', '41', '34', '56', '49', '22', '13', '50', '56', '50', '11', '27', '8', '30', '46', '36', '10', '25', '6', '32', '48', '22', '15', '31', '13', '18', '55', '41', '35', '6', '38', '7', '20', '13', '9', '48', '56', '6', '34', '22', '32', '49', '45', '34', '55', '37', '24', '31', '26', '51', '48', '7', '37', '18', '56', '9', '43', '55', '28', '56', '18', '13', '21', '37', '31', '12', '19', '24', '38', '20', '25', '24', '6', '40', '49', '52', '24', '16', '47', '46', '42', '26', '45', '6', '45', '54', '6', '27', '40', '50', '29', '28', '24', '30', '11', '43')
Совпало
('7', '43', '21', '8', '44')
```

@ -0,0 +1,80 @@
# Тест по модулю 2
Савин Семён, А-02-23
## Задание (Вариант 2)
1) Запросите у пользователя и введите две границы: XL и XU интервала значений некоторой переменной.
2) Создайте список с 59 случайными равномерно распределенными числами из заданного пользователем диапазона значений.
3) Разделите этот диапазон на 5 одинаковых непересекающихся интервалов и подсчитайте число элементов списка в каждом таком интервале. Отобразите результат на экране.
4) Для контроля рассчитайте сумму чисел элементов и отобразите по шаблону: "Общее число элементов в списке =ХХ".
5) Выведите список в текстовый файл по 4 числа на строке с разделением их запятыми.
## Решение
```py
import os
import random
os.chdir ('C:\\Users\\u206-09\\Desktop\\python-labs\\TEMA6')
XL = float(input("Нижняя граница"))
Нижняя граница15
XU = float(input('Верхняя граница'))
Верхняя граница48
rannum = [random.uniform(XL,XU) for i in range(59)]
rannum
[44.33429235528566, 31.820431363385882, 20.71109812778893, 18.375167238126423, 29.507081962303058, 28.39746206639243, 42.445363903985545, 38.45520256573554, 33.29746000380693, 32.04861929535236, 38.776674170573614, 24.526054455786053, 19.042823522968227, 46.19636662677563, 32.322393521553494, 36.72731850346737, 42.19758701932, 47.17300510987348, 35.40764757467959, 44.0228687502407, 37.42128632267817, 40.73000894105289, 36.188263215335496, 19.228399965731327, 32.509044599774654, 33.063795297569655, 16.51622853734086, 27.043696679512326, 38.76688110687924, 41.694563548299456, 18.090256790951102, 24.146622589551626, 46.022240775849156, 27.337873436434855, 25.818198487764242, 17.620887117317903, 41.7772634578061, 28.955963377133557, 20.732440239488263, 43.836130799227604, 36.38313005309695, 23.39900028180741, 18.487299665381805, 44.1365158534337, 28.29061567973843, 46.554219745084914, 27.41669047229879, 18.585108121517557, 33.24982188391494, 44.60821739112903, 18.526684849434446, 45.13480541690015, 26.40627485198803, 38.58591180454186, 21.99657237743291, 36.134907564652366, 33.973323777969625, 35.21691704933769, 29.653627985382343]
interval = (XU-XL)/5
for i in range(5):
low = XL+i*interval
up = XL+(i+1)*interval
for j in rannum:
if (j <= up and j >= low):
k+=1
print('Кол-во эл-тов в диапазоне ', low, ', ', up, ' - ', k)
k = 0
Кол-во эл-тов в диапазоне 15.0 , 21.6 - 11
Кол-во эл-тов в диапазоне 21.6 , 28.2 - 9
Кол-во эл-тов в диапазоне 28.2 , 34.8 - 13
Кол-во эл-тов в диапазоне 34.8 , 41.4 - 12
Кол-во эл-тов в диапазоне 41.4 , 48.0 - 14
count = 0
for i in rannum:
count+=1
print('Кол-во элементов в списке - ', count)
Кол-во элементов в списке - 59
fp = open('modultest2.txt', 'w')
for i in range (0, len(rannum), 4):
ch = rannum[i:i+4]
line = ', '.join(map(str, ch))
fp.write(line + '\n')
77
77
77
77
71
77
78
78
79
77
75
77
76
76
58
fp.close()
```
![Результат записи в файл](img6.png)

@ -0,0 +1,15 @@
44.33429235528566, 31.820431363385882, 20.71109812778893, 18.375167238126423
29.507081962303058, 28.39746206639243, 42.445363903985545, 38.45520256573554
33.29746000380693, 32.04861929535236, 38.776674170573614, 24.526054455786053
19.042823522968227, 46.19636662677563, 32.322393521553494, 36.72731850346737
42.19758701932, 47.17300510987348, 35.40764757467959, 44.0228687502407
37.42128632267817, 40.73000894105289, 36.188263215335496, 19.228399965731327
32.509044599774654, 33.063795297569655, 16.51622853734086, 27.043696679512326
38.76688110687924, 41.694563548299456, 18.090256790951102, 24.146622589551626
46.022240775849156, 27.337873436434855, 25.818198487764242, 17.620887117317903
41.7772634578061, 28.955963377133557, 20.732440239488263, 43.836130799227604
36.38313005309695, 23.39900028180741, 18.487299665381805, 44.1365158534337
28.29061567973843, 46.554219745084914, 27.41669047229879, 18.585108121517557
33.24982188391494, 44.60821739112903, 18.526684849434446, 45.13480541690015
26.40627485198803, 38.58591180454186, 21.99657237743291, 36.134907564652366
33.973323777969625, 35.21691704933769, 29.653627985382343

@ -0,0 +1,282 @@
#Отчет по теме 6
Савин Семён, А-02-23
## Пункт 2.1. Эхо-вывод
```py
>>> stroka = 'Автоматизированная система управления'
>>> stroka
'Автоматизированная система управления'
```
## Пункт 2.2. Печать
```py
>>> fff = 234.5; gg = 'Значение температуры = '
>>> print(gg,fff)
Значение температуры = 234.5
>>> print(gg,fff, sep = '/')
Значение температуры = /234.5
>>> print(gg,fff,sep='/', end = '***'); print('___')
Значение температуры = /234.5***___
>>> print("""Здесь может выводиться
большой текст,
анимающий несколько строк""")
Здесь может выводиться
большой текст,
анимающий несколько строк
>>> print('Здесь моет находиться',)
Здесь моет находиться
>>> print('Здесь может находиться',
"большой текст,",
"занимающий несколько строк")
Здесь может находиться большой текст, занимающий несколько строк
```
## Пункт 2.3. Функция write
```py
>>> import sys
>>> sys.stdout.write('Функция write')
Функция write13
>>> sys.stdout.write('Функция write\n')
Функция write
14
```
## Пункт 3. Ввод с клавиатуры
```py
>>> psw = input('Введите пароль:')
Введите пароль:12345
>>> psw
'12345'
>>> while True:
znach = float(input('Задайте коэф. усиления = '))
if znach < 17.5 or znach > 23.8:
print('Ошибка')
else:
break
Задайте коэф. усиления = 50
Ошибка
Задайте коэф. усиления = 14
Ошибка
Задайте коэф. усиления = 21
>>> znach
21.0
>>> import math
>>> print(eval(input('введите выражение для расчёта = ')))
введите выражение для расчёта = math.log10(23/(1+math.exp(-3.24)))
1.34504378689765
```
## Пункт 4.
## Пункт 4.1. Модуль os, работа с путями
```py
>>> import os
>>> os.chdir ('C:/Users/somas/python-labs/TEMA6')
>>> os.getcwd()
'C:\\Users\\somas\\python-labs\\TEMA6'
>>> savin = os.getcwd()
>>> savin
'C:\\Users\\somas\\python-labs\\TEMA6'
>>> print(savin)
C:\Users\somas\python-labs\TEMA6
>>> os.mkdir("C:/Users/somas/python-labs/TEMA6/TEST")
>>> os.listdir("C:/Users/somas/python-labs/TEMA6")
['.gitkeep', 'img1.png', 'report.md', 'TEST']
>>> os.path.isdir("C:/Users/somas/python-labs/TEMA6")
True
>>> os.path.isdir("C:/Users/somas/python-labs/TEMA")
False
>>> os.rmdir("C:/Users/somas/python-labs/TEMA6/TEST")
>>> os.listdir("C:/Users/somas/python-labs/TEMA6")
['.gitkeep', 'img1.png', 'report.md']
>>> head, tail = os.path.split(savin)
>>> print(head)
C:\Users\somas\python-labs
>>> print(tail)
TEMA6
>>> os.path.exists("U:/Blasphemous 2")
True
>>> os.path.exists("U:/NONE")
False
```
![Скриншот созданной папки TEST](img1.png)
## Пункт 4.2 - 4.4. Изучение процесса работы с файлом, изучение функций открытия и закрытия файла.
```py
>>> drk = ("C:/Users/somas/python-labs/TEMA6")
>>> fp = open(file=drk+'/zapis1.txt', mode = 'w')
>>> dir(fp)
['_CHUNK_SIZE', '__class__', '__del__', '__delattr__', '__dict__', '__dir__', '__doc__', '__enter__', '__eq__', '__exit__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__iter__', '__le__', '__lt__', '__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']
>>> fp1 = open('zapis2.bin', mode='wb+')
>>> fp.close()
```
## Пункт 4.5. Запись данных в файл
```py
>>> sps = list(range(1,13))
>>> fp2 = open('zapis3.txt', 'w')
>>> fp2.write(str(sps[:4]) + "\n")
13
>>> fp2.write(str(sps[4:8]) + "\n")
13
>>> fp2.write(str(sps[8:]) + "\n")
16
>>> fp2.close()
>>> fp3.close()
>>> fp3 = open('zapis4.txt', 'w')
>>> for i in range(len(sps3)):
stroka4=sps3[i][0] + ' ' + str(sps3[i][1])
fp3.write(stroka4)
11
11
12
>>> fp3.close()
>>> gh = open('zapis5.txt', 'w')
>>> for r in sps3:
gh.write(r[0] + ' ' + str(r[1]) + '\n')
12
12
13
>>> gh.close()
>>> gh=open('zapis5.txt','w')
>>> for r in sps3: gh.write(r[0]+' '+str(r[1])+'\n')
```
![Скриншот содержания файла zapis3](img2.png)
![Скриншот содержания файла zapis4](img3.png)
![Скриншот содержания файла zapis5](img4.png)
## Пункт 4.6. Способ чтения данных из файла
```py
>>> fp = open('zapis3.txt')
>>> for stroka in fp:
stroka = stroka.rstrip('\n')
stroka = stroka.replace('[', '')
stroka = stroka.replace(']', '')
sps1 = sps1+stroka.split(',')
>>> fp.close()
>>> sps1
['1', ' 2', ' 3', ' 4', '5', ' 6', ' 7', ' 8', '9', ' 10', ' 11', ' 12']
>>> sps
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]
>>> sps2 = []
>>> for i in sps1:
sps2.append(int(i))
>>> sps2
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]
```
## Пункт 4.7. Чтение данных через read
```py
>>> fp = open('zapis3.txt')
>>> stroka1=fp.read(12)
>>> stroka2 = fp.read()
>>> fp.close()
>>> stroka1; stroka2
'[1, 2, 3, 4]'
'\n[5, 6, 7, 8]\n[9, 10, 11, 12]\n'
```
## Пункт 4.8. Чтение данных через readline и readlines
```py
>>> strokatest = fp.readline()
>>> strokatest
'[1, 2, 3, 4]\n'
>>> for line in fp:
print(line.rstrip())
[5, 6, 7, 8]
[9, 10, 11, 12]
>>> strokatest2 = fp.readlines()
>>> strokatest2
[]
>>> fp.close()
>>> fp = open('zapis3.txt')
>>> strokatest2 = fp.readlines()
>>> strokatest2
['[1, 2, 3, 4]\n', '[5, 6, 7, 8]\n', '[9, 10, 11, 12]\n']
```
## Пункт 4.9. Изучение модуля pickle
```py
>>> import pickle
>>> mnoz1={'pen','book','pen','iPhone','table','book'}
>>> fp = open('zapis6.mnz', 'wb')
>>> pickle.dump(mnoz1,fp)
>>> fp.close()
>>> fp = open('zapis6.mnz', 'rb')
>>> mnoz2 = pickle.load(fp)
>>> fp.close()
>>> mnoz2
{'iPhone', 'book', 'pen', 'table'}
>>> 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', 'book', 'pen', 'table'}
>>> obj2
[['Иванов И.', 1], ['Петров П.', 2], ['Сидоров С.', 3]]
```
## Пункт 5. Перенаправление потоков ввода и вывода данных
```py
>>> import sys
>>> vr_out=sys.stdout
>>> fc = open('Stroka.txt', 'w')
>>> sys.stdout = fc
>>> print('Запись строки в файл')
>>> sys.stdout=vr_out
>>> print('Запись строки на экран')
Запись строки на экран
>>> fc.close()
>>> 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
```
![Скриншот содержания файла Stroka](img5.png)

@ -0,0 +1,20 @@
import os
import random
import pickle
os.chdir('C:\\Users\\somas\\python-labs\\TEMA6')
random.seed()
kor = tuple(str(random.randint(6,56)) for i in range(125))
print(kor)
famil = ['Савин', 'Мамакин', 'Криви', 'Капитонов', 'Киреев']
fp = open('indbin.mnz', 'wb')
pickle.dump(kor,fp)
pickle.dump(famil, fp)
fp.close()
fp = open('indbin.mnz', 'rb')
obj1 = pickle.load(fp)
obj2 = pickle.load(fp)
if obj1 == kor and obj2 == famil:
print('Совпало')
for i in range(0,len(kor), 5):
exec(f'spis{i} = kor[i:i+5]')
print(spis0)

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

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

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

Двоичные данные
TEMA6/zapis6.mnz

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

Двоичные данные
TEMA6/zapis7.2ob

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

@ -0,0 +1,62 @@
# Индивидуальное задание к теме 7
Савин Семён, А-02-23
## Вариант 9
## Задание
Разработайте функцию с 3 параметрами: х, yT и T, реализующую расчет по значениям последовательности значений входного сигнала х значений выходного сигнала по формуле: y= (x+T*yТ)/(T+1). Здесь х- одно текущее значение входного сигнала, yT – значение выходного сигнала в предыдущий момент времени, Т – постоянная времени инерционного звена. Создайте список с последовательностью из 100 значений входного синусоидального сигнала с амплитудой 2, периодом 7 и фазой 0.35. Рассчитайте последовательность значений выходных сигналов, принимая Т=3 и yT равным предыдущему в последовательности вычисленных значений y (для первого значения х принять yT=0). Записать результаты в текстовый файл в виде двух столбцов: хi, yi.
## Решение
```py
import math
def rasch(x,yT,T):
"""Расчет выходного значения"""
return (x + T*yT)/(T+1)
def generator(n, A, tau, phi):
sign = []
for i in range(n):
t = i
x = A*math.sin(2*math.pi*t/tau + phi)
sign.append(x)
return sign
def output(inputsign, T):
outputsign = []
yT = 0
for x in inputsign:
y = rasch(x,yT,T)
outputsign.append(y)
yT=y
return outputsign
saving(inputsign,outputsign,'resultindtask.txt')
def saving(inputsign, outputsign, filename):
with open(filename, 'w', encoding = 'utf-8') as file:
for i in range(len(inputsign)):
file.write(f'{inputsign[i]:.6f}, {outputsign[i]:.6f}\n'
n = 100
A = 2
tau = 7
phi = 0.35
T=3
inputsign = generator(n,A,tau,phi)
inputsign
[0.6857956149109027, 1.8964488934073493, 1.6790374746606227, 0.19727659137173062, -1.4330375889291693, -1.9842452361268608, -1.0412757492945761, 0.6857956149109016, 1.896448893407349, 1.6790374746606234, 0.197276591371732, -1.4330375889291658, -1.984245236126861, -1.0412757492945734, 0.6857956149109011, 1.8964488934073476, 1.6790374746606236, 0.19727659137172895, -1.4330375889291704, -1.9842452361268605, -1.041275749294574, 0.685795614910904, 1.8964488934073476, 1.679037474660622, 0.19727659137172943, -1.43303758892917, -1.9842452361268597, -1.0412757492945743, 0.6857956149109036, 1.8964488934073496, 1.679037474660626, 0.19727659137172993, -1.4330375889291698, -1.9842452361268605, -1.0412757492945688, 0.685795614910903, 1.8964488934073493, 1.6790374746606225, 0.19727659137173043, -1.4330375889291695, -1.9842452361268608, -1.0412757492945752, 0.6857956149109026, 1.8964488934073493, 1.6790374746606305, 0.1972765913717309, -1.433037588929169, -1.9842452361268608, -1.0412757492945757, 0.6857956149109021, 1.8964488934073491, 1.6790374746606231, 0.19727659137171724, -1.4330375889291689, -1.9842452361268608, -1.0412757492945761, 0.6857956149109017, 1.896448893407349, 1.6790374746606234, 0.19727659137173187, -1.4330375889291584, -1.9842452361268608, -1.0412757492945766, 0.6857956149109012, 1.8964488934073487, 1.6790374746606236, 0.19727659137173237, -1.4330375889291682, -1.9842452361268592, -1.041275749294577, 0.6857956149109008, 1.8964488934073487, 1.6790374746606316, 0.19727659137176112, -1.4330375889291578, -1.9842452361268645, -1.0412757492945894, 0.6857956149109004, 1.896448893407344, 1.6790374746606243, 0.19727659137174747, -1.4330375889291476, -1.9842452361268628, -1.0412757492945777, 0.6857956149108865, 1.8964488934073482, 1.679037474660632, 0.19727659137176212, -1.4330375889291374, -1.9842452361268612, -1.0412757492945903, 0.6857956149108727, 1.8964488934073436, 1.67903747466064, 0.19727659137174847, -1.4330375889291667, -1.984245236126863, -1.0412757492946028, 0.6857956149108856, 1.896448893407348]
outputsign = output(inputsign,T)
outputsign
[0.17144890372772567, 0.6026989011476316, 0.8717835445258794, 0.7031568062373422, 0.16910820744571436, -0.36923015344742943, -0.5372415524092161, -0.23148226057918672, 0.3005005279174472, 0.6451347646032413, 0.533170221295364, 0.04161826873923152, -0.4648476074772916, -0.6089546429316121, -0.28526707847098376, 0.26016191449859905, 0.6148808045391052, 0.5104797512472612, 0.024600416203153286, -0.47761099687935016, -0.6185271849831562, -0.2924464850096411, 0.25477735959460607, 0.61084238836111, 0.5074509391137649, 0.0223288071030312, -0.4793147037044415, -0.6198049651019748, -0.29340482009875524, 0.25405860827777094, 0.6103033248734847, 0.507046641498046, 0.02202558389124204, -0.4795421211132836, -0.6199755281586049, -0.2935327423912279, 0.25396266655841643, 0.610231368583968, 0.5069926742809086, 0.021985108478389026, -0.47957247767292344, -0.6199982955783363, -0.2935498179560266, 0.2539498598848174, 0.6102217635787707, 0.5069854705270107, 0.021979705662965754, -0.4795765297844909, -0.6200013346620121, -0.29355209726878356, 0.2539481504002496, 0.6102204814653429, 0.5069845089419365, 0.021978984474160135, -0.4795770706760951, -0.6200017403307154, -0.29355240152031115, 0.2539479222116039, 0.6102203103238588, 0.5069843805858271, 0.021978888207080716, -0.4795771428764046, -0.6200017944809476, -0.2935524421329854, 0.2539478917520981, 0.6102202874792295, 0.5069843634523552, 0.021978875356974348, -0.47957715251398403, -0.6200018017091322, -0.29355244755412396, 0.2539478876862442, 0.610220284429841, 0.5069843611653211, 0.02197887364170137, -0.4795771538004401, -0.6200018026739774, -0.293552448277758, 0.2539478871435175, 0.6102202840227942, 0.5069843608600325, 0.021978873412737465, -0.4795771539721626, -0.6200018028027664, -0.29355244837435324, 0.25394788707107213, 0.6102202839684621, 0.5069843608192871, 0.02197887338218102, -0.47957715399507955, -0.6200018028199572, -0.2935524483872497, 0.2539478870613986, 0.610220283961209, 0.5069843608138438, 0.02197887337809118, -0.4795771539981474, -0.6200018028222611, -0.29355244838897443, 0.2539478870601062]
import os
os.chdir('C:\\Users\\u206-09\\Desktop\\python-labs\\TEMA7')
saving(inputsign,outputsign,'resultindtask.txt')
```
Был создан файл содержащий два столбца с входным и выходным сигналом в папке.

Двоичные данные
TEMA7/pic1.png

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

После

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

Двоичные данные
TEMA7/pic2.png

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

После

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

@ -0,0 +1,537 @@
# Отчет по Теме 7
Савин Семён, А-02-23
## 1. Подготовка к работе
```py
>>> import os
>>> os.chdir('C:\\Users\\somas\\python-labs\\TEMA7')
>>>
```
## 2.1 Создание пользовательской функции без аргументов
```py
>>> def uspeh():
"""Подтверждение успеха операции"""
print('Выполнено успешно!')
>>> uspeh()
Выполнено успешно!
>>> dir()
['__annotations__', '__builtins__', '__doc__', '__loader__', '__name__', '__package__', '__spec__', 'os', '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
>>> help(sravnenie)
Help on function sravnenie in module __main__:
sravnenie(a, b)
Сравнение a и b
```
## 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 = (3,4); b3=(5,6); b4=(7,8)
>>> c = slozh(b1,b2,b3,b4)
>>> c
(1, 2, 3, 4, 5, 6, 7, 8)
>>> b1 = {a:1}; b2 = {b:2}; b3 ={c:3}; b4 ={d:4}
Traceback (most recent call last):
File "<pyshell#42>", line 1, in <module>
b1 = {a:1}; b2 = {b:2}; b3 ={c:3}; b4 ={d:4}
NameError: name 'a' is not defined
>>> b1 = {'a':1}; b2 = {'b':2}; b3 ={'c':3}; b4 ={'d':4}
>>> s = slozh(b1,b2,b3,b4)
Traceback (most recent call last):
File "<pyshell#44>", line 1, in <module>
s = slozh(b1,b2,b3,b4)
File "<pyshell#32>", line 3, in slozh
return a1+a2+a3+a4
TypeError: unsupported operand type(s) for +: 'dict' and 'dict'
>>> b1 = {1,2}; b2 ={3,4}; b3={5,6}; b4={7,8}
>>> m = slozh(b1,b2,b3,b4)
Traceback (most recent call last):
File "<pyshell#46>", line 1, in <module>
m = slozh(b1,b2,b3,b4)
File "<pyshell#32>", line 3, in slozh
return a1+a2+a3+a4
TypeError: unsupported operand type(s) for +: 'set' and 'set'
```
## 2.5.
```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)
>>> spsy
[0.0, 0.047619047619047616, 0.09297052154195011, 0.13616240146852393, 0.177297525208118, 0.21647383353154095, 0.25378460336337233, 0.2893186698698784, 0.3231606379713128, 0.35539108378220263, 0.38608674645924057, 0.4153207109135625, 0.4431625818224405, 0.46967864935470527, 0.4949320470044812, 0.5189829019090297, 0.5418884780085997, 0.5637033123891426, 0.5844793451325168, 0.6042660429833493, 0.6231105171269993, 0.6410576353590469, 0.6581501289133781, 0.6744286942032173, 0.6899320897173498, 0.7046972283022379, 0.7187592650497504, 0.7321516809997624, 0.7449063628569166, 0.7570536789113491, 0.768622551344142, 0.7796405250896592, 0.7901338334187231, 0.800127460398784, 0.8096452003797943, 0.8187097146474231, 0.8273425853784983, 0.8355643670271411, 0.8433946352639439, 0.8508520335847084, 0.8579543176997223, 0.8647183978092594, 0.8711603788659613, 0.8772955989199631, 0.88313866563806, 0.8887034910838667, 0.8940033248417778, 0.899050785563598, 0.9038578910129503, 0.9084360866790003, 0.9127962730276193, 0.9169488314548756, 0.9209036490046435, 0.9246701419091843, 0.9282572780087468, 0.9316735981035684, 0.9349272362891128, 0.9380259393229645, 0.94097708506949, 0.9437877000661808, 0.9464644762535056, 0.9490137869081006, 0.9514417018172386, 0.9537540017307035, 0.9559561921244795, 0.958053516309028, 0.96005096791336, 0.9619533027746285, 0.963765050261551, 0.9654905240586201, 0.9671338324367811, 0.9686988880350297, 0.9701894171762188, 0.971608968739256, 0.9729609226088152, 0.9742484977226811, 0.9754747597358867, 0.976642628319892, 0.9777548841141828, 0.9788141753468407, 0.9798230241398483, 0.9807838325141413, 0.981698888108706, 0.982570369627339, 0.9834003520260372, 0.9841908114533686, 0.9849436299555892, 0.9856605999577039, 0.9863434285311466, 0.9869937414582349, 0.9876130871030808, 0.9882029400981722, 0.988764704855402, 0.9892997189099068, 0.9898092561046732, 0.9902945296234982, 0.9907566948795221, 0.9911968522662116, 0.9916160497773444, 0.9920152855022327, 0.9923955100021263]
>>> import pylab
>>> pylab.plot(spsy)
[<matplotlib.lines.Line2D object at 0x0000019BBB4C4850>]
>>> pylab.show
<function show at 0x0000019BB8C8FD30>
>>> pylab.show()
```
![Скриншот полученного графика](pic1.png)
## 3.1. Получение списка атрибутов объекта-функции.
```py
>>> dir(inerz)
['__annotations__', '__call__', '__class__', '__closure__', '__code__', '__defaults__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__get__', '__getattribute__', '__globals__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__kwdefaults__', '__le__', '__lt__', '__module__', '__name__', '__ne__', '__new__', '__qualname__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__']
>>> inerz.__doc__
'Модель устройства с памятью:\n\tx - текущее значение вх. сигнала\n\tT - пост. времени\n\typred - предыдущее значение выхода устройства'
>>> 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.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):
"""Вычисление логистической функции"""
import math
return b/(1+math.exp(-a))
>>> logistfun(0.7)
0.6681877721681662
>>> logistfun(0.7,2)
1.3363755443363323
```
## 4.3. Возможность обращения к функции с произвольным расположением аргументов
```py
>>> logistfun(b=0.5,a=0.8)
0.34498724056380625
```
## 4.4. Пример со значениями аргументов функции, содержащимися в списке или кортеже.
```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.5. Пример со значениями аргументов функции, содержащимися в словаре
```py
>>> dic4={"a1":1, "a2":2, "a3":3, "a4":4}
>>> qqq=slozh(**dic4)
>>> qqq
10
```
## 4.6. Смешанные ссылки
```py
>>> el=(-1,6);dd2={'a3':3,'a4':9}
>>> qqqq=slozh(*el,**dd2)
>>> qqqq
17
```
## 4.7. Переменное число аргументов у функции
```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.8. Комбинация аргументов
```py
>>> def func4(a,b=7, *kort7):
"""Кортеж - сборка аргументов - должен быть последним"""
smm=0
for elt in kort7:
smm+=elt
return a*smm+b
>>> func4(-1,2,0,3,6)
-7
>>> func4(-1, 2, 1,2,3)
-4
>>> def func5(a,b=7, **slov7):
"""Словарь - сборка аргументов - должен быть последним"""
smm=0
for elt in slov7.values():
smm+=elt
return a*smm+b
>>> func5(-1,2, aslov=0,bslov=3,cslov=6)
-7
```
## 4.9. Изменение значений объектов, используемых в качестве аргументов функции
```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]
>>> kort1 = (1,2,3,4)
>>> def func3(kort):
kort[1]=99
>>> func3(kort1)
Traceback (most recent call last):
File "<pyshell#171>", line 1, in <module>
func3(kort1)
File "<pyshell#170>", line 2, in func3
kort[1]=99
TypeError: 'tuple' object does not support item assignment
>>> kort1
(1, 2, 3, 4)
```
## 5.1. Специальные типы пользовательских функций. Анонимные функции
```py
>>> 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
>>>
```
## 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__())
>>> print(alp.__next__())
1
>>> print(alp.__next__())
4
>>> print(alp.__next__())
7
>>> print(alp.__next__())
Traceback (most recent call last):
File "<pyshell#26>", line 1, in <module>
print(alp.__next__())
StopIteration
```
## 6.1. Примеры на локализацию объектов
### Пример 1.
```py
>>> glb=10
>>> def func7(arg):
loc1=15
glb=8
return loc1*arg
>>> res=func7(glb)
>>> res
150
>>> glb
10
```
### Пример 2.
```py
>>> def func8(arg):
loc1 = 15
print(glb)
glb=8
return(loc1*arg)
>>> res=func8(glb)
Traceback (most recent call last):
File "<pyshell#42>", line 1, in <module>
res=func8(glb)
File "<pyshell#41>", line 3, in func8
print(glb)
UnboundLocalError: local variable 'glb' referenced before assignment
>>> def func8(arg):
loc1 = 15
glb=8
print(glb)
return(loc1*arg)
>>> res = func8(glb)
8
>>> res
150
>>>
```
### Пример 3.
```py
>>> glb = 11
>>> def func7(arg):
loc1=15
global glb
print(glb)
glb = 8
return loc1*arg
>>> res = func7(glb)
11
>>> glb
8
```
## 6.2. Выявление локализации
```py
>>> globals().keys()
dict_keys(['__name__', '__doc__', '__package__', '__loader__', '__spec__', '__annotations__', '__builtins__', 'os', 'anfun1', 'math', 'anfun2', 'anfun3', 'func5', 'mm', 'alp', 'glb', 'func7', 'res', 'func8'])
>>> locals().keys()
dict_keys(['__name__', '__doc__', '__package__', '__loader__', '__spec__', '__annotations__', '__builtins__', 'os', '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__', 'os', 'anfun1', 'math', 'anfun2', 'anfun3', 'func5', 'mm', 'alp', 'glb', 'func7', 'res', 'func8'])
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('loc1_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__', 'os', 'anfun1', 'math', 'anfun2', 'anfun3', 'func5', 'mm', 'alp', 'glb', 'func7', 'res', 'func8', 'hh', 'func9'])
loc1_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__', 'os', 'anfun1', 'math', 'anfun2', 'anfun3', 'func5', 'mm', 'alp', 'glb', 'func7', 'res', 'func8', 'hh', 'func9'])
>>> kk
85
```
## 6.4.
```py
>>> znach=input('k1,T,k2,Xm,A,F,N=').split(',')
k1,T,k2,Xm,A,F,N=5,20,2,1,10,0.02,50
>>> T=float(znach[1])
>>> k2 = float(znach[2])
>>> k1=float(znach[0])
>>> Xm = float(znach[3])
>>> A=float(znach[4])
>>> F=float(znach[5])
>>> N=int(znach[6])
>>> vhod=[]
>>> for i in range(N):
vhod.append(A*math.sin((2*i*math.pi)*F))
>>> vhod
[0.0, 1.2533323356430426, 2.486898871648548, 3.6812455268467796, 4.817536741017153, 5.877852522924732, 6.845471059286887, 7.705132427757892, 8.443279255020151, 9.048270524660197, 9.510565162951535, 9.822872507286887, 9.980267284282716, 9.980267284282716, 9.822872507286887, 9.510565162951536, 9.048270524660195, 8.44327925502015, 7.705132427757892, 6.845471059286888, 5.877852522924733, 4.817536741017152, 3.6812455268467814, 2.486898871648548, 1.2533323356430408, 1.2246467991473533e-15, -1.2533323356430428, -2.486898871648546, -3.681245526846779, -4.817536741017154, -5.87785252292473, -6.845471059286884, -7.705132427757894, -8.443279255020153, -9.048270524660198, -9.510565162951535, -9.822872507286887, -9.980267284282716, -9.980267284282716, -9.822872507286887, -9.510565162951536, -9.048270524660198, -8.44327925502015, -7.705132427757896, -6.84547105928689, -5.877852522924734, -4.817536741017153, -3.6812455268467787, -2.486898871648545, -1.2533323356430466]
>>> 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.03263241167294595, 0.9745456461939759, 1.4445477037255587, 0.5534963485187296, -0.14317115231403954, -3.810424583957446, -5.935617950854518, -3.1454619295767294, 4.410078865544928, 17.906974115100144, 26.191694213352932, 16.564012161149634, -16.52439077227259, -67.59051021156763, -101.3214249457787, -69.9621783842152, 55.00346225455457, 246.14981490076363, 380.49988175932214, 278.83918136760593, -179.12097686946288, -894.831188510742, -1427.8203056594884, -1106.6971235336005, 553.0427518851675, 3227.436842271835, 5328.628272818676, 4345.723637601036, -1642.536200959916, -11619.299856185102, -19859.46237228057, -16988.531756411103, 4552.501490270824, 41710.04551030272, 73876.07518877511, 66108.68459616054, -11169.337014708513, -149332.61878005945, -274368.6364383781, -256250.17990633397, 20228.386522231223, 533135.2397813796, 1017335.790045514, 989751.144011423, 3441.7330011494814, -1897576.0088700322, -3766140.0629690504, -3810393.13835538]
>>> import pylab
>>> pylab.plot(vyhod)
[<matplotlib.lines.Line2D object at 0x000001C8BDCE54C0>]
>>> pylab.show()
```
![Скриншот полученного графика](pic2.png)

@ -0,0 +1,100 @@
0.685796, 0.171449
1.896449, 0.602699
1.679037, 0.871784
0.197277, 0.703157
-1.433038, 0.169108
-1.984245, -0.369230
-1.041276, -0.537242
0.685796, -0.231482
1.896449, 0.300501
1.679037, 0.645135
0.197277, 0.533170
-1.433038, 0.041618
-1.984245, -0.464848
-1.041276, -0.608955
0.685796, -0.285267
1.896449, 0.260162
1.679037, 0.614881
0.197277, 0.510480
-1.433038, 0.024600
-1.984245, -0.477611
-1.041276, -0.618527
0.685796, -0.292446
1.896449, 0.254777
1.679037, 0.610842
0.197277, 0.507451
-1.433038, 0.022329
-1.984245, -0.479315
-1.041276, -0.619805
0.685796, -0.293405
1.896449, 0.254059
1.679037, 0.610303
0.197277, 0.507047
-1.433038, 0.022026
-1.984245, -0.479542
-1.041276, -0.619976
0.685796, -0.293533
1.896449, 0.253963
1.679037, 0.610231
0.197277, 0.506993
-1.433038, 0.021985
-1.984245, -0.479572
-1.041276, -0.619998
0.685796, -0.293550
1.896449, 0.253950
1.679037, 0.610222
0.197277, 0.506985
-1.433038, 0.021980
-1.984245, -0.479577
-1.041276, -0.620001
0.685796, -0.293552
1.896449, 0.253948
1.679037, 0.610220
0.197277, 0.506985
-1.433038, 0.021979
-1.984245, -0.479577
-1.041276, -0.620002
0.685796, -0.293552
1.896449, 0.253948
1.679037, 0.610220
0.197277, 0.506984
-1.433038, 0.021979
-1.984245, -0.479577
-1.041276, -0.620002
0.685796, -0.293552
1.896449, 0.253948
1.679037, 0.610220
0.197277, 0.506984
-1.433038, 0.021979
-1.984245, -0.479577
-1.041276, -0.620002
0.685796, -0.293552
1.896449, 0.253948
1.679037, 0.610220
0.197277, 0.506984
-1.433038, 0.021979
-1.984245, -0.479577
-1.041276, -0.620002
0.685796, -0.293552
1.896449, 0.253948
1.679037, 0.610220
0.197277, 0.506984
-1.433038, 0.021979
-1.984245, -0.479577
-1.041276, -0.620002
0.685796, -0.293552
1.896449, 0.253948
1.679037, 0.610220
0.197277, 0.506984
-1.433038, 0.021979
-1.984245, -0.479577
-1.041276, -0.620002
0.685796, -0.293552
1.896449, 0.253948
1.679037, 0.610220
0.197277, 0.506984
-1.433038, 0.021979
-1.984245, -0.479577
-1.041276, -0.620002
0.685796, -0.293552
1.896449, 0.253948

@ -0,0 +1,57 @@
# Общее контрольное задание по теме 7
Савин Семён, А-02-23
## Задание
• Разработайте и проверьте функцию, реализующую для момента времени t расчет выхода y(t) для устройства задержки: на вход поступает сигнал, а на выходе повторяется этот сигнал с за-держкой на заданное время Т.
• Разработайте и проверьте функцию, реализующую расчет гистограммы по выборке случайной величины с каким-то распределением. Гистограмма при выводе на экран представляется в ви-де таблицы: границы интервала, число элементов выборки в интервале. Аргументы функции: выборка, число интервалов разбиения диапазона изменения случайной величины. Возвращае-мый результат функции: список с числами элементов выборки в интервалах разбиения.
• Разработайте и проверьте анонимную функцию, вычисляющую значение оценки отклика Y линейной регрессии при значении переменной Х
Y=b1+b2*X и имеющую аргументы b1, b2 и X.
## Решение
```py
>>> def delay(vhod, t):
"""Функция задержки
Входной сигнал - vhod
Задержка - t"""
return [0]*T + vhod
>>> sign = [1,2,3,4,5]
>>> T = 9
>>> t = 9
>>> delay(sign,t)
[0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 4, 5]
>>> def hist(x, bins):
low = min(x)
high = max(x)
inter = ((high-low)/bins)
binsdata=[]
for i in range(bins):
lo = low+i*inter
up = low + (i+1)*inter
binsdata.append(len(list(filter(lambda j: lo<= j and up > j, x))))
if i == bins-1:
binsdata[i]+=1
print("Интервал ", {i+1}, ' - от ', lo, ' до ', up, 'кол-во элементов - ', binsdata[i])
return binsdata
>>> x = [random.gauss(150, 10) for i in range(100)]
>>> analiz = hist(x,7)
Интервал {1} - от 127.66589446294806 до 134.22890486557336 кол-во элементов - 2
Интервал {2} - от 134.22890486557336 до 140.79191526819864 кол-во элементов - 9
Интервал {3} - от 140.79191526819864 до 147.35492567082395 кол-во элементов - 10
Интервал {4} - от 147.35492567082395 до 153.91793607344923 кол-во элементов - 37
Интервал {5} - от 153.91793607344923 до 160.4809464760745 кол-во элементов - 23
Интервал {6} - от 160.4809464760745 до 167.04395687869982 кол-во элементов - 14
Интервал {7} - от 167.04395687869982 до 173.6069672813251 кол-во элементов - 5
>>> print(analiz)
[2, 9, 10, 37, 23, 14, 5]
>>> regr = lambda x, b1,b2: b1+b2*x
>>> regr(12, 50, 1)
62
```

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

@ -0,0 +1,19 @@
def realdvig(xtt,kk1,TT,yti1,ytin1):
yp=kk1*xtt
yti1=yp+yti1
ytin1=(yti1+TT*ytin1)/(TT+1)
return [yti1,ytin1]
def tahogen(xtt,kk2,yti2):
yp=kk2*xtt
yti2=yp+yti2
return yti2
def nechus(xtt,gran):
if xtt<gran and xtt>(-gran):
ytt=0
elif xtt>=gran:
ytt=xtt-gran
elif xtt<=(-gran):
ytt=xtt+gran
return ytt

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

@ -1,4 +1,3 @@
#Модуль Mod0
import Mod1
print('perm1=',Mod1.perm1)
from Mod2 import alpha as al
@ -7,3 +6,4 @@ print('tt=',tt)
from Mod2 import beta
qq=beta(float(tt))
print('qq=',qq)
perm1 = Mod1.perm1

@ -0,0 +1,25 @@
import math
def correlation(numbers1, numbers2):
if not numbers1 or not numbers2:
print('пусто')
return(0)
n = min(len(numbers1), len(numbers2))
x = numbers1[:n]
y = numbers2[:n]
meanx = sum(x)/n
meany = sum(y)/n
sum1 = 0
sum2 = 0
sum3 = 0
for i in range (n):
sum1 += ((x[i] - meanx)*(y[i] - meany))
sum2 += ((x[i] - meanx)**2)
sum3 += ((y[i] - meany)**2)
print(sum1,sum2,sum3)
return (sum1/math.sqrt(sum2*sum3))

Двоичные данные
TEMA8/img1.png

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

После

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

Двоичные данные
TEMA8/img2.png

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

После

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

Двоичные данные
TEMA8/img3.png

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

После

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

Двоичные данные
TEMA8/img4.png

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

После

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

@ -0,0 +1,98 @@
# Индивидуальное задание по теме 8
Савин Семён, А-02-23
## Задание
Разработайте функцию с 3 параметрами: х, yT и T, реализующую расчет по значениям последовательности значений входного сигнала х значений выходного сигнала по формуле: y= (x+T*yТ)/(T+1). Здесь х- одно текущее значение входного сигнала, yT – значение выходного сигнала в предыдущий момент времени, Т – постоянная времени инерционного звена. Создайте список с последовательностью из 100 значений входного синусоидального сигнала с амплитудой 2, периодом 7 и фазой 0.35. Рассчитайте последовательность значений выходных сигналов, принимая Т=3 и yT равным предыдущему в последовательности вычисленных значений y (для первого значения х принять yT=0). Записать результаты в текстовый файл в виде двух столбцов: хi, yi.
## Решение
Содержимое модуля с калькулятором:
```py
def calc(x,yT,T):
y =(x+T*yT)/(1+T)
return y
```
Содержимое главного модуля:
```py
import math
from indtask1 import calc
def generator(num=100):
A = 2
T =7
phase = 0.35
xval = []
for i in range(num):
val =A*math.sin(2*math.pi*i/T + phase)
xval.append(val)
return xval
def output(xval,T):
yval = []
yn = calc(xval[0],0,T)
yval.append(yn)
for i in range(1,len(xval)):
yn = calc(xval[i], yval[i-1], T)
yval.append(yn)
return(yval)
def writer(xval,yval,filename='result.txt'):
with open(filename, 'w', encoding = 'utf-8') as file:
for i in range(len(xval)):
file.write(f'{xval[i]}\t{yval[i]}\n')
print('Сохранено в result.txt')
def main():
num =100
T = 3
print('Вход:')
xval =generator(num)
print(xval)
print('Выход:')
yval= output(xval,T)
print(yval)
writer(xval,yval)
print('Первые пять:')
for i in range(5):
print(f'{i}\t{xval[i]}\t{yval[i]}\n')
```
Результаты работы в консоли:
```py
======================== RESTART: C:/Users/u206-07/Desktop/python-labs/TEMA8/taskmain.py =======================
main()
Вход:
[0.6857956149109027, 1.8964488934073493, 1.6790374746606227, 0.19727659137173062, -1.4330375889291693, -1.9842452361268608, -1.0412757492945761, 0.6857956149109016, 1.896448893407349, 1.6790374746606234, 0.197276591371732, -1.4330375889291658, -1.984245236126861, -1.0412757492945734, 0.6857956149109011, 1.8964488934073476, 1.6790374746606236, 0.19727659137172895, -1.4330375889291704, -1.9842452361268605, -1.041275749294574, 0.685795614910904, 1.8964488934073476, 1.679037474660622, 0.19727659137172943, -1.43303758892917, -1.9842452361268597, -1.0412757492945743, 0.6857956149109036, 1.8964488934073496, 1.679037474660626, 0.19727659137172993, -1.4330375889291698, -1.9842452361268605, -1.0412757492945688, 0.685795614910903, 1.8964488934073493, 1.6790374746606225, 0.19727659137173043, -1.4330375889291695, -1.9842452361268608, -1.0412757492945752, 0.6857956149109026, 1.8964488934073493, 1.6790374746606305, 0.1972765913717309, -1.433037588929169, -1.9842452361268608, -1.0412757492945757, 0.6857956149109021, 1.8964488934073491, 1.6790374746606231, 0.19727659137171724, -1.4330375889291689, -1.9842452361268608, -1.0412757492945761, 0.6857956149109017, 1.896448893407349, 1.6790374746606234, 0.19727659137173187, -1.4330375889291584, -1.9842452361268608, -1.0412757492945766, 0.6857956149109012, 1.8964488934073487, 1.6790374746606236, 0.19727659137173237, -1.4330375889291682, -1.9842452361268592, -1.041275749294577, 0.6857956149109008, 1.8964488934073487, 1.6790374746606316, 0.19727659137176112, -1.4330375889291578, -1.9842452361268645, -1.0412757492945894, 0.6857956149109004, 1.896448893407344, 1.6790374746606243, 0.19727659137174747, -1.4330375889291476, -1.9842452361268628, -1.0412757492945777, 0.6857956149108865, 1.8964488934073482, 1.679037474660632, 0.19727659137176212, -1.4330375889291374, -1.9842452361268612, -1.0412757492945903, 0.6857956149108727, 1.8964488934073436, 1.67903747466064, 0.19727659137174847, -1.4330375889291667, -1.984245236126863, -1.0412757492946028, 0.6857956149108856, 1.896448893407348]
Выход:
[0.17144890372772567, 0.6026989011476316, 0.8717835445258794, 0.7031568062373422, 0.16910820744571436, -0.36923015344742943, -0.5372415524092161, -0.23148226057918672, 0.3005005279174472, 0.6451347646032413, 0.533170221295364, 0.04161826873923152, -0.4648476074772916, -0.6089546429316121, -0.28526707847098376, 0.26016191449859905, 0.6148808045391052, 0.5104797512472612, 0.024600416203153286, -0.47761099687935016, -0.6185271849831562, -0.2924464850096411, 0.25477735959460607, 0.61084238836111, 0.5074509391137649, 0.0223288071030312, -0.4793147037044415, -0.6198049651019748, -0.29340482009875524, 0.25405860827777094, 0.6103033248734847, 0.507046641498046, 0.02202558389124204, -0.4795421211132836, -0.6199755281586049, -0.2935327423912279, 0.25396266655841643, 0.610231368583968, 0.5069926742809086, 0.021985108478389026, -0.47957247767292344, -0.6199982955783363, -0.2935498179560266, 0.2539498598848174, 0.6102217635787707, 0.5069854705270107, 0.021979705662965754, -0.4795765297844909, -0.6200013346620121, -0.29355209726878356, 0.2539481504002496, 0.6102204814653429, 0.5069845089419365, 0.021978984474160135, -0.4795770706760951, -0.6200017403307154, -0.29355240152031115, 0.2539479222116039, 0.6102203103238588, 0.5069843805858271, 0.021978888207080716, -0.4795771428764046, -0.6200017944809476, -0.2935524421329854, 0.2539478917520981, 0.6102202874792295, 0.5069843634523552, 0.021978875356974348, -0.47957715251398403, -0.6200018017091322, -0.29355244755412396, 0.2539478876862442, 0.610220284429841, 0.5069843611653211, 0.02197887364170137, -0.4795771538004401, -0.6200018026739774, -0.293552448277758, 0.2539478871435175, 0.6102202840227942, 0.5069843608600325, 0.021978873412737465, -0.4795771539721626, -0.6200018028027664, -0.29355244837435324, 0.25394788707107213, 0.6102202839684621, 0.5069843608192871, 0.02197887338218102, -0.47957715399507955, -0.6200018028199572, -0.2935524483872497, 0.2539478870613986, 0.610220283961209, 0.5069843608138438, 0.02197887337809118, -0.4795771539981474, -0.6200018028222611, -0.29355244838897443, 0.2539478870601062]
Сохранено в result.txt
Первые пять:
0 0.6857956149109027 0.17144890372772567
1 1.8964488934073493 0.6026989011476316
2 1.6790374746606227 0.8717835445258794
3 0.19727659137173062 0.7031568062373422
4 -1.4330375889291693 0.16910820744571436
```
Также был создан файл result.txt содержащий в столбиквсе входные ивыходные сигналы

@ -0,0 +1,4 @@
def calc(x,yT,T):
y =(x+T*yT)/(1+T)
return y

@ -0,0 +1,17 @@
from readerfile import reader
from correlate import correlation
def main():
print("_________Калькулятор корреляции_________")
file1 = input("Первый файл: ").strip()
file2 = input("Второй файл: ").strip()
numbers1 = reader(file1)
numbers2 = reader(file2)
print(numbers1)
print(numbers2)
cor = correlation(numbers1, numbers2)
print("Коэффициент корреляции - ", cor)

@ -0,0 +1,3 @@
44 50 43 30 24
10 9 1 5
29 19 14 21

@ -0,0 +1,3 @@
30 60 58 40 34
20 19 16 15
39 28 24 31

@ -0,0 +1,9 @@
def reader(filename):
num = []
with open(filename, 'r', encoding = 'utf-8') as file:
for line in file:
elements = line.strip().split()
for elem in elements:
number = float(elem)
num.append(number)
return num

@ -0,0 +1,294 @@
# Тема 8
Савин Семён, А-02-23
## Пункт 1. Подготовка к работе.
```py
>>> import os,sys
>>> import importlib as imp
>>> os.chdir('C:\\Users\\somas\\python-labs\\TEMA8')
>>> os.getcwd()
'C:\\Users\\somas\\python-labs\\TEMA8'
```
## Пункт 2.1. Запуск модуля на выполнение путем его импорта
![Скриншот содержимого файла Mod1.py](img1.png)
```py
>>> import Mod1
Mod1:Введите значение = 5
Mod1:Значение perm1= 5
>>> type(Mod1)
<class 'module'>
>>> dir(Mod1)
['__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', 'perm1']
>>> Mod1.perm1
'5'
>>> import Mod1
>>> imp.reload(Mod1)
Mod1:Введите значение = 3
Mod1:Значение perm1= 3
<module 'Mod1' from 'C:\\Users\\somas\\python-labs\\TEMA8\\Mod1.py'>
>>> Mod1.perm1
'3'
```
## 2.2. Удаление модуля из словаря
```py
>>> print(sorted(sys.modules.keys()))
['Mod1', '__main__', '_abc', '_ast', '_bisect', '_bootlocale', '_bz2', '_codecs', '_collections', '_collections_abc', '_compat_pickle', '_compression', '_datetime', '_frozen_importlib', '_frozen_importlib_external', '_functools', '_heapq', '_imp', '_io', '_locale', '_lzma', '_opcode', '_operator', '_pickle', '_queue', '_random', '_sha512', '_signal', '_sitebuiltins', '_socket', '_sre', '_stat', '_string', '_struct', '_thread', '_tkinter', '_warnings', '_weakref', '_weakrefset', '_winapi', 'abc', 'ast', 'bdb', 'binascii', 'bisect', 'builtins', 'bz2', 'codecs', 'collections', 'collections.abc', 'configparser', 'contextlib', 'copyreg', 'datetime', 'dis', 'encodings', 'encodings.aliases', 'encodings.cp1251', 'encodings.latin_1', '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._bootstrap', 'importlib._bootstrap_external', 'importlib.abc', 'importlib.machinery', 'importlib.util', 'inspect', 'io', 'itertools', 'keyword', 'linecache', 'lzma', 'marshal', 'math', 'msvcrt', 'nt', 'ntpath', 'opcode', 'operator', 'os', 'os.path', 'pickle', 'pkgutil', 'platform', 'plistlib', 'posixpath', 'pydoc', 'pyexpat', 'pyexpat.errors', 'pyexpat.model', 'queue', 'random', 're', 'reprlib', 'select', 'selectors', 'shlex', 'shutil', 'signal', 'site', 'socket', 'socketserver', 'sre_compile', 'sre_constants', 'sre_parse', 'stat', 'string', 'struct', 'subprocess', 'sys', 'sysconfig', 'tempfile', 'textwrap', 'threading', 'time', 'tkinter', 'tkinter.constants', 'token', 'tokenize', 'traceback', 'types', 'typing', 'typing.io', 'typing.re', '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')
<module 'Mod1' from 'C:\\Users\\somas\\python-labs\\TEMA8\\Mod1.py'>
>>> print(sorted(sys.modules.keys()))
['__main__', '_abc', '_ast', '_bisect', '_bootlocale', '_bz2', '_codecs', '_collections', '_collections_abc', '_compat_pickle', '_compression', '_datetime', '_frozen_importlib', '_frozen_importlib_external', '_functools', '_heapq', '_imp', '_io', '_locale', '_lzma', '_opcode', '_operator', '_pickle', '_queue', '_random', '_sha512', '_signal', '_sitebuiltins', '_socket', '_sre', '_stat', '_string', '_struct', '_thread', '_tkinter', '_warnings', '_weakref', '_weakrefset', '_winapi', 'abc', 'ast', 'bdb', 'binascii', 'bisect', 'builtins', 'bz2', 'codecs', 'collections', 'collections.abc', 'configparser', 'contextlib', 'copyreg', 'datetime', 'dis', 'encodings', 'encodings.aliases', 'encodings.cp1251', 'encodings.latin_1', '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._bootstrap', 'importlib._bootstrap_external', 'importlib.abc', 'importlib.machinery', 'importlib.util', 'inspect', 'io', 'itertools', 'keyword', 'linecache', 'lzma', 'marshal', 'math', 'msvcrt', 'nt', 'ntpath', 'opcode', 'operator', 'os', 'os.path', 'pickle', 'pkgutil', 'platform', 'plistlib', 'posixpath', 'pydoc', 'pyexpat', 'pyexpat.errors', 'pyexpat.model', 'queue', 'random', 're', 'reprlib', 'select', 'selectors', 'shlex', 'shutil', 'signal', 'site', 'socket', 'socketserver', 'sre_compile', 'sre_constants', 'sre_parse', 'stat', 'string', 'struct', 'subprocess', 'sys', 'sysconfig', 'tempfile', 'textwrap', 'threading', 'time', 'tkinter', 'tkinter.constants', 'token', 'tokenize', 'traceback', 'types', 'typing', 'typing.io', 'typing.re', 'urllib', 'urllib.parse', 'warnings', 'weakref', 'winreg', 'xml', 'xml.parsers', 'xml.parsers.expat', 'xml.parsers.expat.errors', 'xml.parsers.expat.model', 'zipimport', 'zlib']
>>> import Mod1
Mod1:Введите значение = 4
Mod1:Значение perm1= 4
>>> sys.modules.pop('Mod1')
<module 'Mod1' from 'C:\\Users\\somas\\python-labs\\TEMA8\\Mod1.py'>
```
## 2.3. Запуск модуля с помощью exec
```py
>>> exec(open('Mod1.py').read())
Mod1:Введите значение = 8
Mod1:Значение perm1= 8
>>> exec(open('Mod1.py', encoding= 'utf-8').read())
Mod1:Введите значение = 4
Mod1:Значение perm1= 4
>>> exec(open('Mod1.py', encoding= 'utf-8').read())
Mod1:Введите значение = 50
Mod1:Значение perm1= 50
>>> exec(open('Mod1.py', encoding= 'utf-8').read())
Mod1:Введите значение = 10
Mod1:Значение perm1= 10
```
## 2.4. Запуск модуля с помощью from - import
```py
>>> from Mod1 import perm1
Mod1:Введите значение = 1
Mod1:Значение perm1= 1
>>> dir()
['Mod1', '__annotations__', '__builtins__', '__doc__', '__loader__', '__name__', '__package__', '__spec__', '__warningregistry__', 'imp', 'os', 'perm1', 'sys']
>>> perm1
'1'
```
![Скриншот содержания файла Mod2.py](img2.png)
```py
>>> from Mod2 import beta
>>> g=beta(2)
****BETA****
>>> g
535.4916555247646
>>> alpha()
Traceback (most recent call last):
File "<pyshell#30>", line 1, in <module>
alpha()
NameError: name 'alpha' is not defined
>>> from Mod2 import alpha
>>> from Mod2 import alpha as al
>>> al()
****ALPHA****
Значение t=5
'5'
>>> del al,beta
>>> from Mod2 import alpha as al, beta as bt
>>> from Mod2 import *
>>> tt=alpha()
****ALPHA****
Значение t=0.12
>>> uu=beta(float(tt))
****BETA****
>>> uu
1.4578913609506803
>>>
```
## 3.1. Создание многомодульных программ
![Скриншот содержимого файла Mod0.py](img3.png)
```py
>>> sys.modules.pop('Mod1')
<module 'Mod1' from 'C:\\Users\\somas\\python-labs\\TEMA8\\Mod1.py'>
>>> sys.modules.pop('Mod2')
<module 'Mod2' from 'C:\\Users\\somas\\python-labs\\TEMA8\\Mod2.py'>
>>> import Mod0
Mod1:Введите значение = 10
Mod1:Значение perm1= 10
perm1= 10
****ALPHA****
Значение t=6
tt= 6
****BETA****
qq= 153552935.39544657
>>> Mod0.tt; Mod0.qq; Mod0.Mod1.perm1
'6'
153552935.39544657
'10'
```
## 3.2. Создание модулей и реализация программы модели САУ
![Скриншот содержания файла MM1.py](img4.png)
```py
>>> import MM2
k1,T,k2,Xm,A,F,N=0.4, 30, 0.6, 6, 1000, 7, 16
>>> print('y=', MM2.vyhod)
y= [0, 4.088148160877804, 26.352485391214998, 53.16854540749361, 72.7344196620431, 77.69321318122259, 70.35974149591577, 60.62750525878967, 58.14620628522886, 64.67689441760423, 72.40046930133941, 69.47447962424967, 48.67692603876396, 12.652572207611655, -16.163653614270103, -51.357437173804996]
```
## 3.3. Области действия объектов в модулях
Была изменена функция alpha в файле Mod2.py
```py
def alpha():
print('****ALPHA****')
t=input('Значение t=')
n=beta(6)
print(n)
return t
```
После запуска модуля
```py
>>> alpha()
****ALPHA****
Значение t=10
****BETA****
153552935.39544657
'10'
```
Убрали изменения из alpha, изменили beta
```py
def beta(q):
print('****BETA****')
import math
expi=q*math.pi
alpha()
return math.exp(expi)
```
результат
```py
>>> beta(6)
****BETA****
****ALPHA****
Значение t=10
153552935.39544657
```
Добавили функцию печати в Mod0
```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)
print(t,expi)
```
получено
```py
Mod1:Введите значение = 10
Mod1:Значение perm1= 10
perm1= 10
****ALPHA****
Значение t=10
tt= 10
****BETA****
****ALPHA****
Значение t=10
qq= 44031505860631.98
Traceback (most recent call last):
File "C:\Users\somas\python-labs\TEMA8\Mod0.py", line 9, in <module>
print(t,expi)
NameError: name 't' is not defined
```
В модуле Mod0 perm1 была увеличена в 3 раза
```py
Mod1:Введите значение = 10
Mod1:Значение perm1= 10
perm1= 10
****ALPHA****
Значение t=8
tt= 8
****BETA****
qq= 82226315585.59491
perm1*3= 101010
```
так получилось, так как perm1 - строка
изменим qq,tt,perm1 в командной строке
```py
Mod1:Введите значение = 5
Mod1:Значение perm1= 5
perm1= 5
****ALPHA****
Значение t=8
tt= 8
****BETA****
qq= 82226315585.59491
>>> perm1 = perm1*2
Traceback (most recent call last):
File "<pyshell#9>", line 1, in <module>
perm1 = perm1*2
NameError: name 'perm1' is not defined
>>> tt = tt*2
>>> tt
'88'
>>> qq = qq*2; qq
164452631171.18982
```
теперь изменим Mod0.py так, чтобы perm1 можно было изменить
```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)
perm1 = Mod1.perm1
```
результат:
```py
Mod1:Введите значение = 5
Mod1:Значение perm1= 5
perm1= 5
****ALPHA****
Значение t=10
tt= 10
****BETA****
qq= 44031505860631.98
>>> perm1 = perm1*2
>>> perm1
'55'
```

@ -0,0 +1,100 @@
0.6857956149109027 0.17144890372772567
1.8964488934073493 0.6026989011476316
1.6790374746606227 0.8717835445258794
0.19727659137173062 0.7031568062373422
-1.4330375889291693 0.16910820744571436
-1.9842452361268608 -0.36923015344742943
-1.0412757492945761 -0.5372415524092161
0.6857956149109016 -0.23148226057918672
1.896448893407349 0.3005005279174472
1.6790374746606234 0.6451347646032413
0.197276591371732 0.533170221295364
-1.4330375889291658 0.04161826873923152
-1.984245236126861 -0.4648476074772916
-1.0412757492945734 -0.6089546429316121
0.6857956149109011 -0.28526707847098376
1.8964488934073476 0.26016191449859905
1.6790374746606236 0.6148808045391052
0.19727659137172895 0.5104797512472612
-1.4330375889291704 0.024600416203153286
-1.9842452361268605 -0.47761099687935016
-1.041275749294574 -0.6185271849831562
0.685795614910904 -0.2924464850096411
1.8964488934073476 0.25477735959460607
1.679037474660622 0.61084238836111
0.19727659137172943 0.5074509391137649
-1.43303758892917 0.0223288071030312
-1.9842452361268597 -0.4793147037044415
-1.0412757492945743 -0.6198049651019748
0.6857956149109036 -0.29340482009875524
1.8964488934073496 0.25405860827777094
1.679037474660626 0.6103033248734847
0.19727659137172993 0.507046641498046
-1.4330375889291698 0.02202558389124204
-1.9842452361268605 -0.4795421211132836
-1.0412757492945688 -0.6199755281586049
0.685795614910903 -0.2935327423912279
1.8964488934073493 0.25396266655841643
1.6790374746606225 0.610231368583968
0.19727659137173043 0.5069926742809086
-1.4330375889291695 0.021985108478389026
-1.9842452361268608 -0.47957247767292344
-1.0412757492945752 -0.6199982955783363
0.6857956149109026 -0.2935498179560266
1.8964488934073493 0.2539498598848174
1.6790374746606305 0.6102217635787707
0.1972765913717309 0.5069854705270107
-1.433037588929169 0.021979705662965754
-1.9842452361268608 -0.4795765297844909
-1.0412757492945757 -0.6200013346620121
0.6857956149109021 -0.29355209726878356
1.8964488934073491 0.2539481504002496
1.6790374746606231 0.6102204814653429
0.19727659137171724 0.5069845089419365
-1.4330375889291689 0.021978984474160135
-1.9842452361268608 -0.4795770706760951
-1.0412757492945761 -0.6200017403307154
0.6857956149109017 -0.29355240152031115
1.896448893407349 0.2539479222116039
1.6790374746606234 0.6102203103238588
0.19727659137173187 0.5069843805858271
-1.4330375889291584 0.021978888207080716
-1.9842452361268608 -0.4795771428764046
-1.0412757492945766 -0.6200017944809476
0.6857956149109012 -0.2935524421329854
1.8964488934073487 0.2539478917520981
1.6790374746606236 0.6102202874792295
0.19727659137173237 0.5069843634523552
-1.4330375889291682 0.021978875356974348
-1.9842452361268592 -0.47957715251398403
-1.041275749294577 -0.6200018017091322
0.6857956149109008 -0.29355244755412396
1.8964488934073487 0.2539478876862442
1.6790374746606316 0.610220284429841
0.19727659137176112 0.5069843611653211
-1.4330375889291578 0.02197887364170137
-1.9842452361268645 -0.4795771538004401
-1.0412757492945894 -0.6200018026739774
0.6857956149109004 -0.293552448277758
1.896448893407344 0.2539478871435175
1.6790374746606243 0.6102202840227942
0.19727659137174747 0.5069843608600325
-1.4330375889291476 0.021978873412737465
-1.9842452361268628 -0.4795771539721626
-1.0412757492945777 -0.6200018028027664
0.6857956149108865 -0.29355244837435324
1.8964488934073482 0.25394788707107213
1.679037474660632 0.6102202839684621
0.19727659137176212 0.5069843608192871
-1.4330375889291374 0.02197887338218102
-1.9842452361268612 -0.47957715399507955
-1.0412757492945903 -0.6200018028199572
0.6857956149108727 -0.2935524483872497
1.8964488934073436 0.2539478870613986
1.67903747466064 0.610220283961209
0.19727659137174847 0.5069843608138438
-1.4330375889291667 0.02197887337809118
-1.984245236126863 -0.4795771539981474
-1.0412757492946028 -0.6200018028222611
0.6857956149108856 -0.29355244838897443
1.896448893407348 0.2539478870601062

@ -0,0 +1,93 @@
#Тема 8 общее задание
## Задание
Разработайте программу, состоящую из трех модулей:
- Модуль 1 содержит функцию считывания числового списка из текстового файла с заданным именем (аргумент функции – имя файла). Элементы в файле могут располагаться по несколько на строке с разделением пробелом. Числа элементов в строках могут быть разными. Получен-ный список должен возвращаться в вызывающую программу.
- Модуль 2 содержит функцию расчета коэффициента корреляции по двум числовым спискам (аргументы функции – имена двух списков). Числа элементов в списках могут различаться. Значение коэффициента должно возвращаться в вызывающую программу.
- Модуль 3 запрашивает у пользователя и вводит имена двух файлов с исходными данными, дважды вызывает функцию из модуля 1 и считывает два списка из двух текстовых файлов. За-тем вызывает функцию расчета коэффициента корреляции с помощью функции из модуля 2 и отображает рассчитанное значение на экране с округлением до трех цифр после точки.
Подготовьте два текстовых файла с числовыми данными и проверьте по ним работу программы.
## Решение
Модуль чтения readerfile.py
```py
def reader(filename):
num = []
with open(filename, 'r', encoding = 'utf-8') as file:
for line in file:
elements = line.strip().split()
for elem in elements:
number = float(elem)
num.append(number)
return num
```
Модуль калькулятора корреляции correlate.py
```py
import math
def correlation(numbers1, numbers2):
if not numbers1 or not numbers2:
print('пусто')
return(0)
n = min(len(numbers1), len(numbers2))
x = numbers1[:n]
y = numbers2[:n]
meanx = sum(x)/n
meany = sum(y)/n
sum1 = 0
sum2 = 0
sum3 = 0
for i in range (n):
sum1 += ((x[i] - meanx)*(y[i] - meany))
sum2 += ((x[i] - meanx)**2)
sum3 += ((y[i] - meany)**2)
print(sum1,sum2,sum3)
return (sum1/math.sqrt(sum2*sum3))
```
Главный модуль mainfile.py
```py
from readerfile import reader
from correlate import correlation
def main():
print("_________Калькулятор корреляции_________")
file1 = input("Первый файл: ").strip()
file2 = input("Второй файл: ").strip()
numbers1 = reader(file1)
numbers2 = reader(file2)
print(numbers1)
print(numbers2)
cor = correlation(numbers1, numbers2)
print("Коэффициент корреляции - ", cor)
```
Результат работы программы:
```py
>>> import mainfile
>>> mainfile.main()
_________Калькулятор корреляции_________
Первый файл: num1.txt
Второй файл: num2.txt
[44.0, 50.0, 43.0, 30.0, 24.0, 10.0, 9.0, 1.0, 5.0, 29.0, 19.0, 14.0, 21.0]
[30.0, 60.0, 58.0, 40.0, 34.0, 20.0, 19.0, 16.0, 15.0, 39.0, 28.0, 24.0, 31.0]
2420.0 2930.0 2519.6923076923076
Коэффициент корреляции - 0.8906514939994264
```
Выводится содержимое файлов, а также суммы, полученные в correlate.py, для проверки достоверности работы расчетов

@ -0,0 +1,49 @@
import math
from indtask1 import calc
def generator(num=100):
A = 2
T =7
phase = 0.35
xval = []
for i in range(num):
val =A*math.sin(2*math.pi*i/T + phase)
xval.append(val)
return xval
def output(xval,T):
yval = []
yn = calc(xval[0],0,T)
yval.append(yn)
for i in range(1,len(xval)):
yn = calc(xval[i], yval[i-1], T)
yval.append(yn)
return(yval)
def writer(xval,yval,filename='result.txt'):
with open(filename, 'w', encoding = 'utf-8') as file:
for i in range(len(xval)):
file.write(f'{xval[i]}\t{yval[i]}\n')
print('Сохранено в result.txt')
def main():
num =100
T = 3
print('Вход:')
xval =generator(num)
print(xval)
print('Выход:')
yval= output(xval,T)
print(yval)
writer(xval,yval)
print('Первые пять:')
for i in range(5):
print(f'{i}\t{xval[i]}\t{yval[i]}\n')

@ -0,0 +1,49 @@
class Employee:
def __init__(self, fio="null", otdel = "null", dolz = "null", oklad = 0):
self.fio = fio
self.otdel = otdel
self.dolz = dolz
self.oklad = oklad
self.__bonus = []
def increase_oklad(self,summa):
self.oklad += summa
print(f'Оклад {self.fio} был повышен на {summa}, новый оклад равен {self.oklad}')
def move_otdel(self,new_otdel):
old_otdel = self.otdel
self.otdel = new_otdel
print(f'Сотрудник {self.fio} был переведен из {old_otdel} в {new_otdel}')
def change_dolz(self,new_dolz):
old_dolz = self.dolz
self.dolz = new_dolz
print(f'Должность сотрудника {self.fio} была изменена с {old_dolz} на {new_dolz}')
def give_bonus(self,bonus):
self.__bonus.append(bonus)
print(f'Сотруднику {self.fio} была выражена благодарность: {bonus}')
@property
def bonuses(self):
return self.__bonus.copy()
def info_out(self):
print('Информация о сотруднике:')
print(f'\n ФИО: {self.fio}')
print(f'\n Отдел: {self.otdel}')
print(f'\n Должность: {self.dolz}')
print(f'\n Оклад: {self.oklad:.2f}')
if self.__bonus:
print('Поощрения: ')
for i, poosh in enumerate(self.__bonus, 1):
print(f" {i}. {poosh}")
else:
print('no bonuses')

@ -0,0 +1,13 @@
prm=[2.5,4,1.3,0.8]
from SAU import *
xx=[0]+[1]*20
SAUe=SAU(prm)
yt=[]
for xt in xx:
SAUe.zdn_zn(xt)
SAUe.model()
SAUe.otobraz()
yt.append(SAUe.ypr[1])
import pylab
pylab.plot(yt)
pylab.show()

@ -0,0 +1,12 @@
import module3M2
def main():
print('Расчет 1')
module3M2.process()
print('\n' + '_+++++++++_')
print('\n Расчет 2')
module3M2.process()

@ -0,0 +1,11 @@
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)

@ -0,0 +1,22 @@
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]
y1=self.param[0]*y0
y2=inerz(y1,self.param[1],self.ypr[0])
y3=inerz(y2,self.param[2],self.ypr[1])
self.ypr[0]=y2
self.ypr[1]=y3
def otobraz(self):
print('y=',self.ypr[1])

@ -0,0 +1,3 @@
12 15 17 18 14
18 9 15 26 7
12 17 18 6 2

@ -0,0 +1,4 @@
20 20 40 41 35
26 27 50 34 38
25 48 65 54 29
29 21 17 18 20

@ -0,0 +1,50 @@
import math
def calc(sample):
minimum =min(sample)
maximum=max(sample)
print(minimum,maximum)
ran = maximum-minimum
n= len(sample)
mean = sum(sample)/n
sum1 = 0
for i in range(n):
sum1 = (sample[i]-mean)**2
std_dev = math.sqrt(1/n*sum1)
ratio = ran/std_dev if std_dev != 0 else 0
return {'min': minimum, 'max': maximum, 'range': ran, 'deviation': std_dev,'range to stddev': ratio, 'samplesize': n}
def intervals(sample,m):
stats =calc(sample)
minimum = stats['min']
maximum =stats['max']
sortedsam = sorted(sample)
n=len(sortedsam)
width =(maximum-minimum)/m
bounds = [minimum + i*width for i in range(m+1)]
c = [0]*m
s = 0
for i in range(m):
lower = bounds[i]
upper = bounds[i+1]
while s < n and sortedsam[s] <= upper:
if i ==m-1:
if sortedsam[s] >= lower:
c[i]+=1
else:
if lower <=sortedsam[s] < upper:
c[i]+=1
s +=1
return bounds, c

@ -0,0 +1,49 @@
import os
import module3M1
def reader(filename):
sample = []
with open(filename, 'r', encoding = 'utf-8') as file:
for line in file:
vals = line.strip().split()
for val in vals:
sample.append(float(val))
return sample
def display(bounds,c):
maxcount =max(c)
for i,count in enumerate(c):
lowers = bounds[i]
uppers =bounds[i+1]
bar = '[|]'*int(count)
print(f'({lowers}, {uppers}) : {count} элементов | {bar}')
def process():
while True:
filename = input('Имя файла:')
if os.path.exists(filename):
break
print(f'Еще раз, {filename} неверное название')
sample = reader(filename)
while True:
m =int(input('Введите число разбиений'))
if m > 0:
break
else:
('Введите ненулевое целое значение')
stats =module3M1.calc(sample)
print('Максимум: ', stats['max'])
print('Минимум: ', stats['min'])
print('Размах: ', stats['range'])
print('СО: ', stats['deviation'])
print('Отношение размаха к отклоеннию: ', stats['range to stddev'])
bounds, c = module3M1.intervals(sample,m)
display(bounds,c)

@ -0,0 +1,190 @@
# Тест по модулю 3
Савин Семён, А-02-23
## Задание
M3_14
1) Создайте модуль М1, содержащий две функции:
- функция 1: аргумент - список или кортеж с выборкой; функция должна произвести расчет по выборке списка с наименьшим и наибольшим значениями, размахом (разность наибольшего и наименьшего значений), оценкой стандартного отклонения и отношением размаха к стандартному отклонению;
- функция 2: аргументы - список или кортеж с выборкой и целочисленный параметр m; функция должна обратиться к функции 1 и затем определить границы m непересекающихся интервалов в диапазоне величины между наибольшим и наименьшим значениями по выборке, содержащих примерно одинаковое число элементов выборки; функция должна вернуть 2 списка: со значениями границ интервалов и с числами элементов в интервалах.
2) Создайте еще один модуль М2, в котором должны выполняться следующие операции:
- запрашивается имя текстового файла с выборкой, проверяется его наличие и при отсутствии - повторяется запрос;
- выборка вводится из файла и записывается в список (в строках файла может быть разное число значений, разделенных пробелами);
- запрашиваются у пользователя число интервалов разбиения;
- с помощью функций 1 и 2 производится определение границ интервалов и чисел элементов в них;
- отображается столбиковая диаграмма с интервалами и числами элементов выборки в них.
3) Создайте модуль М0 - главную программу, которая вызывает М2 и отображает результаты расчета на экране.
4) Проведите расчеты при 2-х разных файлах с выборками
## Решение
Содержимое модуля module3M1.py - расчеты
```py
import math
def calc(sample):
minimum =min(sample)
maximum=max(sample)
print(minimum,maximum)
ran = maximum-minimum
n= len(sample)
mean = sum(sample)/n
sum1 = 0
for i in range(n):
sum1 = (sample[i]-mean)**2
std_dev = math.sqrt(1/n*sum1)
ratio = ran/std_dev if std_dev != 0 else 0
return {'min': minimum, 'max': maximum, 'range': ran, 'deviation': std_dev,'range to stddev': ratio, 'samplesize': n}
def intervals(sample,m):
stats =calc(sample)
minimum = stats['min']
maximum =stats['max']
sortedsam = sorted(sample)
n=len(sortedsam)
width =(maximum-minimum)/m
bounds = [minimum + i*width for i in range(m+1)]
c = [0]*m
s = 0
for i in range(m):
lower = bounds[i]
upper = bounds[i+1]
while s < n and sortedsam[s] <= upper:
if i ==m-1:
if sortedsam[s] >= lower:
c[i]+=1
else:
if lower <=sortedsam[s] < upper:
c[i]+=1
s +=1
return bounds, c
```
Содержимое модуля module3M2.py - чтение, вывод, обработка данных и передача в M1
```py
import os
import module3M1
def reader(filename):
sample = []
with open(filename, 'r', encoding = 'utf-8') as file:
for line in file:
vals = line.strip().split()
for val in vals:
sample.append(float(val))
return sample
def display(bounds,c):
maxcount =max(c)
for i,count in enumerate(c):
lowers = bounds[i]
uppers =bounds[i+1]
bar = '[|]'*int(count)
print(f'({lowers}, {uppers}) : {count} элементов | {bar}')
def process():
while True:
filename = input('Имя файла:')
if os.path.exists(filename):
break
print(f'Еще раз, {filename} неверное название')
sample = reader(filename)
while True:
m =int(input('Введите число разбиений'))
if m > 0:
break
else:
('Введите ненулевое целое значение')
stats =module3M1.calc(sample)
print('Максимум: ', stats['max'])
print('Минимум: ', stats['min'])
print('Размах: ', stats['range'])
print('СО: ', stats['deviation'])
print('Отношение размаха к отклоеннию: ', stats['range to stddev'])
bounds, c = module3M1.intervals(sample,m)
display(bounds,c)
```
Главные модуль вызова:
```py
import module3M2
def main():
print('Расчет 1')
module3M2.process()
print('\n' + '_+++++++++_')
print('\n Расчет 2')
module3M2.process()
```
Вывод в консоли:
```py
>>> main()
Расчет 1
Имя файла:mod3.txt
Введите число разбиений5
2.0 26.0
Максимум: 26.0
Минимум: 2.0
Размах: 24.0
СО: 3.0295336397000234
Отношение размаха к отклоеннию: 7.922011389969717
2.0 26.0
(2.0, 6.8) : 2 элементов | [|][|]
(6.8, 11.6) : 2 элементов | [|][|]
(11.6, 16.4) : 5 элементов | [|][|][|][|][|]
(16.4, 21.2) : 5 элементов | [|][|][|][|][|]
(21.2, 26.0) : 1 элементов | [|]
_+++++++++_
Расчет 2
Имя файла:mod31.txt
Введите число разбиений6
17.0 65.0
Максимум: 65.0
Минимум: 17.0
Размах: 48.0
СО: 2.8733473510872303
Отношение размаха к отклоеннию: 16.705254929181304
17.0 65.0
(17.0, 25.0) : 6 элементов | [|][|][|][|][|][|]
(25.0, 33.0) : 4 элементов | [|][|][|][|]
(33.0, 41.0) : 4 элементов | [|][|][|][|]
(41.0, 49.0) : 1 элементов | [|]
(49.0, 57.0) : 2 элементов | [|][|]
(57.0, 65.0) : 1 элементов | [|]
```

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

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

После

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

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

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

После

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

@ -0,0 +1,230 @@
# Отчет по Теме 9
Савин Семён, А-02-23
## 2.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
```
## 2.2. Создание класса-наследника
```py
>>> class Class2(Class1):
def otobrazh(self):
print('значение=', self.data)
>>> z3 = Class2()
>>> dir(z3)
['__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__module__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', 'otobrazh', 'zad_zn']
>>> z3.zad_zn('Совсем новое')
>>> z3.otobrazh()
значение= Совсем новое
>>> z1.otobrazh()
новое значение атрибута у экз.1
>>> del z1,z2,z3
```
## 3. Использование классов, содержащихся в модулях
![Скриншот содержания файла Mod3.py](png1.png)
```py
>>> from Mod3 import Class1
>>> z4 = Class1()
>>> z4.data = 'значение данного data у экз.4'
>>> z4.otobrazh()
значение данного data у экз.4
>>> import Mod3
>>> z4 = Mod3.Class2()
>>> z4.zad_zn('Класс из модуля')
>>> z4.otobrazh()
значение= Класс из модуля
>>> Mod3.otobrazh('Объект')
значение объекта= Объект
>>>
```
вызов функция выводит значение objekt, Class2 переопределяет otobrazh в Class1
## 4. Использование специальных методов
```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
```
## 5. Присоединение атрибутов к классу
```py
>>> dir(Class3)
['__add__', '__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__module__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', 'otobrazh', 'zad_dr_zn', 'zad_zn']
>>> Class3.fio = 'Иванов И.И.'
>>> dir(Class3)
['__add__', '__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__module__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', 'fio', 'otobrazh', 'zad_dr_zn', 'zad_zn']
>>> z7 = Class3(123)
>>> dir(z7)
['__add__', '__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__module__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__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__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__module__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', 'data', 'fio', 'otobrazh', 'rozden', 'zad_dr_zn', 'zad_zn']
>>> dir(Class3)
['__add__', '__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__module__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', 'fio', 'otobrazh', 'zad_dr_zn', 'zad_zn']
```
## 6. Выявление родительских классов
```py
>>> Class3.__bases__
(<class '__main__.Class2'>,)
>>> Class2.__bases__
(<class '__main__.Class1'>,)
>>> 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'>)
```
## 7. Создание свойства класса
```py
>>> class Class4:
def __init__(sam,znach):
sam.__prm = znach
def chten(sam):
return sam.__prm
def zapis(sam,znch):
sam.__prm=znch
def stiran(sam):
del sam.__prm
svojstvo=property(chten,zapis,stiran)
>>> 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#108>", line 1, in <module>
exempl.svojstvo
File "<pyshell#102>", line 5, in chten
return sam.__prm
AttributeError: 'Class4' object has no attribute '_Class4__prm'
```
У экземпляра удаляется атрибут, при последующем чтении метода выходит ошибка отсутствия атрибута
## 8. Пример представления модели САУ в виде класса
Содержание файла 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]
y1=self.param[0]*y0
y2=inerz(y1,self.param[1],self.ypr[0])
y3=inerz(y2,self.param[2],self.ypr[1])
self.ypr[0]=y2
self.ypr[1]=y3
def otobraz(self):
print('y=',self.ypr[1])
```
Содержание файла MAIN.py
```py
prm=[2.5,4,1.3,0.8]
from SAU import *
xx=[0]+[1]*20
SAUe=SAU(prm)
yt=[]
for xt in xx:
SAUe.zdn_zn(xt)
SAUe.model()
SAUe.otobraz()
yt.append(SAUe.ypr[1])
import pylab
pylab.plot(yt)
pylab.show()
```
Результат
```py
================================= RESTART: C:\Users\somas\python-labs\TEMA9\MAIN.py ================================
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
```
![Скриншот графика](png2.png)

@ -0,0 +1,131 @@
# Общее задание по Теме 9
## Задание
Создайте и запишите в модуль класс, содержащий следующие компоненты:
- конструктор, задающий четырем атрибутам (fio, otdel, dolzhnost, oklad), представляющим фамилии сотрудников, название отделов, названия должностей сотрудников и размеры их окладов, некоторые начальные значения;
- метод для обеспечения операции повышения оклада сотрудника на заданное значение;
- метод для обеспечения перевода сотрудника из одного отдела в другой;
- метод для изменения должности сотрудника;
- свойство, содержащее перечень (список) поощрений сотрудника.
Создайте 2 экземпляра класса, задайте им некоторые значения атрибутов и свойства. Отобра-зите эти значения. Попробуйте с этими экземплярами операции перевода из отдела в отдел, изменения должности и оклада, объявления благодарности.
## Решение
Содержание файла EMPLOYEES.py
```py
class Employee:
def __init__(self, fio="null", otdel = "null", dolz = "null", oklad = 0):
self.fio = fio
self.otdel = otdel
self.dolz = dolz
self.oklad = oklad
self.__bonus = []
def increase_oklad(self,summa):
self.oklad += summa
print(f'Оклад {self.fio} был повышен на {summa}, новый оклад равен {self.oklad}')
def move_otdel(self,new_otdel):
old_otdel = self.otdel
self.otdel = new_otdel
print(f'Сотрудник {self.fio} был переведен из {old_otdel} в {new_otdel}')
def change_dolz(self,new_dolz):
old_dolz = self.dolz
self.dolz = new_dolz
print(f'Должность сотрудника {self.fio} была изменена с {old_dolz} на {new_dolz}')
def give_bonus(self,bonus):
self.__bonus.append(bonus)
print(f'Сотруднику {self.fio} была выражена благодарность: {bonus}')
@property
def bonuses(self):
return self.__bonus.copy()
def info_out(self):
print('Информация о сотруднике:')
print(f'\n ФИО: {self.fio}')
print(f'\n Отдел: {self.otdel}')
print(f'\n Должность: {self.dolz}')
print(f'\n Оклад: {self.oklad:.2f}')
if self.__bonus:
print('Поощрения: ')
for i, poosh in enumerate(self.__bonus, 1):
print(f" {i}. {poosh}")
else:
print('no bonuses')
```
Работа модуля
```py
>>> from EMPLOYEES import Employee
>>> e1 = Employee("Иванов И.И.", "IT", "Программист", 110000)
>>> e2 = Employee("Сидоров С.Е.", "Плановый", "Эконмист", 100000)
>>> e1.info_out()
Информация о сотруднике:
ФИО: Иванов И.И.
Отдел: IT
Должность: Программист
Оклад: 110000.00
no bonuses
>>> e2.info_out()
Информация о сотруднике:
ФИО: Сидоров С.Е.
Отдел: Плановый
Должность: Эконмист
Оклад: 100000.00
no bonuses
>>> e1.increase_oklad(70000)
Оклад Иванов И.И. был повышен на 70000, новый оклад равен 180000
>>> e2.move_otdel('Логистика')
Сотрудник Сидоров С.Е. был переведен из Плановый в Логистика
>>> e2.change_dolz('Аналитик')
Должность сотрудника Сидоров С.Е. была изменена с Эконмист на Аналитик
>>> e1.give_bonus('За успешную работу в качестве лидера IT команды')
Сотруднику Иванов И.И. была выражена благодарность: За успешную работу в качестве лидера IT команды
>>> e1.info_out()
Информация о сотруднике:
ФИО: Иванов И.И.
Отдел: IT
Должность: Программист
Оклад: 180000.00
Поощрения:
1. За успешную работу в качестве лидера IT команды
>>> e2.info_out()
Информация о сотруднике:
ФИО: Сидоров С.Е.
Отдел: Логистика
Должность: Аналитик
Оклад: 100000.00
no bonuses
```
Загрузка…
Отмена
Сохранить