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

...

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

Автор SHA1 Сообщение Дата
6f66915f81 test:added solution 2025-12-08 16:17:07 +03:00
8e76de4897 test:added solution 2025-12-08 16:03:51 +03:00
794737e5dc task:fixed solution 2025-12-07 19:12:43 +03:00
4376379cfa task:added solution 2025-12-07 19:11:15 +03:00
b5f6053beb report:added report 2025-12-07 18:36:55 +03:00
4d9c903624 task:added solution 2025-12-07 01:55:00 +03:00
84755ea1b2 report:fixed2 2025-12-07 01:03:38 +03:00
d5a6b8ebd1 report:fixed formatting 2025-12-07 01:02:12 +03:00
5a065ade41 report:added report 2025-12-07 01:00:47 +03:00
046a19f44a test: added again 2025-11-24 14:21:29 +03:00
b160c212b3 test:added solution 2025-11-24 14:19:56 +03:00
8bcb8692ad report: fixed formatting bug 2025-11-19 17:31:27 +03:00
8af32b77dd report:added report 2025-11-19 17:01:06 +03:00
edebdeacf4 test:fixed 2025-11-10 14:23:49 +03:00
1ea7dbb683 test:finished test 2025-11-10 14:18:06 +03:00
85ebd5306c report:fixed screenshots 2025-10-26 21:26:49 +03:00
2e052faf94 report:created report 2025-10-26 21:24:14 +03:00
022cacca1f test:solution uploaded 2025-09-29 14:18:14 +03:00
c688775929 report:created report 2025-09-28 20:47:09 +03:00
65c7d40146 report:fixed screenshot 2025-09-28 02:54:48 +03:00
8d662c9e35 report:created report 2025-09-28 02:51:50 +03:00
74a26eb50f report:fixed report 2025-09-21 07:04:47 +03:00
ace6e9a02d report: report created 2025-09-21 06:59:13 +03:00
c810b11f2c report: added report 2025-09-15 01:38:23 +03:00
0b4f7d7041 day1:test question answer added 2025-09-05 18:23:17 +03:00
137d88ddc4 day1:fixed last screenshot 2025-09-05 18:16:23 +03:00
bacf11bf08 day1:fixed report again x2 2025-09-05 18:10:56 +03:00
aca81e7fd3 day1:fixed report again 2025-09-05 18:03:01 +03:00
ab65c96b53 day1:fixed report 2025-09-05 17:57:26 +03:00
5b09eb86f4 day1:report 2025-09-05 17:52:22 +03:00
733313c0f5 report file created 2025-09-05 16:09:22 +03:00
94 изменённых файлов: 4736 добавлений и 2 удалений

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

@@ -0,0 +1,5 @@
#Программа по Теме 1 Мамакин Ярослав Романович
print('Hello')
h=input('Your name=')
import os
os.chdir(r'C:\Users\uprkt\Desktop\ПО\python-labs\TEMA1')

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

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

После

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

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

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

После

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

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

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

После

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

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

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

После

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

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

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

После

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

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

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

После

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

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

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

После

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

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

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

После

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

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

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

После

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

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

@@ -0,0 +1,49 @@
#Протокол по Теме 1 Мамакин Ярослав Романович
Python 3.13.7 (tags/v3.13.7:bcee1c3, Aug 14 2025, 14:15:11) [MSC v.1944 64 bit (AMD64)] on win32
Enter "help" below or click "Help" above for more information.
import os
os.chdir(r'C:\Users\uprkt\Desktop\ПО\python-labs\TEMA1')
import Pr0
Hello
Your name=Yaroslav
import prb1
Как Вас зовут? Yaroslav
Привет, Yaroslav
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.

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

@@ -0,0 +1,67 @@
# Отчет по теме 1
Мамакин Ярослав, А-02-23
## 1 Изучение среды IDLE
## 1.1 Работа с интерпретатором
![Скриншот окна интерпретатора с введенными командами](figure1.png)
## 1.2 Задание рабочей папки в среде IDLE
```py
import os
os.chdir(r'C:\Users\uprkt\Desktop\ПО\python-labs\TEMA1')
```
## 1.3 Настройка среды
![Скриншот заданных настроек среды](figure2.png)
## 1.4 Составил программу
```py
#Программа по Теме 1 Мамакин Ярослав Романович
print('Hello')
h=input('Your name=')
import os
os.chdir(r'C:\Users\uprkt\Desktop\ПО\python-labs\TEMA1')
```
## 1.5 Запустил программу на выполнение
![Результат выполнения программы](figure3.png)
## 1.6 Запустил программу prb1.py
![Результат выполнения](figure4.png)
## 1.7 Изучение состава рабочего каталога
При открытии файла с результатом работы компилятора текстовый редактор выводит бессмысленный набор символов, т. к. результат работы компилятора - двоичный файл
## 1.8 Изучил команды для быстрой помощи
```py
help(print),help(input)
```
При нажатии F1 открылась страница с документацией:
![Документация python](figure5.png)
## 1.9 Работа с окнами редактора
![Открытие и переключение](figure6.png)
![Запуск программы через Run](figure7.png)
## 1.10 Изучил программу tdemo_chaos.py
![Текст и результат выполнения](figure8.png)
## 1.11 Изучил примеры программ из среды
![Текст программ-примеров и результаты их работы](figure9.png)

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

@@ -0,0 +1,16 @@
# Общее контрольное задание по теме 1
Мамакин Ярослав, А-02-23
## Вопрос
Можно ли писать несколько инструкций в одной строке командного окна?
## Ответ
Да, можно, инструкции записываются через запятую. Например:
```py
help(print),help(input)
```

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

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

После

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

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

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

После

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

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

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

После

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

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

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

После

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

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

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

После

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

122
TEMA2/protocol.py Обычный файл
Просмотреть файл

@@ -0,0 +1,122 @@
Протокол по теме 2 Мамакин Ярослав Романович
f1=16
f2=3
dir()
dir(f1)
type(f2)
del f1,f2
gg1=1.6
hh1='Строка'
kluch = keyword.kwlist
print(max([len('stroka'), abs(min([-4, -5]))]))
Gg1=45
gg1,Gg1
(1.6, 45)
bb1=True
type(bb1)
ii1=-1234567890
type(ii1)
dv1=0b1101010
type(dv1)
cc2=complex(3.67,-0.45)
type(cc2)
ss1a='Это - \'строка символов \', \n \t выводимая на двух строках'
print(ss1a)
Это - 'строка символов ',
выводимая на двух строках
ss1b = 'Меня зовут: \n Мамакин Я. Р.'
print(ss1b)
Меня зовут:
Мамакин Я. Р.
ss1='Это - строка символов'
print(ss1[17:3:-2])
омсаот
print(ss1[-4:3:-2])
омсаот
ss1[4]='='
Traceback (most recent call last):
File "<pyshell#41>", line 1, in <module>
ss1[4]='='
TypeError: 'str' object does not support item assignment
ss1=ss1[:4]+'='+ss1[5:]
print(ss1)
Это = строка символов
print(ss1b[22:24]+ss1b[14:21]+ss1b[-1])
Я.Мамакин.
spis1=[111,'Spisok',5-9j]
stup=[0,0,1,1,1,1,1,1,1]
spis1[1]='Список'
spis1
[111, 'Список', (5-9j)]
len(spis1)
3
spis1.append('New item')
spis1.append(ss1b)
spis1
[111, 'Список', (5-9j), 'New item', 'Меня зовут: \n Мамакин Я. Р.']
spis1.pop(1)
'Список'
stup.remove(1)
stup.reverse()
stup
[1, 1, 1, 1, 1, 1, 0, 0]
spis2=[spis1,[4,5,6,7]]
spis2[0][1]=78
spis1
[111, 78, 'New item', 'Меня зовут: \n Мамакин Я. Р.']
spis3=[56, 'sem-vosem', False, [7, 8]]
stup[-8::2]
[1, 1, 1, 0]
kort1=(222,'Kortezh',77+8j)
kort1= kort1+(1,2)
kort2=kort1[:2]+kort1[3:]
kort1.index(2)
4
kort1.count(222)
1
kort1[2]=90
Traceback (most recent call last):
File "<pyshell#67>", line 1, in <module>
kort1[2]=90
TypeError: 'tuple' object does not support item assignment
kort3=('7-8', 'pyat-shest', (7, 8))
kort3
('7-8', 'pyat-shest', (7, 8))
dic1={'Saratov':145, 'Orel':56, 'Vologda':45}
dic1['Orel']
56
dic1['Pskov']=78
dic1
{'Saratov': 145, 'Orel': 56, 'Vologda': 45, 'Pskov': 78}
sorted(dic1.keys())
['Orel', 'Pskov', 'Saratov', 'Vologda']
sorted(dic1.values())
[45, 56, 78, 145]
dic2={1:'mean',2:'standart deviation',3:'correlation'}
dic3={'statistics':dic2,'POAS':['base','elementary','programming']}
dic3['statistics'][2]
'standart deviation'
dic4=dict([(1,['A','B','C']),(2,[4,5]),('Q','Prim'),('Stroka',ss1b)])
dic5=dict(zip(['A','B','C','Stroka'],[16,-3,9,ss1b]))
kortn=(7,8,9,10,11,12,13)
listn=['sem', 'vosem', 'devyat', 'desyat', 'odinnadsat']
dic6=dict(zip(kortn,listn))
dic6
{7: 'sem', 8: 'vosem', 9: 'devyat', 10: 'desyat', 11: 'odinnadsat'}
mnoz1={'двигатель','датчик','линия связи','датчик','микропроцессор','двигатель'}
len(mnoz1)
4
'датчик' in mnoz1
True
mnoz1.add('реле')
mnoz1.remove('линия связи')
mno={7, '8', [5, 6]}
Traceback (most recent call last):
File "<pyshell#90>", line 1, in <module>
mno={7, '8', [5, 6]}
TypeError: unhashable type: 'list'
mno={7, '8'}
mno.add(7)
mno
{'8', 7}

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

@@ -0,0 +1,193 @@
# Отчет по теме 2
Мамакин Ярослав, А-02-23
## 1 Изучение простых объектов
![Скриншот выполненных инструкций](figure1.png)
После присваивания значений переменные отображаются в пространстве имен.
Тип - int
После удаления из оперативной памяти переменные не отображаются в пространстве имен.
## 2 Правила именования объектов
![Скриншот выполненных инструкций](figure2.png)
Переменные с правильными именами получили свои значения, с неправильными - вызвали диагностическое сообщение.
## 3 Вывод списка ключевых слов
![Вывод списка](figure3.png)
Сохранил список в переменную kluch:
```py
kluch = keyword.kwlist
```
## 4 Cписок встроенных идентификаторов
![Вывод списка](figure4.png)
Изучил приведенные функции, пример:
```py
print(max([len('stroka'), abs(min([-4, -5]))]))
```
Инструкция выводит длину строки, 6.
## 5 Чувствительность к регистру
![Демонстрация чувствительности к регистру](figure5.png)
## 6 Базовые типы объектов
Логический
```py
>>>bb1=True
>>>type(bb1)
<class 'bool'>
```
Числовые
```py
>>>ii1=-1234567890
>>>type(ii1)
<class 'int'>
>>>dv1=0b1101010
>>>type(dv1)
<class 'int'>
>>>cc2=complex(3.67,-0.45)
>>>type(cc2)
<class 'complex'>
```
Строка
```py
>>>ss1a='Это - \'строка символов \', \n \t выводимая на двух строках'
>>>print(ss1a)
Это - 'строка символов ',
выводимая на двух строках
>>>ss1b = 'Меня зовут: \n Мамакин Я. Р.'
>>>print(ss1b)
Меня зовут:
Мамакин Я. Р.
>>>ss1='Это - строка символов'
>>>print(ss1[17:3:-2])
омсаот
>>>print(ss1[-4:3:-2])
омсаот
# индексы -4 и 17 обращаются к одному элементу
>>>ss1[4]='='
Traceback (most recent call last):
File "<pyshell#41>", line 1, in <module>
ss1[4]='='
TypeError: 'str' object does not support item assignment
>>>ss1=ss1[:4]+'='+ss1[5:]
>>>print(ss1)
Это = строка символов
>>>print(ss1b[22:24]+ss1b[14:21]+ss1b[-1])
Я.Мамакин.
```
## 6 Сложные типы объектов
Списки:
```py
>>>spis1=[111,'Spisok',5-9j]
>>>stup=[0,0,1,1,1,1,1,1,1]
>>>stup[-8::2]
[1, 1, 1, 0] # 7, 5, 3 и 1 индексы
>>>spis1[1]='Список'
>>>spis1
[111, 'Список', (5-9j)]
>>>len(spis1)
3
>>>spis1.append('New item')
>>>spis1.append(ss1b)
>>>spis1
[111, 'Список', (5-9j), 'New item', 'Меня зовут: \n Мамакин Я. Р.']
>>>spis1.pop(1)
'Список'
>>>stup.remove(1)
>>>stup.reverse()
>>>stup
[1, 1, 1, 1, 1, 1, 0, 0]
>>>spis2=[spis1,[4,5,6,7]]
>>>spis2[0][1]=78
>>>spis1
[111, 78, 'New item', 'Меня зовут: \n Мамакин Я. Р.']
>>>spis3=[56, 'sem-vosem', False, [7, 8]]
```
Кортежи:
```py
>>>kort1=(222,'Kortezh',77+8j)
>>>kort1= kort1+(1,2)
>>>kort2=kort1[:2]+kort1[3:]
>>>kort1.index(2)
4
>>>kort1.count(222)
1
>>>kort1[2]=90
Traceback (most recent call last):
File "<pyshell#67>", line 1, in <module>
kort1[2]=90
TypeError: 'tuple' object does not support item assignment
>>>kort3=('7-8', 'pyat-shest', (7, 8))
>>>kort3
('7-8', 'pyat-shest', (7, 8))
```
Словари:
```py
dic1={'Saratov':145, 'Orel':56, 'Vologda':45}
dic1['Orel']
56
dic1['Pskov']=78
dic1
{'Saratov': 145, 'Orel': 56, 'Vologda': 45, 'Pskov': 78}
sorted(dic1.keys())
['Orel', 'Pskov', 'Saratov', 'Vologda']
sorted(dic1.values())
[45, 56, 78, 145]
dic2={1:'mean',2:'standart deviation',3:'correlation'}
dic3={'statistics':dic2,'POAS':['base','elementary','programming']}
dic3['statistics'][2]
'standart deviation'
dic4=dict([(1,['A','B','C']),(2,[4,5]),('Q','Prim'),('Stroka',ss1b)])
dic5=dict(zip(['A','B','C','Stroka'],[16,-3,9,ss1b]))
kortn=(7,8,9,10,11,12,13)
listn=['sem', 'vosem', 'devyat', 'desyat', 'odinnadsat']
dic6=dict(zip(kortn,listn))
dic6
{7: 'sem', 8: 'vosem', 9: 'devyat', 10: 'desyat', 11: 'odinnadsat'}
```
Функция zip остановилась на более коротком из итерируемых объектов
Множества:
```py
mnoz1={'двигатель','датчик','линия связи','датчик','микропроцессор','двигатель'}
len(mnoz1)
4
'датчик' in mnoz1
True
mnoz1.add('реле')
mnoz1.remove('линия связи')
mno={7, '8', [5, 6]}
Traceback (most recent call last):
File "<pyshell#90>", line 1, in <module>
mno={7, '8', [5, 6]}
TypeError: unhashable type: 'list'
mno={7, '8'}
mno.add(7)
mno
{'8', 7}
```
Список не может быть элементом множества

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

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

285
TEMA3/protocol.py Обычный файл
Просмотреть файл

@@ -0,0 +1,285 @@
>>>logiz1=bool(56)
>>>logiz2=bool(0)
>>>logiz3=bool("Beta")
>>>logiz4=bool("")
>>>logiz1
True
>>>logiz2
False
>>>logiz3
True
>>>logiz4
False
>>>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#24>", 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
>>>flt1=float(789)
>>>flt2=float(-6.78e2)
>>>flt3=float("Infinity")
>>>flt4=float("-inf")
>>>flt1
789.0
>>>flt2
-678.0
>>>flt3
inf
>>>flt4
-inf
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})
spis1=list("Строка символов")
spis2=list((124,236,-15,908))
spis3=list({"A":1,"B":2,"C":9})
kort7=tuple('Строка символов')
kort8=tuple(spis2)
kort9=tuple({"A":1,"B":2,"C":9})
del strk5, kort8
dir()
['__annotations__', '__builtins__', '__doc__', '__loader__', '__name__', '__package__', '__spec__', 'flt1', 'flt2', 'flt3', 'flt4', 'kort7', 'kort9', 'logiz1', 'logiz2', 'logiz3', 'logiz4', 'os', 'spis1', 'spis2', 'spis3', 'str1', 'str2', 'strk1', 'strk2', 'strk3', 'strk4', 'tt1', 'tt2', 'tt3', 'tt4', 'u', 'v']
imya = 'Мамакин Я. Р.'
imya = list(imya)
imya = tuple(imya)
imya = str(imya)
imya
"('М', 'а', 'м', 'а', 'к', 'и', 'н', ' ', 'Я', '.', ' ', 'Р', '.')"
>>>12+7+90
109
>>>5.689e-1 - 0.456
0.11289999999999994
>>>23.6+54
77.6
>>>14-56.7+89
46.3
>>>-6.7*12
-80.4
>>>-234.5/6
-39.083333333333336
>>>a=178/45
>>>a,type(a)
(3.9555555555555557, <class 'float'>)
>>>b=178//45
>>>c=-24.6//12.1
>>>b
3
>>>c
-3.0
>>>type(b)
<class 'int'>
>>>type(c)
<class 'float'>
>>>148%33
16
>>>12.6%3.8
1.2000000000000002
>>>14**3
2744
>>>e=2.7**3.6
>>>e
35.719843790663525
>>>type(e)
<class 'float'>
>>>f=complex(2+3j)
>>>g=f**3.6
>>>type(g)
<class 'complex'>
>>>h=f%5
Traceback (most recent call last):
File "<pyshell#81>", line 1, in <module>
h=f%5
TypeError: unsupported operand type(s) for %: 'complex' and 'int'
>>>h1=f//3
Traceback (most recent call last):
File "<pyshell#82>", line 1, in <module>
h1=f//3
TypeError: unsupported operand type(s) for //: 'complex' and 'int'
>>>dv1=9
>>>dv2=~dv1
>>>dv2, type(dv2)
(-10, <class 'int'>)
>>>7&9
1
>>>7&8
0
>>>7|9
15
>>>7|8
15
>>>14|5
15
>>>14^5
11
>>>h=14
>>>g=h<<2
>>>g1=h>>1
>>>g2=h>>2
>>>g
56
>>>g1
7
>>>g2
3
>>>255^128
127 # 11111111 искл. ИЛИ 10000000 = 1111111
>>>'Система '+'регулирования'
'Система регулирования'
>>>['abc','de','fg']+['hi','jkl']
['abc', 'de', 'fg', 'hi', 'jkl']
>>>('abc','de','fg')+('hi','jkl')
('abc', 'de', 'fg', 'hi', 'jkl')
>>>'ля-'*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)
>>>stroka='Система автоматического управления'
>>>'автомат' in stroka
True
>>>'ку' in ['ку','-']*3
True
>>>'ля-' in ('abc', 'de', 'fg', 'hi', 'jkl')
False
>>>stroka='Температура = %g %s %g'
>>>stroka % (16,' меньше ',25)
'Температура = 16 меньше 25'
>>>stroka='Температура = %(zn1)g %(sravn)s %(zn2)g'
>>>stroka % {'zn1':16,'sravn':' меньше ','zn2':25}
'Температура = 16 меньше 25'
>>>zz=-12
>>>zz+=5
>>>zz-=3
>>>stroka='Система'
>>>stroka+=' регулирования'
>>>stroka
'Система регулирования'
>>>zz*=5
>>>s='s'
>>>s*=5
>>>s
'sssss'
>>>zz
-25.0
>>>zz//=4
>>>zz
-7.0
>>>zz%=3
>>>zz
2.0
>>>zz**=5
>>>zz
32.0
>>>w=v=10
>>>n1,n2,n3=(11,-3,'all')
>>>n1,n2,n3=[1,2,3] # можно
>>>n1,n2,n3={1:'a',2:'b',3:'c'} # можно
>>>n1
1
>>>w<=v
True
>>>w==v
True
>>>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
>>>a=17
>>>b=-6
>>>(a>=b) and ('book' in mnoz1) and not ('Pskov' in dic1)
True
>>>(b>=a) or not ('pen' in dic1)
True
>>>w is v
True
>>>w1=['A','B']
>>>v1=['A','B']
>>>w1 is v1
False
stroka='Микропроцессорная система управления'
dir(stroka)
['__add__', '__class__', '__contains__', '__delattr__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__getnewargs__', '__getstate__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__iter__', '__le__', '__len__', '__lt__', '__mod__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__rmod__', '__rmul__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', 'capitalize', 'casefold', 'center', 'count', 'encode', 'endswith', 'expandtabs', 'find', 'format', 'format_map', 'index', 'isalnum', 'isalpha', 'isascii', 'isdecimal', 'isdigit', 'isidentifier', 'islower', 'isnumeric', 'isprintable', 'isspace', 'istitle', 'isupper', 'join', 'ljust', 'lower', 'lstrip', 'maketrans', 'partition', 'removeprefix', 'removesuffix', 'replace', 'rfind', 'rindex', 'rjust', 'rpartition', 'rsplit', 'rstrip', 'split', 'splitlines', 'startswith', 'strip', 'swapcase', 'title', 'translate', 'upper', 'zfill']
stroka.find('пр')
5
stroka.count("с")
4
stroka.replace(' у',' автоматического у')
'Микропроцессорная система автоматического управления'
spis22=stroka.split(' ')
stroka.upper()
'МИКРОПРОЦЕССОРНАЯ СИСТЕМА УПРАВЛЕНИЯ'
stroka3=" ".join(spis22)
stroka3.partition("с")
('Микропроце', 'с', 'сорная система управления')
stroka3.rpartition("с")
('Микропроцессорная си', 'с', 'тема управления')
strk1='Момент времени {}, значение = {}'
strk1.format(1,89.7)
'Момент времени 1, значение = 89.7'
strk2='Момент времени {1}, значение = {0}:{2}'
strk2.format(36.7,2,'норма!')
'Момент времени 2, значение = 36.7:норма!'
strk3='Момент времени {num}, значение = {znch}'
strk3.format(znch=89.7,num=2)
'Момент времени 2, значение = 89.7'
spsk = [1,2,3,4,5,6]
dir(spsk)
['__add__', '__class__', '__class_getitem__', '__contains__', '__delattr__', '__delitem__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__getstate__', '__gt__', '__hash__', '__iadd__', '__imul__', '__init__', '__init_subclass__', '__iter__', '__le__', '__len__', '__lt__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__reversed__', '__rmul__', '__setattr__', '__setitem__', '__sizeof__', '__str__', '__subclasshook__', 'append', 'clear', 'copy', 'count', 'extend', 'index', 'insert', 'pop', 'remove', 'reverse', 'sort']
spsk = [1,2,3,4,5,6]
spsk.pop(2)
3
spsk.append('c')
spsk
[1, 2, 4, 5, 6, 'c']
spsk.insert(2,'a')
spsk
[1, 2, 'a', 4, 5, 6, 'c']
spsk.count('a')
1
kort = (1,2)
dir(kort)
['__add__', '__class__', '__class_getitem__', '__contains__', '__delattr__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__getnewargs__', '__getstate__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__iter__', '__le__', '__len__', '__lt__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__rmul__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', 'count', 'index']
len(kort)
2
dict1={1:'a',2:'b',3:'c'}
dir(dict1)
['__class__', '__class_getitem__', '__contains__', '__delattr__', '__delitem__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__getstate__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__ior__', '__iter__', '__le__', '__len__', '__lt__', '__ne__', '__new__', '__or__', '__reduce__', '__reduce_ex__', '__repr__', '__reversed__', '__ror__', '__setattr__', '__setitem__', '__sizeof__', '__str__', '__subclasshook__', 'clear', 'copy', 'fromkeys', 'get', 'items', 'keys', 'pop', 'popitem', 'setdefault', 'update', 'values']
dict1.popitem()
(3, 'c')

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

@@ -0,0 +1,492 @@
# Отчет по теме 3
Мамакин Ярослав, А-02-23
## 1 Начало работы
Запустил среду IDLE, установил рабочую папку.
## 2 Преобразование простых базовых типов объектов
## 2.1 Преобразование в логический тип с помощью функции bool(<Объект>)
```py
>>>logiz1=bool(56)
>>>logiz2=bool(0)
>>>logiz3=bool("Beta")
>>>logiz4=bool("")
>>>logiz1
True
>>>logiz2
False
>>>logiz3
True
>>>logiz4
False
```
## 2.2 Преобразование в число
В тип int
```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#24>", 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
```
В тип float
```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})
```
## 3.2 Преобразование в список
```py
spis1=list("Строка символов")
spis2=list((124,236,-15,908))
spis3=list({"A":1,"B":2,"C":9})
```
## 3.3 В кортеж
```py
kort7=tuple('Строка символов')
kort8=tuple(spis2)
kort9=tuple({"A":1,"B":2,"C":9})
```
## 3.4 Удаление объектов
```py
del strk5, kort8
dir()
['__annotations__', '__builtins__', '__doc__', '__loader__', '__name__', '__package__', '__spec__', 'flt1', 'flt2', 'flt3', 'flt4', 'kort7', 'kort9', 'logiz1', 'logiz2', 'logiz3', 'logiz4', 'os', 'spis1', 'spis2', 'spis3', 'str1', 'str2', 'strk1', 'strk2', 'strk3', 'strk4', 'tt1', 'tt2', 'tt3', 'tt4', 'u', 'v']
imya = 'Мамакин Я. Р.'
imya = list(imya)
imya = tuple(imya)
imya = str(imya)
imya
"('М', 'а', 'м', 'а', 'к', 'и', 'н', ' ', 'Я', '.', ' ', 'Р', '.')"
```
## 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,type(a)
(3.9555555555555557, <class 'float'>)
```
## 4.4 Деление с округлением вниз
```py
>>>b=178//45
>>>c=-24.6//12.1
>>>b
3
>>>c
-3.0
>>>type(b)
<class 'int'>
>>>type(c)
<class 'float'>
```
## 4.5 Взятие остатка от деления
```py
>>>148%33
16
>>>12.6%3.8
1.2000000000000002
```
## 4.6 Возведение в степень
```py
>>>14**3
2744
>>>e=2.7**3.6
>>>e
35.719843790663525
>>>type(e)
<class 'float'>
>>>f=complex(2+3j)
>>>g=f**3.6
>>>type(g)
<class 'complex'>
>>>h=f%5
Traceback (most recent call last):
File "<pyshell#81>", line 1, in <module>
h=f%5
TypeError: unsupported operand type(s) for %: 'complex' and 'int'
>>>h1=f//3
Traceback (most recent call last):
File "<pyshell#82>", line 1, in <module>
h1=f//3
TypeError: unsupported operand type(s) for //: 'complex' and 'int'
```
## 5 Операции с двоичными числами
## 5.1 Инверсия
```py
>>>dv1=9
>>>dv2=~dv1
>>>dv2, type(dv2)
(-10, <class 'int'>)
```
## 5.2 Логическое И
```py
>>>7&9
1
>>>7&8
0
```
## 5.3 Логическое ИЛИ
```py
>>>7|9
15
>>>7|8
15
>>>14|5
15
```
## 5.4 Исключающее или
```py
>>>14^5
11
```
## 5.5 Сдвиг разрядов
```py
>>>h=14
>>>g=h<<2
>>>g1=h>>1
>>>g2=h>>2
>>>g
56
>>>g1
7
>>>g2
3
>>>255^128
127 # 11111111 искл. ИЛИ 10000000 = 1111111
```
## 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 % (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-=3
>>>stroka='Система'
>>>stroka+=' регулирования'
>>>stroka
'Система регулирования'
```
## 7.3 Умножение
```py
>>>zz*=5
>>>s='s'
>>>s*=5
>>>s
'sssss'
```
## 7.4 Деление с округлением, остаток, степень
```py
>>>zz
-25.0
>>>zz//=4
>>>zz
-7.0
>>>zz%=3
>>>zz
2.0
>>>zz**=5
>>>zz
32.0
```
## 7.5 Множественное присваивание
```py
>>>w=v=10
>>>n1,n2,n3=(11,-3,'all')
>>>n1,n2,n3=[1,2,3] # можно
>>>n1,n2,n3={1:'a',2:'b',3:'c'} # можно
>>>n1
1
```
## 8 Логические операции
## 8.1 Сравнение
```py
>>>w<=v
True
>>>w==v
True
```
## 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
>>>(b>=a) or not ('pen' in dic1)
True
```
## 8.4 Проверка совпадения ссылок на объект
```py
>>>w is v
True
>>>w1=['A','B']
>>>v1=['A','B']
>>>w1 is v1
False
```
w1 и v1 идентичные, но отдельные объекты. w и v ссылаются на один объект
## 9 Применение методов к объектам
## 9.1 Работа со строками
```py
stroka='Микропроцессорная система управления'
dir(stroka)
['__add__', '__class__', '__contains__', '__delattr__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__getnewargs__', '__getstate__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__iter__', '__le__', '__len__', '__lt__', '__mod__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__rmod__', '__rmul__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', 'capitalize', 'casefold', 'center', 'count', 'encode', 'endswith', 'expandtabs', 'find', 'format', 'format_map', 'index', 'isalnum', 'isalpha', 'isascii', 'isdecimal', 'isdigit', 'isidentifier', 'islower', 'isnumeric', 'isprintable', 'isspace', 'istitle', 'isupper', 'join', 'ljust', 'lower', 'lstrip', 'maketrans', 'partition', 'removeprefix', 'removesuffix', 'replace', 'rfind', 'rindex', 'rjust', 'rpartition', 'rsplit', 'rstrip', 'split', 'splitlines', 'startswith', 'strip', 'swapcase', 'title', 'translate', 'upper', 'zfill']
stroka.find('пр')
5
stroka.count("с")
4
stroka.replace(' у',' автоматического у')
'Микропроцессорная система автоматического управления'
spis22=stroka.split(' ')
stroka.upper()
'МИКРОПРОЦЕССОРНАЯ СИСТЕМА УПРАВЛЕНИЯ'
stroka3=" ".join(spis22)
stroka3.partition("с")
('Микропроце', 'с', 'сорная система управления')
stroka3.rpartition("с")
('Микропроцессорная си', 'с', 'тема управления')
strk1='Момент времени {}, значение = {}'
strk1.format(1,89.7)
'Момент времени 1, значение = 89.7'
strk2='Момент времени {1}, значение = {0}:{2}'
strk2.format(36.7,2,'норма!')
'Момент времени 2, значение = 36.7:норма!'
strk3='Момент времени {num}, значение = {znch}'
strk3.format(znch=89.7,num=2)
'Момент времени 2, значение = 89.7'
```
## 9.2 Работа со списками
```py
spsk = [1,2,3,4,5,6]
dir(spsk)
['__add__', '__class__', '__class_getitem__', '__contains__', '__delattr__', '__delitem__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__getstate__', '__gt__', '__hash__', '__iadd__', '__imul__', '__init__', '__init_subclass__', '__iter__', '__le__', '__len__', '__lt__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__reversed__', '__rmul__', '__setattr__', '__setitem__', '__sizeof__', '__str__', '__subclasshook__', 'append', 'clear', 'copy', 'count', 'extend', 'index', 'insert', 'pop', 'remove', 'reverse', 'sort']
spsk = [1,2,3,4,5,6]
spsk.pop(2)
3
spsk.append('c')
spsk
[1, 2, 4, 5, 6, 'c']
spsk.insert(2,'a')
spsk
[1, 2, 'a', 4, 5, 6, 'c']
spsk.count('a')
1
```
## 9.3 Работа с кортежами
```py
kort = (1,2)
dir(kort)
['__add__', '__class__', '__class_getitem__', '__contains__', '__delattr__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__getnewargs__', '__getstate__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__iter__', '__le__', '__len__', '__lt__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__rmul__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', 'count', 'index']
len(kort)
2
```
## 9.4 Работа со словарями
```py
dict1={1:'a',2:'b',3:'c'}
dir(dict1)
['__class__', '__class_getitem__', '__contains__', '__delattr__', '__delitem__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__getstate__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__ior__', '__iter__', '__le__', '__len__', '__lt__', '__ne__', '__new__', '__or__', '__reduce__', '__reduce_ex__', '__repr__', '__reversed__', '__ror__', '__setattr__', '__setitem__', '__sizeof__', '__str__', '__subclasshook__', 'clear', 'copy', 'fromkeys', 'get', 'items', 'keys', 'pop', 'popitem', 'setdefault', 'update', 'values']
dict1.popitem()
(3, 'c')
```

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

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

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

@@ -0,0 +1,61 @@
# Тест по модулю 1
Мамакин Ярослав Романович
## Задание
M1_7
1) Можно ли работать со средой без использования интерактивной оболочки IDLE?
2) Создайте объект-словарь с 7 элементами: ключи - названия (аббревиатура) вузов, значения - число студентов (задать произвольно). Напишите инструкцию, доказывающую, что создан объект именно требуемого типа. Напишите инструкцию отображения списка атрибутов созданного объекта.
3) Напишите инструкцию, позволяющую вычислить общее число студентов в двух указываемых вузах из словаря.
4) Преобразуйте значения из словаря в список и, затем, список - в строку. Отобразите полученные объекты. Получите новый список, разделением строки на части по разделителю: ",".
5) Используя операцию подстановки, отобразить рассчитанное число студентов в 2-х вузах по шаблону: "Число студентов в <название вуза 1> и <название вуза 2> =:".
## Решение
1) Можно, используя командную строку
2)
```py
slov={'МЭИ':1500,'МГУ':4000,'МГТУ':3000,'МИРЭА':950,'ВШЭ':3500,'МГИМО':1700,'МТУСИ':3}
type(slov)
<class 'dict'>
dir(slov)
['__class__', '__class_getitem__', '__contains__', '__delattr__', '__delitem__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__getstate__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__ior__', '__iter__', '__le__', '__len__', '__lt__', '__ne__', '__new__', '__or__', '__reduce__', '__reduce_ex__', '__repr__', '__reversed__', '__ror__', '__setattr__', '__setitem__', '__sizeof__', '__str__', '__subclasshook__', 'clear', 'copy', 'fromkeys', 'get', 'items', 'keys', 'pop', 'popitem', 'setdefault', 'update', 'values']
```
3)
```py
print(slov[str(input("Введите 1-й вуз"))] + slov[str(input("Введите 2-й вуз"))])
Введите 1-й вузМЭИ
Введите 2-й вузВШЭ
5000
```
4)
```py
spis=list(slov)
spis
['МЭИ', 'МГУ', 'МГТУ', 'МИРЭА', 'ВШЭ', 'МГИМО', 'МТУСИ']
strok = str(spis)
strok
"['МЭИ', 'МГУ', 'МГТУ', 'МИРЭА', 'ВШЭ', 'МГИМО', 'МТУСИ']"
spis2 = strok.split(",")
spis2
["['МЭИ'", " 'МГУ'", " 'МГТУ'", " 'МИРЭА'", " 'ВШЭ'", " 'МГИМО'", " 'МТУСИ']"]
```
5)
```py
vuz1=input("Введите 1-й вуз")
Введите 1-й вузМЭИ
vuz2=input("Введите 2-й вуз")
Введите 2-й вузМТУСИ
print(f"Число студентов в {vuz1} и {vuz2} =: {slov[vuz1] + slov[vuz2]}")
Число студентов в МЭИ и МТУСИ =: 1503
```

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

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

После

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

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

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

После

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

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

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

После

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

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

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

После

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

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

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

После

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

287
TEMA4/protocol.py Обычный файл
Просмотреть файл

@@ -0,0 +1,287 @@
import os
os.chdir(r'C:\Users\uprkt\Desktop\ПО\python-labs\TEMA4')
help round
SyntaxError: invalid syntax
help(round)
Help on built-in function round in module builtins:
round(number, ndigits=None)
Round a number to a given precision in decimal digits.
The return value is an integer if ndigits is omitted or None. Otherwise
the return value has the same type as the number. ndigits may be negative.
round(123,456,1)
Traceback (most recent call last):
File "<pyshell#4>", line 1, in <module>
round(123,456,1)
TypeError: round() takes at most 2 arguments (3 given)
round(123.456,1)
123.5
round(123.456,0)
123.0
round(123.456)
123
gg=range(76, 123, 9)
type(gg)
<class 'range'>
list(gg)
[76, 85, 94, 103, 112, 121]
range(23)
range(0, 23)
qq = ['Мамакин','Савин','Симанков','Киреев']
ff=zip(gg,qq)
tuple(ff)
((76, 'Мамакин'), (85, 'Савин'), (94, 'Симанков'), (103, 'Киреев'))
ff[1]
Traceback (most recent call last):
File "<pyshell#15>", line 1, in <module>
ff[1]
TypeError: 'zip' object is not subscriptable
fff=float(input('коэффициент усиления='))
коэффициент усиления=54
dan=eval('5*fff-156')
dan
114.0
exec(input('введите инструкции:'))
введите инструкции:perem=-123.456;gg=round(abs(perem)+98,3)
gg
221.456
list(map(len, qq))
[7, 5, 8, 6]
divmod(64,5)
(12, 4)
import math
dir(math)
['__doc__', '__loader__', '__name__', '__package__', '__spec__', 'acos', 'acosh', 'asin', 'asinh', 'atan', 'atan2', 'atanh', 'cbrt', 'ceil', 'comb', 'copysign', 'cos', 'cosh', 'degrees', 'dist', 'e', 'erf', 'erfc', 'exp', 'exp2', 'expm1', 'fabs', 'factorial', 'floor', 'fma', 'fmod', 'frexp', 'fsum', 'gamma', 'gcd', 'hypot', 'inf', 'isclose', 'isfinite', 'isinf', 'isnan', 'isqrt', 'lcm', 'ldexp', 'lgamma', 'log', 'log10', 'log1p', 'log2', 'modf', 'nan', 'nextafter', 'perm', 'pi', 'pow', 'prod', 'radians', 'remainder', 'sin', 'sinh', 'sqrt', 'sumprod', 'tan', 'tanh', 'tau', 'trunc', 'ulp']
help(math.factorial)
Help on built-in function factorial in module math:
factorial(n, /)
Find n!.
math.factorial(5)
120
math.degrees(math.acos(math.sin(math.pi)))
90.0
math.sin(2*math.pi / 7 + math.exp(0.23))
0.8334902641414562
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
import random
dir(random)
['BPF', 'LOG4', 'NV_MAGICCONST', 'RECIP_BPF', 'Random', 'SG_MAGICCONST', 'SystemRandom', 'TWOPI', '_ONE', '_Sequence', '__all__', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', '_accumulate', '_acos', '_bisect', '_ceil', '_cos', '_e', '_exp', '_fabs', '_floor', '_index', '_inst', '_isfinite', '_lgamma', '_log', '_log2', '_os', '_parse_args', '_pi', '_random', '_repeat', '_sha512', '_sin', '_sqrt', '_test', '_test_generator', '_urandom', 'betavariate', 'binomialvariate', 'choice', 'choices', 'expovariate', 'gammavariate', 'gauss', 'getrandbits', 'getstate', 'lognormvariate', 'main', 'normalvariate', 'paretovariate', 'randbytes', 'randint', 'random', 'randrange', 'sample', 'seed', 'setstate', 'shuffle', 'triangular', 'uniform', 'vonmisesvariate', 'weibullvariate']
help(random.seed())
Help on NoneType object:
class NoneType(object)
| The type of the None singleton.
|
| Methods defined here:
|
| __bool__(self, /)
| True if self else False
|
| __eq__(self, value, /)
| Return self==value.
|
| __ge__(self, value, /)
| Return self>=value.
|
| __gt__(self, value, /)
| Return self>value.
|
| __hash__(self, /)
| Return hash(self).
|
| __le__(self, value, /)
| Return self<=value.
|
| __lt__(self, value, /)
| Return self<value.
|
| __ne__(self, value, /)
| Return self!=value.
|
| __repr__(self, /)
| Return repr(self).
|
| ----------------------------------------------------------------------
| Static methods defined here:
|
| __new__(*args, **kwargs)
| Create and return a new object. See help(type) for accurate signature.
random.seed()
random.random()
0.6216104315561441
random.uniform()
Traceback (most recent call last):
File "<pyshell#38>", line 1, in <module>
random.uniform()
TypeError: Random.uniform() missing 2 required positional arguments: 'a' and 'b'
random.uniform(0,1)
0.15558476742451
random.randint()
Traceback (most recent call last):
File "<pyshell#40>", line 1, in <module>
random.randint()
TypeError: Random.randint() missing 2 required positional arguments: 'a' and 'b'
random.randint(0,100)
65
random.gauss()
-1.2490453714301064
random.choice([1,2,3,4,5])
5
random.shuffle([1,2,3,4,5])
sp = [1,2,3,4,5,6,7,8,9]
random.shuffle(sp)
sp
[8, 2, 5, 9, 6, 7, 1, 3, 4]
random.sample(sp, 3)
[6, 1, 7]
random.betavariate()
Traceback (most recent call last):
File "<pyshell#49>", line 1, in <module>
random.betavariate()
TypeError: Random.betavariate() missing 2 required positional arguments: 'alpha' and 'beta'
random.betavariate(0.5, 0.5)
0.21196520335129634
random.gammavariate(0.5, 0.5)
0.18678325471924362
sp1 = [random.random(), random.gauss(), random.betavariate(0.5,0.5), random.gammavariate(0.5, 0.5)]
sp1
[0.09352103273802048, 0.41529631729753796, 0.5372987697985309, 0.08540638796369146]
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
13.89244294166565
dat = time.gmtime()
dat.tm_mon()
Traceback (most recent call last):
File "<pyshell#60>", line 1, in <module>
dat.tm_mon()
TypeError: 'int' object is not callable
dat.tm_mon
9
dat1 = time.localtime()
dat1.tm_day
Traceback (most recent call last):
File "<pyshell#63>", line 1, in <module>
dat1.tm_day
AttributeError: 'time.struct_time' object has no attribute 'tm_day'. Did you mean: 'tm_mday'?
dit1.tm_mday
Traceback (most recent call last):
File "<pyshell#64>", line 1, in <module>
dit1.tm_mday
NameError: name 'dit1' is not defined. Did you mean: 'dat1'?
dat1.tm_mday
28
time.asctime(dat)
'Sat Sep 27 21:23:38 2025'
time.ctime(564783)
'Wed Jan 7 15:53:03 1970'
time.mktime(dat1)
1759008378.0
time.localtime(c1)
time.struct_time(tm_year=2025, tm_mon=9, tm_mday=28, tm_hour=0, tm_min=22, tm_sec=49, tm_wday=6, tm_yday=271, tm_isdst=0)
import pylab
Traceback (most recent call last):
File "<pyshell#70>", line 1, in <module>
import pylab
ModuleNotFoundError: No module named 'pylab'
import sys
sys.path.append('C:\Users\uprkt\AppData\Local\Programs\Python\Python313\\lib\\site-packages')
SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 2-3: truncated \UXXXXXXXX escape
sys.path.append(C:\Users\uprkt\AppData\Local\Programs\Python\Python313\\lib\\site-packages)
SyntaxError: invalid character '' (U+2018)
sys.path.append(rC:\Users\uprkt\AppData\Local\Programs\Python\Python313\\lib\\site-packages)
SyntaxError: invalid character '' (U+2018)
sys.path.append(r'C:\Users\uprkt\AppData\Local\Programs\Python\Python313\\lib\\site-packages')
import pylab
Traceback (most recent call last):
File "<pyshell#76>", line 1, in <module>
import pylab
ModuleNotFoundError: No module named 'pylab'
import pylab
x=list(range(-3,55,4))
t=list(range(15))
pylab.plot(t,x)
[<matplotlib.lines.Line2D object at 0x0000020CE16E6850>]
pylab.title('Первый график')
Text(0.5, 1.0, 'Первый график')
pylab.xlabel('время')
Text(0.5, 0, 'время')
pylab.ylabel('сигнал')
Text(0, 0.5, 'сигнал')
pylab.show()
X1=[12,6,8,10,7]
X2=[5,7,9,11,13]
pylab.plot(X1)
[<matplotlib.lines.Line2D object at 0x0000020CE37DB110>]
pylab.plot(X2)
[<matplotlib.lines.Line2D object at 0x0000020CE37DB250>]
pylab.show()
region=['Центр','Урал','Сибирь','Юг']
naselen=[65,12,23,17]
pylab.pie(naselen,labels=region)
([<matplotlib.patches.Wedge object at 0x0000020CE16C9940>, <matplotlib.patches.Wedge object at 0x0000020CE1EBCB90>, <matplotlib.patches.Wedge object at 0x0000020CE1EBCF50>, <matplotlib.patches.Wedge object at 0x0000020CE1EBD1D0>], [Text(-0.191013134139045, 1.0832885038559115, 'Центр'), Text(-0.861328292412156, -0.6841882582231001, 'Урал'), Text(0.04429273995539947, -1.0991078896938387, 'Сибирь'), Text(0.9873750693480946, -0.48486129194837324, 'Юг')])
pylab.show()
pylab.hist(X1)
(array([1., 1., 0., 1., 0., 0., 1., 0., 0., 1.]), array([ 6. , 6.6, 7.2, 7.8, 8.4, 9. , 9.6, 10.2, 10.8, 11.4, 12. ]), <BarContainer object of 10 artists>)
pylab.show()
pylab.hist(X1, 4)
(array([2., 1., 1., 1.]), array([ 6. , 7.5, 9. , 10.5, 12. ]), <BarContainer object of 4 artists>)
pylab.show()
pylab.bar(X1, X2)
<BarContainer object of 5 artists>
pylab.show()
import statistics as st
dir(st)
['Counter', 'Decimal', 'Fraction', 'LinearRegression', 'NormalDist', 'StatisticsError', '_SQRT2', '__all__', '__annotations__', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', '_coerce', '_convert', '_decimal_sqrt_of_frac', '_exact_ratio', '_fail_neg', '_float_sqrt_of_frac', '_integer_sqrt_of_frac_rto', '_isfinite', '_kernel_invcdfs', '_mean_stdev', '_newton_raphson', '_normal_dist_inv_cdf', '_quartic_invcdf', '_quartic_invcdf_estimate', '_random', '_rank', '_sqrt_bit_width', '_sqrtprod', '_ss', '_sum', '_triweight_invcdf', '_triweight_invcdf_estimate', 'acos', 'asin', 'atan', 'bisect_left', 'bisect_right', 'correlation', 'cos', 'cosh', 'count', 'covariance', 'defaultdict', 'erf', 'exp', 'fabs', 'fmean', 'fsum', 'geometric_mean', 'groupby', 'harmonic_mean', 'hypot', 'isfinite', 'isinf', 'itemgetter', 'kde', 'kde_random', 'linear_regression', 'log', 'math', 'mean', 'median', 'median_grouped', 'median_high', 'median_low', 'mode', 'multimode', 'namedtuple', 'numbers', 'pi', 'pstdev', 'pvariance', 'quantiles', 'random', 'reduce', 'repeat', 'sin', 'sqrt', 'stdev', 'sumprod', 'sys', 'tan', 'tau', 'variance']
st.mean(X1)
8.6
st.median(X2)
9
st.linear_regression(X1, X2)
LinearRegression(slope=-0.5172413793103449, intercept=13.448275862068964)
divmod((round(cmath.phase(0.2+0,8j), 2))*20, 3)
Traceback (most recent call last):
File "<pyshell#105>", line 1, in <module>
divmod((round(cmath.phase(0.2+0,8j), 2))*20, 3)
TypeError: cmath.phase() takes exactly one argument (2 given)
divmod((round(cmath.phase(0.2+0.8j), 2))*20, 3)
(8.0, 2.6000000000000014)
round(cmath.phase(0.2+0.8j), 2)
1.33
(round(cmath.phase(0.2+0.8j), 2))*20
26.6
divmod((round(cmath.phase(0.2+0.8j), 2))*20, 3)
(8.0, 2.6000000000000014)
divmod(((round(cmath.phase(0.2+0.8j), 2))*20), 3)
(8.0, 2.6000000000000014)
tt = time.localtime()
tt.tm_hour + ':' + tt.tm_min
Traceback (most recent call last):
File "<pyshell#112>", line 1, in <module>
tt.tm_hour + ':' + tt.tm_min
TypeError: unsupported operand type(s) for +: 'int' and 'str'
str(tt.tm_hour) + ':' + str(tt.tm_min)
'2:34'
dni = ['Понедельник','Вторник','Среда','Пятница','Четверг','Суббота','Воскресенье']
random.sample(dni, 3)
['Суббота', 'Пятница', 'Понедельник']
random.choice(range(14, 32, 3))
26
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)))
['s', 'b', 'h', 'j', 'm', 'p', 'i', 'd', 'x', 'r', 'y']
(time.time() - time.mktime(tt))/60
14.89702452023824

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

@@ -0,0 +1,281 @@
# Отчет по теме 4
Мамакин Ярослав, А-02-23
## 1 Начало работы
Запустил среду IDLE, установил рабочую папку.
## 2 Стандартные функции из модуля builtins.
## 2.1 Функция округления
```py
>>>help(round)
Help on built-in function round in module builtins:
round(number, ndigits=None)
Round a number to a given precision in decimal digits.
The return value is an integer if ndigits is omitted or None. Otherwise
the return value has the same type as the number. ndigits may be negative.
>>>round(123.456,1)
123.5
>>>round(123.456,0)
123.0
>>>round(123.456)
123
```
В первых двух случаях тип float, во втором - int.
## 2.2 Функция создания последовательности
```py
>>>gg=range(76, 123, 9)
>>>type(gg)
<class 'range'>
>>>list(gg)
[76, 85, 94, 103, 112, 121]
>>>range(23) # последовательность целых чисел от 0 до 22 включительно с шагом 1
range(0, 23)
```
## 2.3 Функция zip
```py
>>>qq = ['Мамакин','Савин','Симанков','Киреев']
>>>ff=zip(gg,qq)
>>>tuple(ff)
((76, 'Мамакин'), (85, 'Савин'), (94, 'Симанков'), (103, 'Киреев'))
>>>ff[1]
Traceback (most recent call last):
File "<pyshell#15>", line 1, in <module>
ff[1]
TypeError: 'zip' object is not subscriptable
```
К объекту zip с указанием индекса обращаться нельзя.
## 2.4 Функция eval
```py
>>>fff=float(input('коэффициент усиления='))
коэффициент усиления=54
>>>dan=eval('5*fff-156')
>>>dan
114.0
```
## 2.5 Функция exec
```py
>>>exec(input('введите инструкции:'))
введите инструкции:perem=-123.456;gg=round(abs(perem)+98,3)
>>>gg
221.456
```
## 2.6 Другие встроенные функции
```py
list(map(len, qq))
[7, 5, 8, 6] # Длины фамилий из списка qq
divmod(64,5)
(12, 4) # Кортеж с частным и остатком при делении 64 на 5
```
## 3 Модуль math
```py
>>>import math
>>>dir(math)
['__doc__', '__loader__', '__name__', '__package__', '__spec__', 'acos', 'acosh', 'asin', 'asinh', 'atan', 'atan2', 'atanh', 'cbrt', 'ceil', 'comb', 'copysign', 'cos', 'cosh', 'degrees', 'dist', 'e', 'erf', 'erfc', 'exp', 'exp2', 'expm1', 'fabs', 'factorial', 'floor', 'fma', 'fmod', 'frexp', 'fsum', 'gamma', 'gcd', 'hypot', 'inf', 'isclose', 'isfinite', 'isinf', 'isnan', 'isqrt', 'lcm', 'ldexp', 'lgamma', 'log', 'log10', 'log1p', 'log2', 'modf', 'nan', 'nextafter', 'perm', 'pi', 'pow', 'prod', 'radians', 'remainder', 'sin', 'sinh', 'sqrt', 'sumprod', 'tan', 'tanh', 'tau', 'trunc', 'ulp']
>>>help(math.factorial)
Help on built-in function factorial in module math:
factorial(n, /)
Find n!.
>>>math.factorial(5)
120
>>>math.degrees(math.acos(math.sin(math.pi)))
90.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
>>>import random
>>>dir(random)
['BPF', 'LOG4', 'NV_MAGICCONST', 'RECIP_BPF', 'Random', 'SG_MAGICCONST', 'SystemRandom', 'TWOPI', '_ONE', '_Sequence', '__all__', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', '_accumulate', '_acos', '_bisect', '_ceil', '_cos', '_e', '_exp', '_fabs', '_floor', '_index', '_inst', '_isfinite', '_lgamma', '_log', '_log2', '_os', '_parse_args', '_pi', '_random', '_repeat', '_sha512', '_sin', '_sqrt', '_test', '_test_generator', '_urandom', 'betavariate', 'binomialvariate', 'choice', 'choices', 'expovariate', 'gammavariate', 'gauss', 'getrandbits', 'getstate', 'lognormvariate', 'main', 'normalvariate', 'paretovariate', 'randbytes', 'randint', 'random', 'randrange', 'sample', 'seed', 'setstate', 'shuffle', 'triangular', 'uniform', 'vonmisesvariate', 'weibullvariate']
>>>help(random.seed())
Help on NoneType object:
class NoneType(object)
| The type of the None singleton.
|
| Methods defined here:
|
| __bool__(self, /)
| True if self else False
|
| __eq__(self, value, /)
| Return self==value.
|
| __ge__(self, value, /)
| Return self>=value.
|
| __gt__(self, value, /)
| Return self>value.
|
| __hash__(self, /)
| Return hash(self).
|
| __le__(self, value, /)
| Return self<=value.
|
| __lt__(self, value, /)
| Return self<value.
|
| __ne__(self, value, /)
| Return self!=value.
|
| __repr__(self, /)
| Return repr(self).
|
| ----------------------------------------------------------------------
| Static methods defined here:
|
| __new__(*args, **kwargs)
| Create and return a new object. See help(type) for accurate signature.
>>>random.seed()
>>>random.random()
0.6216104315561441
>>>random.uniform(0,1)
0.15558476742451
>>>random.randint(0,100)
65
>>>random.gauss()
-1.2490453714301064
>>>random.choice([1,2,3,4,5])
5
>>>sp = [1,2,3,4,5,6,7,8,9]
>>>random.shuffle(sp)
>>>sp
[8, 2, 5, 9, 6, 7, 1, 3, 4]
>>>random.sample(sp, 3)
[6, 1, 7]
>>>random.betavariate(0.5, 0.5)
0.21196520335129634
>>>random.gammavariate(0.5, 0.5)
0.18678325471924362
>>>sp1 = [random.random(), random.gauss(), random.betavariate(0.5,0.5), random.gammavariate(0.5, 0.5)]
>>>sp1
[0.09352103273802048, 0.41529631729753796, 0.5372987697985309, 0.08540638796369146]
```
## 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
13.89244294166565
>>>dat = time.gmtime()
>>>dat.tm_mon
9
>>>dat1 = time.localtime()
>>>dat1.tm_mday
28
>>>time.asctime(dat)
'Sat Sep 27 21:23:38 2025'
>>>time.ctime(564783)
'Wed Jan 7 15:53:03 1970'
>>>time.mktime(dat1)
1759008378.0
>>>time.localtime(c1)
time.struct_time(tm_year=2025, tm_mon=9, tm_mday=28, tm_hour=0, tm_min=22, tm_sec=49, tm_wday=6, tm_yday=271, 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 0x0000020CE16E6850>]
pylab.title('Первый график')
Text(0.5, 1.0, 'Первый график')
pylab.xlabel('время')
Text(0.5, 0, 'время')
pylab.ylabel('сигнал')
Text(0, 0.5, 'сигнал')
pylab.show()
```
![Полученный график](Ris1.png)
```py
X1=[12,6,8,10,7]
X2=[5,7,9,11,13]
pylab.plot(X1)
[<matplotlib.lines.Line2D object at 0x0000020CE37DB110>]
pylab.plot(X2)
[<matplotlib.lines.Line2D object at 0x0000020CE37DB250>]
pylab.show()
```
![Совмещенные графики](Ris_1.1.png)
```py
region=['Центр','Урал','Сибирь','Юг']
naselen=[65,12,23,17]
pylab.pie(naselen,labels=region)
([<matplotlib.patches.Wedge object at 0x0000020CE16C9940>, <matplotlib.patches.Wedge object at 0x0000020CE1EBCB90>, <matplotlib.patches.Wedge object at 0x0000020CE1EBCF50>, <matplotlib.patches.Wedge object at 0x0000020CE1EBD1D0>], [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(X1, 4)
(array([2., 1., 1., 1.]), array([ 6. , 7.5, 9. , 10.5, 12. ]), <BarContainer object of 4 artists>)
pylab.show()
```
![Гисторамма](Ris3.png)
```py
pylab.bar(X1, X2)
<BarContainer object of 5 artists>
pylab.show()
```
![Столбцовая диаграмма](Ris4.png)
## 8 Модуль statistics
```py
import statistics as st
dir(st)
['Counter', 'Decimal', 'Fraction', 'LinearRegression', 'NormalDist', 'StatisticsError', '_SQRT2', '__all__', '__annotations__', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', '_coerce', '_convert', '_decimal_sqrt_of_frac', '_exact_ratio', '_fail_neg', '_float_sqrt_of_frac', '_integer_sqrt_of_frac_rto', '_isfinite', '_kernel_invcdfs', '_mean_stdev', '_newton_raphson', '_normal_dist_inv_cdf', '_quartic_invcdf', '_quartic_invcdf_estimate', '_random', '_rank', '_sqrt_bit_width', '_sqrtprod', '_ss', '_sum', '_triweight_invcdf', '_triweight_invcdf_estimate', 'acos', 'asin', 'atan', 'bisect_left', 'bisect_right', 'correlation', 'cos', 'cosh', 'count', 'covariance', 'defaultdict', 'erf', 'exp', 'fabs', 'fmean', 'fsum', 'geometric_mean', 'groupby', 'harmonic_mean', 'hypot', 'isfinite', 'isinf', 'itemgetter', 'kde', 'kde_random', 'linear_regression', 'log', 'math', 'mean', 'median', 'median_grouped', 'median_high', 'median_low', 'mode', 'multimode', 'namedtuple', 'numbers', 'pi', 'pstdev', 'pvariance', 'quantiles', 'random', 'reduce', 'repeat', 'sin', 'sqrt', 'stdev', 'sumprod', 'sys', 'tan', 'tau', 'variance']
st.mean(X1) # вычисление среднего
8.6
st.median(X2) # вычисление медианы
9
st.linear_regression(X1, X2) # построение простой линейной регрессионной модели
LinearRegression(slope=-0.5172413793103449, intercept=13.448275862068964)
```

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

@@ -0,0 +1,32 @@
# Общее контрольное задание по теме 4
Мамакин Ярослав, А-02-23
## Задание
Реализовать, записать в текстовый файл и проанализировать результаты последовательности ин-струкций, выполняющих следующие действия:
• Напишите и исполните единое выражение, реализующее последовательное выполнение следу-ющих операций: вычисление фазы комплексного числа 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)
'2:34'
dni = ['Понедельник','Вторник','Среда','Пятница','Четверг','Суббота','Воскресенье']
random.sample(dni, 3)
['Суббота', 'Пятница', 'Понедельник']
random.choice(range(14, 32, 3))
26
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)))
['s', 'b', 'h', 'j', 'm', 'p', 'i', 'd', 'x', 'r', 'y']
(time.time() - time.mktime(tt))/60
14.89702452023824
```

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

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

После

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

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

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

После

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

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

@@ -0,0 +1,235 @@
import os
os.chdir(r'C:\Users\uprkt\Desktop\ПО\python-labs\TEMA5')
porog = 10
rashod1 = 5
rashod2 = 3
if rashod1>=porog:
dohod=12
elif rashod2==porog:
dohod=0
else:
dohod=-8
dohod
-8
if rashod1>=3 and rashod2==4:
dohod=rashod1
if rashod2==porog or rashod1<rashod2:
dohod=porog
dohod
-8
if porog==3:
dohod=1
elif porog==4:
dohod=2
elif porog==5:
dohod=3
else:
dohod=0
dohod
0
dohod=2 if porog >= 4 else 0
dohod
2
if porog>=5: rashod1=6;rashod2=0
rashod1;rashod2
SyntaxError: invalid syntax
if porog>=5: rashod1=6;rashod2=0
rashod1;rashod2
6
0
temperatura=5
for i in range(3,18,3):
temperatura+=1
temperatura
10
sps=[2,15,14,8]
for k in sps:
if len(sps)<=10:sps.append(sps[0])
else:break
sps
[2, 15, 14, 8, 2, 2, 2, 2, 2, 2, 2]
sps=[2,15,14,8]
for k in sps[:]:
if len(sps)<=10:sps.append(sps[0])
else:break
sps
[2, 15, 14, 8, 2, 2, 2, 2]
import random as rn
sps5=[]
for i in range(10):
sps5.append(rn.randint(1,100))
ss=sum(sps5)
if ss>500: break
else:
print(ss)
sps5=[]
for i in range(10):
sps5.append(rn.randint(1,100))
ss=sum(sps5)
if ss>500: break
else:
print(ss)
395
stroka='Это – автоматизированная система'
stroka1=""
for ss in stroka:
stroka1+=" "+ss
stroka1
' Э т о – а в т о м а т и з и р о в а н н а я с и с т е м а'
import math
sps2=[math.sin(i*math.pi/5+2) for i in range(100)]
import pylab
pylab.pl
pylab.plot(sps2)
[<matplotlib.lines.Line2D object at 0x000001F9DE202490>]
py
pylab.show()
rashod=300
while rashod:
print("Расход=",rashod)
rashod-=50
Расход= 300
Расход= 250
Расход= 200
Расход= 150
Расход= 100
Расход= 50
import math
stroka='Расчет процесса в объекте регулирования'
i=0
sps2=[]
while i<len(stroka):
r=1-2/(1+math.exp(0.1*i))
sps2.append(r)
print('Значение в момент',i,"=",r)
i+=1
Значение в момент 0 = 0.0
Значение в момент 1 = 0.049958374957880025
Значение в момент 2 = 0.09966799462495568
Значение в момент 3 = 0.14888503362331795
Значение в момент 4 = 0.197375320224904
Значение в момент 5 = 0.2449186624037092
Значение в момент 6 = 0.2913126124515909
Значение в момент 7 = 0.3363755443363322
Значение в момент 8 = 0.3799489622552249
Значение в момент 9 = 0.421899005250008
Значение в момент 10 = 0.4621171572600098
Значение в момент 11 = 0.5005202111902354
Значение в момент 12 = 0.5370495669980353
Значение в момент 13 = 0.5716699660851172
Значение в момент 14 = 0.6043677771171636
Значение в момент 15 = 0.6351489523872873
Значение в момент 16 = 0.6640367702678489
Значение в момент 17 = 0.6910694698329307
Значение в момент 18 = 0.7162978701990245
Значение в момент 19 = 0.7397830512740043
Значение в момент 20 = 0.7615941559557649
Значение в момент 21 = 0.7818063576087741
Значение в момент 22 = 0.8004990217606297
Значение в момент 23 = 0.8177540779702878
Значение в момент 24 = 0.8336546070121553
Значение в момент 25 = 0.8482836399575129
Значение в момент 26 = 0.8617231593133063
Значение в момент 27 = 0.874053287886007
Значение в момент 28 = 0.8853516482022625
Значение в момент 29 = 0.8956928738431645
Значение в момент 30 = 0.9051482536448664
Значение в момент 31 = 0.9137854901178277
Значение в момент 32 = 0.9216685544064713
Значение в момент 33 = 0.9288576214547277
Значение в момент 34 = 0.935409070603099
Значение в момент 35 = 0.9413755384972874
Значение в момент 36 = 0.9468060128462683
Значение в момент 37 = 0.9517459571646616
Значение в момент 38 = 0.9562374581277391
pylab.plot(sps2)
[<matplotlib.lines.Line2D object at 0x000001F9E03EB610>]
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 chislo in range(250, 300):
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

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

@@ -0,0 +1,292 @@
# Отчет по теме 5
Мамакин Ярослав, А-02-23
## 1 Начало работы
Запустил среду IDLE, установил рабочую папку.
## 2 Управляющая конструкция if
```py
>>>porog = 10
>>>rashod1 = 5
>>>rashod2 = 3
if rashod1>=porog:
dohod=12
elif rashod2==porog:
dohod=0
else:
dohod=-8
>>>dohod
-8
if rashod1>=3 and rashod2==4:
dohod=rashod1
if rashod2==porog or rashod1<rashod2:
dohod=porog
>>>dohod
-8
if porog==3:
dohod=1
elif porog==4:
dohod=2
elif porog==5:
dohod=3
else:
dohod=0
>>>dohod
0
>>>dohod=2 if porog >= 4 else 0
>>>dohod
2
if porog>=5: rashod1=6;rashod2=0
>>>rashod1;rashod2
6
0
```
## 3 Управляющая конструкция for
## 3.1 Пример простого цикла
```py
temperatura=5
for i in range(3,18,3):
temperatura+=1
>>>temperatura
10
```
## 3.2 Пример более сложного цикла
```py
sps=[2,15,14,8]
for k in sps:
if len(sps)<=10:sps.append(sps[0])
else:break
sps
[2, 15, 14, 8, 2, 2, 2, 2, 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 перебирает все элементы sps, в том числе и добавленные в ходе выполнения цикла, а во втором - только 4 изначальных элемента.
## 3.3 Пример создания списка
```py
for i in range(10):
sps5.append(rn.randint(1,100))
ss=sum(sps5)
if ss>500: break
else:
print(ss)
sps5=[]
for i in range(10):
sps5.append(rn.randint(1,100))
ss=sum(sps5)
if ss>500: break
else:
print(ss)
395
```
Значение выводится только если сумма случайных чисел не превышает 500, это выполняется не всегда.
## 3.4 Пример работы со строкой
```py
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 0x000001F9DE202490>]
pylab.show()
```
![График](Figure_1.png)
## 4 Управляющая инструкция while
## 4.1 Цикл со счетчиком
```py
rashod=300
while rashod:
print("Расход=",rashod)
rashod-=50
Расход= 300
Расход= 250
Расход= 200
Расход= 150
Расход= 100
Расход= 50
```
Когда rashod доходит до 0, соответствующее ему булево значение становится False и цикл завершается.
## 4.2 Пример со строками
```py
import math
stroka='Расчет процесса в объекте регулирования'
i=0
sps2=[]
while i<len(stroka):
r=1-2/(1+math.exp(0.1*i))
sps2.append(r)
print('Значение в момент',i,"=",r)
i+=1
Значение в момент 0 = 0.0
Значение в момент 1 = 0.049958374957880025
Значение в момент 2 = 0.09966799462495568
Значение в момент 3 = 0.14888503362331795
Значение в момент 4 = 0.197375320224904
Значение в момент 5 = 0.2449186624037092
Значение в момент 6 = 0.2913126124515909
Значение в момент 7 = 0.3363755443363322
Значение в момент 8 = 0.3799489622552249
Значение в момент 9 = 0.421899005250008
Значение в момент 10 = 0.4621171572600098
Значение в момент 11 = 0.5005202111902354
Значение в момент 12 = 0.5370495669980353
Значение в момент 13 = 0.5716699660851172
Значение в момент 14 = 0.6043677771171636
Значение в момент 15 = 0.6351489523872873
Значение в момент 16 = 0.6640367702678489
Значение в момент 17 = 0.6910694698329307
Значение в момент 18 = 0.7162978701990245
Значение в момент 19 = 0.7397830512740043
Значение в момент 20 = 0.7615941559557649
Значение в момент 21 = 0.7818063576087741
Значение в момент 22 = 0.8004990217606297
Значение в момент 23 = 0.8177540779702878
Значение в момент 24 = 0.8336546070121553
Значение в момент 25 = 0.8482836399575129
Значение в момент 26 = 0.8617231593133063
Значение в момент 27 = 0.874053287886007
Значение в момент 28 = 0.8853516482022625
Значение в момент 29 = 0.8956928738431645
Значение в момент 30 = 0.9051482536448664
Значение в момент 31 = 0.9137854901178277
Значение в момент 32 = 0.9216685544064713
Значение в момент 33 = 0.9288576214547277
Значение в момент 34 = 0.935409070603099
Значение в момент 35 = 0.9413755384972874
Значение в момент 36 = 0.9468060128462683
Значение в момент 37 = 0.9517459571646616
Значение в момент 38 = 0.9562374581277391
pylab.plot(sps2)
[<matplotlib.lines.Line2D object at 0x000001F9E03EB610>]
pylab.show()
```
![График](Figure_2.png)
## 4.3 Пример с выявлением простых чисел
```py
chislo=267
kandidat =chislo // 2
while kandidat > 1:
if chislo%kandidat == 0:
print(chislo, ' имеет множитель ', kandidat)
break
kandidat -= 1
else:
print(chislo, ' является простым!')
267 имеет множитель 89
for chislo in range(250, 300):
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
```

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

@@ -0,0 +1,83 @@
# Общее контрольное задание по теме 5
Мамакин Ярослав, А-02-23
## Задание
Реализовать, записать в текстовый файл программы и результаты их выполнения при решении следующих задач:
• Для заданной символьной строки с англоязычным текстом (его можно заимствовать из помо-щи) определите порядковый номер каждой буквы в английском алфавите.
• Создайте список со словами из задания данного пункта. Для этого списка – определите, есть ли в нем некоторое заданное значение, и выведите соответствующее сообщение: либо о нахожде-нии элемента, либо о его отсутствии в списке (проверить как с имеющимся, так и с отсутству-ющим словом).
• Создайте список студентов вашей группы (3-4 фамилии) и список их средних баллов в летней сессии – в порядке перечисления студентов в первом списке. Создайте еще 2 аналогичных списка для тех же студентов, но в другом порядке, по зимней сессии. Напишите инструкции, позволяющие по указанной (запрошенной и введенной) фамилии студента вывести его средние баллы по двум сессиям.
## Решение
```py
st = 'SyntaxError: invalid syntax'
alph = ['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 alph:
print(i, ' - ', (''.join(alph)).find(i.lower())+1)
S - 19
y - 25
n - 14
t - 20
a - 1
x - 24
E - 5
r - 18
r - 18
o - 15
r - 18
i - 9
n - 14
v - 22
a - 1
l - 12
i - 9
d - 4
s - 19
y - 25
n - 14
t - 20
a - 1
x - 24
spi='Создайте список со словами из задания данного пункта Для этого списка определите есть ли в нем некоторое заданное значение и выведите соответствующее сообщение либо о нахождении элемента либо о его отсутствии в списке проверить как с имеющимся так и с отсутствующим словом'.split()
for i in range(len(spi)):
if spi[i] == 'есть':
print('найдено')
found = True
break
else:
if i == len(spi)-1:
print('не найдено')
найдено
for i in range(len(spi)):
if spi[i] == 'Хевисайд':
print('найдено')
found = True
break
else:
if i == len(spi)-1:
print('не найдено')
не найдено
stud1 = ['Мамакин','Савин','Володин','Киреев']
leto = [4.57, 3.95, 4.15, 4.83]
stud2 = ['Мамакин','Володин','Киреев','Савин']
zima = [4.67,4.24,5.0,4.11]
fam=input('Введите фамилию студента')
Введите фамилию студентаМамакин
for i in range(len(stud2)):
if stud1[i] == fam:
print('Средний за летнюю сессию: ', leto[i])
if stud2[i] == fam:
print('Средний за зимнюю сессию: ', zima[i])
Средний за летнюю сессию: 4.57
Средний за зимнюю сессию: 4.67
```

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

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

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

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

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

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

@@ -0,0 +1,281 @@
# Отчет по теме 6
Мамакин Ярослав, А-02-23
## 1 Начало работы
Запустил среду IDLE, установил рабочую папку
## 2 Вывод данных на экран дисплея
## 2.1 Эхо-вывод
```py
>>> stroka='Автоматизированная система управления'
>>> stroka
'Автоматизированная система управления'
```
## 2.2 Вывод через print
```py
>>> fff=234.5;gg='Значение температуры = '
>>> print(gg, fff)
Значение температуры = 234.5
>>> print(gg, fff, sep='/')
Значение температуры = /234.5
>>> print(gg, fff,sep='/',end='***'); print('____')
Значение температуры = /234.5***____
>>> print()
>>> print(""" Здесь может выводиться
... большой текст,
... занимающий несколько строк""")
...
Здесь может выводиться
большой текст,
занимающий несколько строк
>>> print("Здесь может выводиться",
... "большой текст,",
... "занимающий несколько строк")
...
Здесь может выводиться большой текст, занимающий несколько строк
```
## 2.3 Вывод с использованием метода write
```py
>>> import sys
>>> sys.stdout.write('Функция write')
Функция write13
>>> sys.stdout.write('Функция write\n')
Функция write
14
```
## 3 Ввод с клавиатуры через input
```py
>>> psw=input('Введите пароль:')
Введите пароль:роялб.
>>> psw
'роялб.'
>>> while True:
... znach=float(input('Задайте коэф.усиления = '))
... if znach<17.5 or znach>23.8:
... print('Ошибка!')
... else:
... break
...
Задайте коэф.усиления = 15.4
Ошибка!
Задайте коэф.усиления = 21.6
>>> import math
>>> print(eval(input('введите выражение для расчета = ')))
введите выражение для расчета = math.log10(23/(1+math.exp(-3.24)))
1.34504378689765
```
## 4 Ввод-вывод при работе с файлами
## 4.1 Функции для работы с путем к файлу
```py
>>> import os
>>> mamakin = os.getcwd()
>>> print(mamakin)
C:\Users\uprkt\Desktop\ПО\python-labs\TEMA6
>>> os.mkdir('Papka')
>>> os.listdir()
['.gitkeep', 'Papka', 'report.md']
>>> os.path.isdir('Papka')
True
>>> fil=os.path.abspath("report.md")
>>> fil
'C:\\Users\\uprkt\\Desktop\\ПО\\python-labs\\TEMA6\\report.md'
>>> drkt=os.path.dirname(fil)
>>> drkt
'C:\\Users\\uprkt\\Desktop\\ПО\\python-labs\\TEMA6'
>>> os.path.basename(fil)
'report.md'
>>> os.path.split(fil)
('C:\\Users\\uprkt\\Desktop\\ПО\\python-labs\\TEMA6', 'report.md')
>>> os.path.exists(fil)
True
>>> os.path.exists('C:\\taxes.txt')
False
>>> os.path.isfile(fil)
True
>>> os.path.isfile(os.path.dirname(fil)+'fil1.txt')
False
```
## 4.3 Функция open
```py
>>> fp=open(file=drkt+'\\zapis1.txt',mode='w')
>>> fp=open(drkt+'\\zapis1.txt','w')
>>> fp=open('zapis1.txt','w')
>>> type(fp)
<class '_io.TextIOWrapper'>
>>> dir(fp)
['_CHUNK_SIZE', '__class__', '__del__', '__delattr__', '__dict__', '__dir__', '__doc__', '__enter__', '__eq__', '__exit__', '__format__', '__ge__', '__getattribute__', '__getstate__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__iter__', '__le__', '__lt__', '__module__', '__ne__', '__new__', '__next__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '_checkClosed', '_checkReadable', '_checkSeekable', '_checkWritable', '_finalizing', 'buffer', 'close', 'closed', 'detach', 'encoding', 'errors', 'fileno', 'flush', 'isatty', 'line_buffering', 'mode', 'name', 'newlines', 'read', 'readable', 'readline', 'readlines', 'reconfigure', 'seek', 'seekable', 'tell', 'truncate', 'writable', 'write', 'write_through', 'writelines']
>>> fp1=open(drkt+'\\zapis2.bin',mode='wb+')
>>> os.path.isfile(drkt+'\\zapis2.bin')
True
```
## 4.4 Закрытие файла
```py
>>> fp.close()
```
## 4.5 Запись в файл с помощью write
```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()
```
![рис1](ris1.png)
```py
>>> sps3=[['Иванов И.',1],['Петров П.',2],['Сидоров С.',3]]
>>> fp3=open('zapis4.txt','w')
>>> for i in range(len(sps3)):
... stroka4=sps3[i][0]+' '+str(sps3[i][1])
... fp3.write(stroka4)
...
...
11
11
12
>>> fp3.close()
```
![рис2](ris2.png)
```py
>>> gh=open('zapis5.txt','w')
>>> for r in sps3:
... gh.write(r[0]+' '+str(r[1])+'\n')
...
12
12
13
>>> gh.close()
```
![рис3](ris3.png)
## 4.6 Чтение информации из файла
```py
sps1=[]
fp=open('zapis3.txt')
for stroka in fp:
stroka=stroka.rstrip('\n')
stroka=stroka.replace('[','')
stroka=stroka.replace(']','')
sps1=sps1+stroka.split(',')
fp.close()
sps1
['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
'[1, 2, 3, 4]'
stroka2
'\n[5, 6, 7, 8]\n[9, 10, 11, 12]\n'
```
## 4.8 Чтение из файла с помощью readline и readlines
```py
fp=open('zapis5.txt')
strok3=fp.readline()
strok4=fp.readlines()
strok3
'Иванов И. 1\n'
strok4
['Петров П. 2\n', 'Сидоров С. 3\n']
fp.close()
```
## 4.9 Работа с бинарными файлами
```py
import pickle
mnoz1={'pen','book','pen','iPhone','table','book'}
fp=open('zapis6.mnz','wb')
pickle.dump(mnoz1,fp)
fp.close()
```
![рис4](ris4.png)
```py
>>> fp=open('zapis6.mnz','rb')
>>> mnoz2=pickle.load(fp)
>>> fp.close()
>>> mnoz2
{'iPhone', 'pen', 'book', 'table'}
>>> mnoz2 is mnoz1
False
>>> mnoz2 == mnoz1
True
>>> fp=open('zapis7.2ob','wb')
>>> pickle.dump(mnoz1,fp)
>>> pickle.dump(sps3,fp)
>>> fp.close()
>>> fp=open('zapis7.2ob','rb')
>>> obj1=pickle.load(fp)
>>> obj2=pickle.load(fp)
>>> fp.close()
>>> obj1
{'iPhone', 'pen', 'book', '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
```
![рис5](ris5.png)

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

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

После

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

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

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

После

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

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

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

После

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

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

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

После

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

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

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

После

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

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

@@ -0,0 +1,11 @@
-22 -19 -16
-10 -7 -4
2 5 8
14 17 20
26 29 32
38 41 44
50 53 56
62 65 68
-25 -13 -1
11 23 35
47 59 71

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

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

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

@@ -0,0 +1,21 @@
import random
import os
import pickle
random.seed()
kort = tuple([str(random.randint(6, 56)) for i in range(125)])
print(kort)
fam = ['Мамакин', 'Кузьменко', 'Шабатов', 'Похил', 'Симанков']
os.chdir(r'C:\Users\uprkt\Desktop\ПО\python-labs\TEMA6')
f = open('bin.mnz', 'wb')
pickle.dump(kort, f)
pickle.dump(fam, f)
f.close()
f = open('bin.mnz', 'rb')
obj1 = pickle.load(f)
obj2 = pickle.load(f)
if obj1 == kort and obj2 == fam:
print('Объекты совпадают')
for i in range(0, len(kort), 5):
exec(f'spis{i} = kort[i:i+5]')
print(spis0)

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

@@ -0,0 +1,95 @@
# Тест по модулю 2
Мамакин Ярослав Романович, вариант 19
## Задание
1) Запросите у пользователя целое число N со значением из диапазона от 10 до 70 (проверить и при необходимости переспросить).
2) Создайте список SPS1 с N значениями от -25 с шагом 3. Рассчитайте сумму его элементов. Отобразите список и сумму на экране.
3) Устраните из списка каждый 4-й элемент, переписав их в отдельный список SPS2. Проверьте, что сумма элементов SPS1 и SPS2 равна ранее рассчитанной сумме.
4) Запросите у пользователя имя текстового файла для вывода результатов.
5) Запишите в текстовый файл с указанным именем данные из SPS1 по 3 элемента на строке, разделенные пробелом. Затем в этот же файл допишите данные из SPS2 с новой строки также по 3 элемента на строке.
## Решение
```py
import os
os.chdir(r'C:\Users\uprkt\Desktop\ПО\python-labs\TEMA6')
got_n = False
while not got_n:
n = int(input('Введите целое число от 10 до 70'))
if n < 70 and n > 9:
got_n = True
else:
print('Число не лежит в нужном диапазоне')
Введите целое число от 10 до 703
Число не лежит в нужном диапазоне
Введите целое число от 10 до 7033
sps1 = [i*3 - 25 for i in range(n)]
sps1
[-25, -22, -19, -16, -13, -10, -7, -4, -1, 2, 5, 8, 11, 14, 17, 20, 23, 26, 29, 32, 35, 38, 41, 44, 47, 50, 53, 56, 59, 62, 65, 68, 71]
print(sum(sps1))
759
sps2 = sps1[::4];sps2
[-25, -13, -1, 11, 23, 35, 47, 59, 71]
del sps1[::4]
print(sum(sps1) + sum(sps2))
759
filename = input('Введите имя файла для записи')
Введите имя файла для записиspiski.txt
f = open(filename, 'w')
for i in range(len(sps1)):
if i % 3 == 2:
f.write(str(sps1[i]) + '\n')
else:
f.write(str(sps1[i]) + ' ')
4
4
4
4
3
3
2
2
2
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
>>> for i in range(len(sps2)):
... if i % 3 == 2:
... f.write(str(sps2[i]) + '\n')
... else:
... f.write(str(sps2[i]) + ' ')
...
4
4
3
3
3
3
3
3
3
>>> f.close()
```
![Скриншот](testscrn.png)

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

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

После

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

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

0
TEMA6/zapis2.bin Обычный файл
Просмотреть файл

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

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

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

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

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

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

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

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

Двоичные данные
TEMA6/zapis7.2ob Обычный файл

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

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

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

После

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

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

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

После

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

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

@@ -0,0 +1,502 @@
# Отчет по теме 7
Мамакин Ярослав, А-02-23
## 1 Начало работы
Запустил среду IDLE, установил рабочую папку.
## 2 Создание пользовательской функции
## 2.1 Функция без аргументов
```py
>>> def uspeh():
... """Подтверждение успеха операции"""
... print('Выполнено успешно!')
...
>>> uspeh()
Выполнено успешно!
>>> type(uspeh)
<class 'function'>
>>> 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)
x
16 больше 5
>>> n,m='16','5';sravnenie(n,m)
16 меньше 5
```
## 2.3 Функция с return
```py
>>> def logistfun(b,a):
... """Вычисление логистической функции"""
... import math
... return a/(1+math.exp(-b))
...
...
>>> v,w=1,0.7;z=logistfun(w,v)
>>> z
0.6681877721681662
```
## 2.4 Сложение для разных типов аргументов
```py
>>> def slozh(a1,a2,a3,a4):
... """Сложение значений четырех аргументов"""
... return a1+a2+a3+a4
...
>>> slozh(1,2,3,4)
10
>>> slozh('1','2','3','4')
'1234'
>>> b1=[1,2];b2=[-1,-2];b3=[0,2];b4=[-1,-1]
>>> q=slozh(b1,b2,b3,b4)
>>> q
[1, 2, -1, -2, 0, 2, -1, -1]
>>> b1=(1,2);b2=(-1,-2);b3=(0,2);b4=(-1,-1)
>>> slozh(b1,b2,b3,b4)
(1, 2, -1, -2, 0, 2, -1, -1)
>>> b1={'a':1};b2={'b':2};b3={'c':3};b4={'d':4}
>>> slozh(b1,b2,b3,b4)
Traceback (most recent call last):
File "<pyshell#23>", line 1, in <module>
slozh(b1,b2,b3,b4)
File "<pyshell#13>", line 3, in slozh
return a1+a2+a3+a4
TypeError: unsupported operand type(s) for +: 'dict' and 'dict'
>>> b1={'a',1};b2={'b',2};b3={'c',3};b4={'d',4}
>>> slozh(b1,b2,b3,b4)
Traceback (most recent call last):
File "<pyshell#25>", line 1, in <module>
slozh(b1,b2,b3,b4)
File "<pyshell#13>", 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)
...
>>> import matplotlib.pyplot as plt
>>> plt.plot(spsy)
[<matplotlib.lines.Line2D object at 0x000001FD865211D0>]
>>> plt.title('Сигнал на выходе устройства')
Text(0.5, 1.0, 'Сигнал на выходе устройства')
```
![График](Figure_1.png)
## 3 Функции как объекты
## 3.1 Список атрибутов
```py
>>> dir(inerz)
\['\_\_annotations\_\_', '\_\_builtins\_\_', '\_\_call\_\_', '\_\_class\_\_', '\_\_closure\_\_', '\_\_code\_\_', '\_\_defaults\_\_', '\_\_delattr\_\_', '\_\_dict\_\_', '\_\_dir\_\_', '\_\_doc\_\_', '\_\_eq\_\_', '\_\_format\_\_', '\_\_ge\_\_', '\_\_get\_\_', '\_\_getattribute\_\_', '\_\_getstate\_\_', '\_\_globals\_\_', '\_\_gt\_\_', '\_\_hash\_\_', '\_\_init\_\_', '\_\_init\_subclass\_\_', '\_\_kwdefaults\_\_', '\_\_le\_\_', '\_\_lt\_\_', '\_\_module\_\_', '\_\_name\_\_', '\_\_ne\_\_', '\_\_new\_\_', '\_\_qualname\_\_', '\_\_reduce\_\_', '\_\_reduce\_ex\_\_', '\_\_repr\_\_', '\_\_setattr\_\_', '\_\_sizeof\_\_', '\_\_str\_\_', '\_\_subclasshook\_\_', '\_\_type\_params\_\_']
>>> inerz.__doc__
'Модель устройства с памятью:
x- текущее значение вх.сигнала,
T -постоянная времени,
ypred - предыдущее значение выхода устройства'
>>> help(inerz)
Help on function inerz in module __main__:
inerz(x, T, ypred)
Модель устройства с памятью:
x- текущее значение вх.сигнала,
T -постоянная времени,
ypred - предыдущее значение выхода устройства
```
## 3.2 Сохранение ссылки на объект-функцию в другой переменной
```py
>>> fnkt = sravnenie
>>> v=16
>>> fnkt(v,23)
16 меньше 23
```
## 3.3 Возможность альтернативного определения функции в программе
```py
>>> typ_fun=8
>>> if typ_fun==1:
... def func():
... print('Функция 1')
... else:
... def func():
... print('Функция 2')
...
>>> func()
Функция 2
```
## 4 Аргументы функции
## 4.1 Использование функции в качестве аргумента другой функции
```py
>>> def fun\_arg(fff,a,b,c):
... """fff-имя функции, используемой
... в качестве аргумента функции fun_arg"""
... return a+fff(c,b)
...
>>> zz=fun_arg(logistfun,-3,1,0.7)
>>> zz
-2.3318122278318336
```
## 4.2 Обязательные и необязательные аргументы
```py
>>> def logistfun(a,b=1): #Аргумент b – необязательный; значение по умолчанию=1
... """Вычисление логистической функции"""
... import math
... return b/(1+math.exp(-a))
...
>>> logistfun(0.7)
0.6681877721681662
>>> logistfun(0.7,2)
1.3363755443363323
```
## 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
>>> e1=(-1,6);dd2={'a3':3,'a4':9}
>>> qqqq=slozh(*e1,**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): #Аргументы: a-позиционный, b- по умолчанию + кортеж
"""Кортеж - сборка аргументов - должен быть последним!"""
smm=0
for elt in kort7:
smm+=elt
return a*smm+b
func4(-1,2,0,3,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]
>>> kort=(1,2,3,4)
>>> func2(kort)
Traceback (most recent call last):
File "<pyshell#95>", line 1, in <module>
func2(kort)
File "<pyshell#91>", line 2, in func2
sps\[1]=99
TypeError: 'tuple' object does not support item assignment
```
## 5 Специальные типы пользовательских функций
## 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__())
1
>>> print(alp.__next__())
4
>>> print(alp.__next__())
7
```
## 6 Локализация объектов в функциях
## 6.1 Примеры локализации
```py
>>> glb = 10
>>> def func7(arg):
... loc1=15
... glb=8
... return loc1*arg
...
>>> res=func7(glb)
>>> glb
10
>>> def func8(arg):
... loc1=15
... print(glb)
... glb=8
... return loc1*arg
...
>>> res=func8(glb)
Traceback (most recent call last):
File "<pyshell#116>", line 1, in <module>
res=func8(glb)
File "<pyshell#115>", line 3, in func8
print(glb)
UnboundLocalError: cannot access local variable 'glb' where it is not associated with a value
# Переменная glb не объявлена внутри функции
>>> glb=11
>>> def func7(arg):
... loc1=15
... global glb
... print(glb)
... glb=8
... return loc1\*arg
...
>>> res=func7(glb)
11
>>> glb
8
```
## 6.2 Выявление локализации объекта с помощью функций locals() и globals() из builtins
```py
>>> globals().keys()
dict\_keys(\['\_\_name\_\_', '\_\_doc\_\_', '\_\_package\_\_', '\_\_loader\_\_', '\_\_spec\_\_', '\_\_annotations\_\_', '\_\_builtins\_\_', 'os', 'uspeh', 'sravnenie', 'n', 'm', 'logistfun', 'v', 'w', 'z', 'slozh', 'b1', 'b2', 'b3', 'b4', 'q', 'inerz', 'sps', 'spsy', 'TT', 'yy', 'xx', 'plt', 'fnkt', 'typ\_fun', 'func', 'fun\_arg', 'zz', 'b1234', 'qq', 'dic4', 'qqq', 'e1', 'dd2', 'qqqq', 'func4', 'a', 'func3', 'sps1', 'func2', 'kort', 'anfun1', 'math', 'anfun2', 'anfun3', 'func5', 'mm', 'alp', 'glb', 'func7', 'res', 'func8'])
>>> locals().keys()
dict\_keys(\['\_\_name\_\_', '\_\_doc\_\_', '\_\_package\_\_', '\_\_loader\_\_', '\_\_spec\_\_', '\_\_annotations\_\_', '\_\_builtins\_\_', 'os', 'uspeh', 'sravnenie', 'n', 'm', 'logistfun', 'v', 'w', 'z', 'slozh', 'b1', 'b2', 'b3', 'b4', 'q', 'inerz', 'sps', 'spsy', 'TT', 'yy', 'xx', 'plt', 'fnkt', 'typ\_fun', 'func', 'fun\_arg', 'zz', 'b1234', 'qq', 'dic4', 'qqq', 'e1', 'dd2', 'qqqq', 'func4', 'a', 'func3', 'sps1', 'func2', 'kort', 'anfun1', 'math', 'anfun2', 'anfun3', 'func5', 'mm', 'alp', 'glb', 'func7', 'res', 'func8'])
>>> # Текущая область - глобальная
>>> def func8(arg):
... loc1=15
... glb=8
... print(globals().keys()) #Перечень глобальных объектов «изнутри» функции
... print(locals().keys()) #Перечень локальных объектов «изнутри» функции
... return loc1*arg
...
>>> hh = func8(glb)
dict\_keys(\['\_\_name\_\_', '\_\_doc\_\_', '\_\_package\_\_', '\_\_loader\_\_', '\_\_spec\_\_', '\_\_annotations\_\_', '\_\_builtins\_\_', 'os', 'uspeh', 'sravnenie', 'n', 'm', 'logistfun', 'v', 'w', 'z', 'slozh', 'b1', 'b2', 'b3', 'b4', 'q', 'inerz', 'sps', 'spsy', 'TT', 'yy', 'xx', 'plt', 'fnkt', 'typ\_fun', 'func', 'fun\_arg', 'zz', 'b1234', 'qq', 'dic4', 'qqq', 'e1', 'dd2', 'qqqq', 'func4', 'a', 'func3', 'sps1', 'func2', 'kort', 'anfun1', 'math', 'anfun2', 'anfun3', 'func5', 'mm', 'alp', 'glb', 'func7', 'res', 'func8'])
dict_keys(['arg', 'loc1', 'glb'])
>>> # Во втором списке - локальные объекты, использующиеся при работе функции func8
>>> 'glb' in globals().keys()
True
```
## 6.3 Локализация объектов при использовании вложенных функций
```py
>>> def func9(arg2,arg3):
... def func9_1(arg1):
... loc1=15
... glb1=8
... print('glob_func9_1:',globals().keys())
... print('locl_func9_1:',locals().keys())
... return loc1*arg1
... loc1=5
... glb=func9_1(loc1)
... print('loc_func9:',locals().keys())
... print('glob_func9:',globals().keys())
... return arg2+arg3*glb
...
>>> kk=func9(10,1)
glob\_func9\_1: dict\_keys(\['\_\_name\_\_', '\_\_doc\_\_', '\_\_package\_\_', '\_\_loader\_\_', '\_\_spec\_\_', '\_\_annotations\_\_', '\_\_builtins\_\_', 'os', 'uspeh', 'sravnenie', 'n', 'm', 'logistfun', 'v', 'w', 'z', 'slozh', 'b1', 'b2', 'b3', 'b4', 'q', 'inerz', 'sps', 'spsy', 'TT', 'yy', 'xx', 'plt', 'fnkt', 'typ\_fun', 'func', 'fun\_arg', 'zz', 'b1234', 'qq', 'dic4', 'qqq', 'e1', 'dd2', 'qqqq', 'func4', 'a', 'func3', 'sps1', 'func2', 'kort', 'anfun1', 'math', 'anfun2', 'anfun3', 'func5', 'mm', 'alp', 'glb', 'func7', 'res', 'func8', 'hh', 'func9'])
locl_func9_1: dict_keys(\['arg1', 'loc1', 'glb1'])
loc_func9: dict_keys(\['arg2', 'arg3', 'func9_1', 'loc1', 'glb'])
glob\_func9: dict\_keys(\['\_\_name\_\_', '\_\_doc\_\_', '\_\_package\_\_', '\_\_loader\_\_', '\_\_spec\_\_', '\_\_annotations\_\_', '\_\_builtins\_\_', 'os', 'uspeh', 'sravnenie', 'n', 'm', 'logistfun', 'v', 'w', 'z', 'slozh', 'b1', 'b2', 'b3', 'b4', 'q', 'inerz', 'sps', 'spsy', 'TT', 'yy', 'xx', 'plt', 'fnkt', 'typ\_fun', 'func', 'fun\_arg', 'zz', 'b1234', 'qq', 'dic4', 'qqq', 'e1', 'dd2', 'qqqq', 'func4', 'a', 'func3', 'sps1', 'func2', 'kort', 'anfun1', 'math', 'anfun2', 'anfun3', 'func5', 'mm', 'alp', 'glb', 'func7', 'res', 'func8', 'hh', 'func9'])
>>> # Списки глобальных объектов совпадают, локальные объекты доступны только внутри соответствующих функций
```
## 6.4 Пример моделирования системы
```py
>>> import math
>>> znach=input('k1,T,k2,Xm,A,F,N=').split(',')
k1,T,k2,Xm,A,F,N=2,10,3,1,5,0.025,30
>>> 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])
>>> vhod=[]
>>> for i in range(N):
... vhod.append(A*math.sin((2*i*math.pi)*F))
...
>>> vhod
[0.0, 0.7821723252011543, 1.545084971874737, 2.2699524986977337, 2.938926261462366, 3.5355339059327378, 4.045084971874737, 4.455032620941839, 4.755282581475767, 4.938441702975689, 5.0, 4.938441702975689, 4.755282581475768, 4.4550326209418385, 4.045084971874737, 3.5355339059327378, 2.9389262614623664, 2.2699524986977324, 1.5450849718747375, 0.7821723252011549, 6.123233995736766e-16, -0.7821723252011559, -1.5450849718747364, -2.2699524986977333, -2.938926261462365, -3.5355339059327386, -4.04508497187474, -4.455032620941839, -4.755282581475767, -4.938441702975688]
>>> 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, 0, 0, 0, 0, -1.299465163446989, -1.3579959054305797, 0, 3.7144096317728987, 7.811411673609909, 6.5646766889828605, -1.7207792337901524, -18.81372872718616, -31.38046599103643, -22.278866622819873, 17.097152611947436, 77.81058529582174, 112.97718138176809, 62.60779574768801, -98.35894773519156, -309.62984734263415, -395.51094806311954, -151.2442551724449, 474.0906424325323, 1190.4363664389593, 1337.7521059074418, 237.48484712636358, -2125.064719245332]
>>> import matplotlib.pyplot as plt
>>> plt.plot(vyhod)
[<matplotlib.lines.Line2D object at 0x000002E752D89090>]
```
![График2](Figure_2.png)

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

@@ -0,0 +1,55 @@
# Общее контрольное задание по теме 7
Мамакин Ярослав, А-02-23
## Задание
Разработайте и проверьте функцию, реализующую для момента времени t расчет выхода y(t) для устройства задержки: на вход поступает сигнал, а на выходе повторяется этот сигнал с за-держкой на заданное время Т.
Разработайте и проверьте функцию, реализующую расчет гистограммы по выборке случайной величины с каким-то распределением. Гистограмма при выводе на экран представляется в виде таблицы: границы интервала, число элементов выборки в интервале. Аргументы функции: вы-борка, число интервалов разбиения диапазона изменения случайной величины. Возвращаемый результат функции: список с числами элементов выборки в интервалах разбиения.
Разработайте и проверьте анонимную функцию, вычисляющую значение оценки отклика Y ли-нейной регрессии при значении переменной Х
Y=b1+b2*X
и имеющую аргументы b1, b2 и X.
## Решение
```py
>>> def zaderz(vhod, T):
... """Функция задержки
... Входной сигнал - vhod
... Время задержки - T"""
... return [0] * T + vhod
...
>>> x = [1, 2, 4, 8, 16]
>>> T = 5
>>> zaderz(x, T)
[0, 0, 0, 0, 0, 1, 2, 4, 8, 16]
>>> def histogram(x, n_bins):
... low_end = min(x)
... high_end = max(x)
... bin_w = (high_end - low_end) / n_bins
... bins = []
... for i in range(n_bins):
... lower = low_end + i * bin_w
... upper = low_end + (i + 1) * bin_w
... bins.append(len(list(filter(lambda j: lower <= j and j < upper, x))))
... if i == n_bins - 1:
... bins[i] += 1
... print(f"Интервал №{i + 1}: Нижняя граница: {lower} Верхняя граница: {upper} Число элементов: {bins[i]}")
... return bins
...
>>> x = [random.uniform(5, 10) for i in range(100)]
>>> n_elem = histogram(x, 5)
Интервал 1: Нижняя граница: 5.008028779046062 Верхняя граница: 5.9894754634094 Число элементов: 16
Интервал 2: Нижняя граница: 5.9894754634094 Верхняя граница: 6.97092214777274 Число элементов: 21
Интервал 3: Нижняя граница: 6.97092214777274 Верхняя граница: 7.952368832136078 Число элементов: 19
Интервал 4: Нижняя граница: 7.952368832136078 Верхняя граница: 8.933815516499417 Число элементов: 20
Интервал 5: Нижняя граница: 8.933815516499417 Верхняя граница: 9.915262200862756 Число элементов: 24
>>> print(n_elem)
[16, 21, 19, 20, 24]
>>> regression = lambda x, b1, b2: b1 + b2 * x
>>> regression(4, 8, 0.5)
10.0
```

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

@@ -0,0 +1,31 @@
# Тест по теме 7
Мамакин Ярослав, А-02-23
## Задание
28. Разработайте функцию с 3 аргументами: кортеж с числовыми элементами и 2 значения – Т1 и Т2 (T1<T2). функция должна рассчитать и вернуть список с 3 элементами – число элементов списка, меньших Т1, число элементов со значениями между Т1 и Т2, и число элементов, боль-ших Т2.
## Решение
```py
def count_n(kort, T1, T2):
lower = 0
higher = 0
inbetween = 0
if T1 < T2 and isinstance(kort, tuple):
for i in kort:
if i < T1:
lower += 1
elif i >= T1 and i <= T2:
inbetween += 1
elif i > T2:
higher += 1
return [lower, inbetween, higher]
else:
print('Введенные данные не удовлетворяют условию')
return []
print(count_n((1,2,3,4,5,6,7,8), 4, 7))
[3, 4, 1]
```

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

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

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

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

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

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

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

@@ -0,0 +1,6 @@
x = [1, 2, 4, 8, 16]
T = 5
import Moo
print(Moo.zaderz(x, T))

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

@@ -1,5 +1,6 @@
#Модуль Mod0
import Mod1
Mod1.perm1=1337
print('perm1=',Mod1.perm1)
from Mod2 import alpha as al
tt=al()

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

@@ -1,11 +1,12 @@
def alpha():
print('****ALPHA****')
t=input('Значение t=')
print(beta(float(t)))
return t
def beta(q):
print('****BETA****')
import math
expi=q*math.pi
print(alpha())
return math.exp(expi)

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

@@ -0,0 +1,3 @@
def zaderz(vhod, T):
return [0] * T + vhod

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

@@ -0,0 +1,7 @@
1
2
3
4
5
6
8

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

@@ -0,0 +1 @@
6 7 8 9 10 8 4 6

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

@@ -0,0 +1,19 @@
import math
def calculateCorrelation(list1, list2):
n = min(len(list1), len(list2))
mean1 = sum(list1[:n]) / n
mean2 = sum(list2[:n]) / n
numerator = 0
sum1 = 0
sum2 = 0
for i in range(n):
d1 = list1[i] - mean1
d2 = list2[i] - mean2
numerator += d1 * d2
sum1 += d1 ** 2
sum2 += d2 ** 2
denominator = math.sqrt(sum1 * sum2)
if denominator == 0:
print("деление на ноль")
return None
return numerator / denominator

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

@@ -0,0 +1,16 @@
import os, mod_s, mod_cc
for i in range(1, 3):
while True:
filename = os.path.abspath(input(f"Введите имя {i}-го файла: "))
if not os.path.isfile(filename):
print("Ошибка: введено неверное имя файла")
continue
newList = mod_s.readList(filename)
if not newList:
print("Ошибка: в данном файле содержится пустой список значений")
continue
globals()[f"list{i}"] = newList
break
correlation = mod_cc.calculateCorrelation(list1, list2)
if correlation is not None:
print(f"Коэффициент корреляции равен: {correlation}")

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

@@ -0,0 +1,7 @@
def readList(filename):
numList = []
with open(filename, "r") as file:
for line in file:
for num in line.strip().split():
numList.append(float(num))
return numList

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

@@ -0,0 +1,262 @@
# Отчет по теме 8
Мамакин Ярослав, А-02-23
## 1 Начало работы со средой и подключение необходимых модулей
```py
>>> import os,sys,importlib
>>> os.chdir(r'C:\Users\uprkt\Desktop\ПО\python-labs\TEMA8')
>>> os.getcwd()
'C:\\Users\\uprkt\\Desktop\\ПО\\python-labs\\TEMA8'
```
## 2 Создание и использование модулей в среде Python.
## 2.1 Запуск модуля на выполнение путем его импорта.
```py
>>> import Mod1
Mod1:Введите значение = 5
Mod1:Значение perm1= 5
>>> Mod1.perm1
'5'
>>> import Mod1
>>> importlib.reload(Mod1)
Mod1:Введите значение = 3
Mod1:Значение perm1= 3
<module 'Mod1' from 'C:\\Users\\uprkt\\Desktop\\ПО\\python-labs\\TEMA8\\Mod1.py'>
>>> Mod1.perm1
'3'
```
## 2.2 Словарь импортированных модулей
```py
>>> print(sorted(sys.modules.keys()))
\['Mod1', '\_\_future\_\_', '\_\_main\_\_', '\_abc', '\_ast', '\_bisect', '\_bz2', '\_codecs', '\_collections', '\_collections\_abc', '\_colorize', '\_compat\_pickle', '\_compression', '\_datetime', '\_frozen\_importlib', '\_frozen\_importlib\_external', '\_functools', '\_heapq', '\_imp', '\_io', '\_lzma', '\_opcode', '\_opcode\_metadata', '\_operator', '\_pickle', '\_pyrepl', '\_pyrepl.pager', '\_queue', '\_random', '\_signal', '\_sitebuiltins', '\_socket', '\_sre', '\_stat', '\_string', '\_struct', '\_sysconfig', '\_thread', '\_tkinter', '\_tokenize', '\_typing', '\_warnings', '\_weakref', '\_weakrefset', '\_winapi', '\_wmi', 'abc', 'ast', 'bdb', 'binascii', 'bisect', 'builtins', 'bz2', 'codecs', 'collections', 'collections.abc', 'configparser', 'contextlib', 'copyreg', 'datetime', 'dis', 'encodings', 'encodings.aliases', 'encodings.cp1251', 'encodings.utf\_8', 'enum', 'errno', 'fnmatch', 'functools', 'genericpath', 'heapq', 'idlelib', 'idlelib.autocomplete', 'idlelib.autocomplete\_w', 'idlelib.calltip', 'idlelib.calltip\_w', 'idlelib.config', 'idlelib.debugger', 'idlelib.debugger\_r', 'idlelib.debugobj', 'idlelib.debugobj\_r', 'idlelib.hyperparser', 'idlelib.iomenu', 'idlelib.macosx', 'idlelib.multicall', 'idlelib.pyparse', 'idlelib.rpc', 'idlelib.run', 'idlelib.scrolledlist', 'idlelib.stackviewer', 'idlelib.tooltip', 'idlelib.tree', 'idlelib.util', 'idlelib.window', 'idlelib.zoomheight', 'importlib', 'importlib.\_abc', 'importlib.\_bootstrap', 'importlib.\_bootstrap\_external', 'importlib.machinery', 'importlib.util', 'inspect', 'io', 'ipaddress', 'itertools', 'keyword', 'linecache', 'lzma', 'marshal', 'math', 'nt', 'ntpath', 'opcode', 'operator', 'os', 'os.path', 'pickle', 'pkgutil', 'platform', 'plistlib', 'posixpath', 'pydoc', 'pyexpat', 'pyexpat.errors', 'pyexpat.model', 'queue', 'random', 're', 're.\_casefix', 're.\_compiler', 're.\_constants', 're.\_parser', 'reprlib', 'select', 'selectors', 'shlex', 'shutil', 'site', 'socket', 'socketserver', 'stat', 'string', 'struct', 'sys', 'sysconfig', 'tempfile', 'textwrap', 'threading', 'time', 'tkinter', 'tkinter.constants', 'token', 'tokenize', 'traceback', 'types', 'typing', 'urllib', 'urllib.parse', 'warnings', 'weakref', 'winreg', 'xml', 'xml.parsers', 'xml.parsers.expat', 'xml.parsers.expat.errors', 'xml.parsers.expat.model', 'zipimport', 'zlib']
>>> sys.modules.pop('Mod1')
<module 'Mod1' from 'C:\\Users\\uprkt\\Desktop\\ПО\\python-labs\\TEMA8\\Mod1.py'>
>>> print(sorted(sys.modules.keys()))
\['\_\_future\_\_', '\_\_main\_\_', '\_abc', '\_ast', '\_bisect', '\_bz2', '\_codecs', '\_collections', '\_collections\_abc', '\_colorize', '\_compat\_pickle', '\_compression', '\_datetime', '\_frozen\_importlib', '\_frozen\_importlib\_external', '\_functools', '\_heapq', '\_imp', '\_io', '\_lzma', '\_opcode', '\_opcode\_metadata', '\_operator', '\_pickle', '\_pyrepl', '\_pyrepl.pager', '\_queue', '\_random', '\_signal', '\_sitebuiltins', '\_socket', '\_sre', '\_stat', '\_string', '\_struct', '\_sysconfig', '\_thread', '\_tkinter', '\_tokenize', '\_typing', '\_warnings', '\_weakref', '\_weakrefset', '\_winapi', '\_wmi', 'abc', 'ast', 'bdb', 'binascii', 'bisect', 'builtins', 'bz2', 'codecs', 'collections', 'collections.abc', 'configparser', 'contextlib', 'copyreg', 'datetime', 'dis', 'encodings', 'encodings.aliases', 'encodings.cp1251', 'encodings.utf\_8', 'enum', 'errno', 'fnmatch', 'functools', 'genericpath', 'heapq', 'idlelib', 'idlelib.autocomplete', 'idlelib.autocomplete\_w', 'idlelib.calltip', 'idlelib.calltip\_w', 'idlelib.config', 'idlelib.debugger', 'idlelib.debugger\_r', 'idlelib.debugobj', 'idlelib.debugobj\_r', 'idlelib.hyperparser', 'idlelib.iomenu', 'idlelib.macosx', 'idlelib.multicall', 'idlelib.pyparse', 'idlelib.rpc', 'idlelib.run', 'idlelib.scrolledlist', 'idlelib.stackviewer', 'idlelib.tooltip', 'idlelib.tree', 'idlelib.util', 'idlelib.window', 'idlelib.zoomheight', 'importlib', 'importlib.\_abc', 'importlib.\_bootstrap', 'importlib.\_bootstrap\_external', 'importlib.machinery', 'importlib.util', 'inspect', 'io', 'ipaddress', 'itertools', 'keyword', 'linecache', 'lzma', 'marshal', 'math', 'nt', 'ntpath', 'opcode', 'operator', 'os', 'os.path', 'pickle', 'pkgutil', 'platform', 'plistlib', 'posixpath', 'pydoc', 'pyexpat', 'pyexpat.errors', 'pyexpat.model', 'queue', 'random', 're', 're.\_casefix', 're.\_compiler', 're.\_constants', 're.\_parser', 'reprlib', 'select', 'selectors', 'shlex', 'shutil', 'site', 'socket', 'socketserver', 'stat', 'string', 'struct', 'sys', 'sysconfig', 'tempfile', 'textwrap', 'threading', 'time', 'tkinter', 'tkinter.constants', 'token', 'tokenize', 'traceback', 'types', 'typing', 'urllib', 'urllib.parse', 'warnings', 'weakref', 'winreg', 'xml', 'xml.parsers', 'xml.parsers.expat', 'xml.parsers.expat.errors', 'xml.parsers.expat.model', 'zipimport', 'zlib']
import Mod1
Mod1:Введите значение = 2
Mod1:Значение perm1= 2
Mod1.perm1
'2'
sys.modules.pop('Mod1')
<module 'Mod1' from 'C:\\Users\\uprkt\\Desktop\\ПО\\python-labs\\TEMA8\\Mod1.py'>
```
## 2.3 Запуск модуля на выполнение с помощью функции exec()
```py
>>> exec(open('Mod1.py').read())
Mod1:РведиСРµ Р·РЅР°Сение = 6
Mod1:РРЅР°Сение perm1= 6
>>> Mod1.perm1
'2'
>>> perm1
'6'
>>> exec(open('Mod1.py').read())
Mod1:РведиСРµ Р·РЅР°Сение = 7
Mod1:РРЅР°Сение perm1= 7
>>> perm1
'7'
>>> exec(open('Mod1.py').read())
Mod1:РведиСРµ Р·РЅР°Сение = 8
Mod1:РРЅР°Сение perm1= 8
>>> perm1
'8'
```
## 2.4
```py
>>> from Mod1 import perm1
Mod1:Введите значение = 9
Mod1:Значение perm1= 9
>>> perm1
'9'
>>> dir()
\['Mod1', '\_\_annotations\_\_', '\_\_builtins\_\_', '\_\_doc\_\_', '\_\_loader\_\_', '\_\_name\_\_', '\_\_package\_\_', '\_\_spec\_\_', '\_\_warningregistry\_\_', 'importlib', 'os', 'perm1', 'sys']
>>> from Mod2 import beta
>>> g=beta(2)
>>> g
535.4916555247646
>>> dir()
\['Mod1', '\_\_annotations\_\_', '\_\_builtins\_\_', '\_\_doc\_\_', '\_\_loader\_\_', '\_\_name\_\_', '\_\_package\_\_', '\_\_spec\_\_', '\_\_warningregistry\_\_', 'beta', 'g', 'importlib', 'os', 'perm1', 'sys']
>>> alpha()
Traceback (most recent call last):
File "<pyshell#30>", line 1, in <module>
alpha()
NameError: name 'alpha' is not defined
>>> from Mod2 import alpha as al
>>> al()
****ALPHA****
Значение t=5
'5'
>>> del al,beta
>>> from Mod2 import alpha as al, beta as bt
>>> del al,bt
>>> from Mod2 import *
>>> tt=alpha()
****ALPHA****
Значение t=0.12
>>> uu=beta(float(tt))
>>> uu
1.4578913609506803
```
## 3 Создание многомодульных программ
## 3.1 Пример простой многомодульной программы
```py
>>> sys.modules.pop('Mod1')
<module 'Mod1' from 'C:\\Users\\uprkt\\Desktop\\ПО\\python-labs\\TEMA8\\Mod1.py'>
>>> sys.modules.pop('Mod2')
<module 'Mod2' from 'C:\\Users\\uprkt\\Desktop\\ПО\\python-labs\\TEMA8\\Mod2.py'>
>>> import Mod0
Mod1:Введите значение = 7
Mod1:Значение perm1= 7
perm1= 7
****ALPHA****
Значение t=8
tt= 8
qq= 82226315585.59491
>>> Mod0.tt;Mod0.qq;Mod0.Mod1.perm1
'8'
82226315585.59491
'7'
```
## 3.2 Пример 2
Модуль ММ2:
```py
znach=input('k1,T,k2,Xm,A,F,N=').split(',')
k1=float(znach[0])
T=float(znach[1])
k2=float(znach[2])
Xm=float(znach[3])
A=float(znach[4])
F=float(znach[5])
N=int(znach[6])
import math
vhod=[]
for i in range(N):
vhod.append(A*math.sin((2*i*math.pi)*F))
import MM1 as mod
yi1=0;yin1=0;yi2=0
vyhod=[]
for xt in vhod:
xt1=xt-yi2 #отрицательная обратная связь
[yi1,yin1]=mod.realdvig(xt1,k1,T,yi1,yin1)
yi2=mod.tahogen(yin1,k2,yi2)
yt=mod.nechus(yin1,Xm)
vyhod.append(yt)
```
Модуль MM0:
```py
import MM2
print('y=',MM2.vyhod)
```
Запустим модуль MM0:
```py
import MM0
k1,T,k2,Xm,A,F,N=2,10,3,1,5,0.025,30
y= [0, 0, 0, 0, 0, 0, 0, -1.299465163446989, -1.3579959054305797, 0, 3.7144096317728987, 7.811411673609909, 6.5646766889828605, -1.7207792337901524, -18.81372872718616, -31.38046599103643, -22.278866622819873, 17.097152611947436, 77.81058529582174, 112.97718138176809, 62.60779574768801, -98.35894773519156, -309.62984734263415, -395.51094806311954, -151.2442551724449, 474.0906424325323, 1190.4363664389593, 1337.7521059074418, 237.48484712636358, -2125.064719245332]
```
## 3.3 Области действия объектов в модулях
```py
def alpha():
print('****ALPHA****')
t=input('Значение t=')
beta(float(t))
return t
def beta(q):
import math
expi=q*math.pi
alpha()
return math.exp(expi)
```
```py
>>> Mod2.alpha()
****ALPHA****
Значение t=9
'9'
>>> Mod2.beta(8)
82226315585.59491
```
```py
#Модуль Mod0
import Mod1
print('perm1=',Mod1.perm1)
from Mod2 import alpha as al
tt=al()
print('tt=',tt)
from Mod2 import beta
qq=beta(float(tt))
print('qq=',qq)
print('t=',t)
print('expi=',expi)
```
```py
>>> import Mod0
perm1= 9
****ALPHA****
Значение t=1
tt= 1
qq= 23.140692632779267
Traceback (most recent call last):
File "<pyshell#12>", line 1, in <module>
import Mod0
File "C:\Users\uprkt\Desktop\ПО\python-labs\TEMA8\Mod0.py", line 10, in <module>
print('t=',t)
NameError: name 't' is not defined. Did you mean: 'tt'?
```
```py
#Модуль Mod0
import Mod1
Mod1.perm1=1337
print('perm1=',Mod1.perm1)
from Mod2 import alpha as al
tt=al()
print('tt=',tt)
from Mod2 import beta
qq=beta(float(tt))
print('qq=',qq)
```
```py
>>> import Mod0
perm1= 1337
****ALPHA****
Значение t=8
tt= 8
qq= 82226315585.59491
```
```py
>>> Mod0.Mod1.perm1=4
>>> Mod0.Mod1.perm1
4
>>> Mod0.Mod1.tt=10
>>> Mod0.Mod1.qq=93865
>>> Mod0.Mod1.tt
10
>>> Mod0.Mod1.qq
93865
```

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

@@ -0,0 +1,80 @@
# Общее контрольное задание по теме 8
Мамакин Ярослав, А-02-23
## Задание
Общее контрольное задание.
Разработайте программу, состоящую из трех модулей:
- Модуль 1 содержит функцию считывания числового списка из текстового файла с заданным именем (аргумент функции – имя файла). Элементы в файле могут располагаться по несколько на строке с разделением пробелом. Числа элементов в строках могут быть разными. Получен-ный список должен возвращаться в вызывающую программу.
- Модуль 2 содержит функцию расчета коэффициента корреляции по двум числовым спискам (аргументы функции – имена двух списков). Числа элементов в списках могут различаться. Значение коэффициента должно возвращаться в вызывающую программу.
- Модуль 3 запрашивает у пользователя и вводит имена двух файлов с исходными данными, дважды вызывает функцию из модуля 1 и считывает два списка из двух текстовых файлов. За-тем вызывает функцию расчета коэффициента корреляции с помощью функции из модуля 2 и отображает рассчитанное значение на экране с округлением до трех цифр после точки.
## Решение
Модуль 1
```py
def readList(filename):
numList = []
with open(filename, "r") as file:
for line in file:
for num in line.strip().split():
numList.append(float(num))
return numList
```
Модуль 2
```py
import math
def calculateCorrelation(list1, list2):
n = min(len(list1), len(list2))
mean1 = sum(list1[:n]) / n
mean2 = sum(list2[:n]) / n
numerator = 0
sum1 = 0
sum2 = 0
for i in range(n):
d1 = list1[i] - mean1
d2 = list2[i] - mean2
numerator += d1 * d2
sum1 += d1 ** 2
sum2 += d2 ** 2
denominator = math.sqrt(sum1 * sum2)
if denominator == 0:
print("деление на ноль")
return None
return numerator / denominator
```
Модуль 3
```py
import os, mod_s, mod_cc
for i in range(1, 3):
while True:
filename = os.path.abspath(input(f"Введите имя {i}-го файла: "))
if not os.path.isfile(filename):
print("Ошибка: введено неверное имя файла")
continue
newList = mod_s.readList(filename)
if not newList:
print("Ошибка: в данном файле содержится пустой список значений")
continue
globals()[f"list{i}"] = newList
break
correlation = mod_cc.calculateCorrelation(list1, list2)
if correlation is not None:
print(f"Коэффициент корреляции равен: {correlation}")
```
```py
>>> import mod_m
Введите имя 1-го файла: file1.txt
Введите имя 2-го файла: file2.txt
Коэффициент корреляции равен: -0.1888141941724601
```

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

@@ -0,0 +1,29 @@
# Индивидуальное задание по теме 8
Мамакин Ярослав, А-02-23
## Задание
По указанному преподавателем варианту контрольного задания обратитесь к индивидуальному заданию с таким номером в теме 7, разработайте функцию, на ее основе создайте модуль. Создайте второй модуль, в котором должны быть инструкции для ввода/создания исходных данных для проверки работы функции, вызов функции и отображение полученных результатов.
## Решение
Модуль Moo
```py
def zaderz(vhod, T):
return [0] * T + vhod
```
Модуль Mnn
```py
x = [1, 2, 4, 8, 16]
T = 5
import Moo
print(Moo.zaderz(x, T))
```
```py
>>> import Mnn
[0, 0, 0, 0, 0, 1, 2, 4, 8, 16]
```

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

@@ -0,0 +1,30 @@
class Employee:
def __init__(self, fio, otdel, dolzhnost, oklad):
self.fio = fio
self.otdel = otdel
self.dolzhnost = dolzhnost
self.oklad = oklad
self.bonus = []
def give_raise(self, amount):
print(f'Оклад повышен на {amount} рублей, новый оклад: {self.oklad + amount}')
self.oklad = self.oklad + amount
def transfer(self, new_otdel):
self.otdel = new_otdel
def position(self, new_position):
self.dolzhnost = new_position
def give_bonus(self, bonus):
self.bonus.append(bonus)
def read_bonus(self):
return self.bonus
def remove_bonus(self):
if len(self.bonus) != 0:
return self.bonus.pop()
return None
svojstvo = property(read_bonus, give_bonus, remove_bonus)

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

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

После

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

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

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

После

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

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

@@ -0,0 +1,5 @@
import M2
print(f'Минимальное и максимальное значения: {M2.min_and_max}')
print(f'Список средних: {M2.spis}')

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

@@ -0,0 +1,23 @@
def min_max(vibork):
minim = 0
maxim = 0
for i in vibork:
if i == min(vibork):
minim = i
if i == max(vibork):
maxim = i
return (minim, maxim)
def avg_bins(vibork, N):
sum = 0
avg = 0
outp = []
for i in range(len(vibork)):
if i % N == 0:
if i != 0:
avg = sum / N
outp.append(avg)
sum = 0
sum += vibork[i]
outp.append(sum / ((i % N) + 1))
return outp

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

@@ -0,0 +1,25 @@
import os
os.chdir(r'C:\Users\uprkt\Desktop\ПО\python-labs\TEMA9')
while True:
filename = os.path.abspath(input(f"Введите имя файла: "))
if os.path.isfile(filename):
break
import pickle
fp=open(filename, 'rb')
vib=pickle.load(fp)
fp.close()
import M1
min_and_max = M1.min_max(vib)
print(f'Число элементов: {len(vib)}')
N = int(input('Введите число N'))
spis = M1.avg_bins(vib, N)
import pylab
pylab.plot(vib)
pylab.show()

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

@@ -0,0 +1,10 @@
class Class1: #Объявление класса Class1 в модуле
def zad_zn(self,znach): # 1 Метод класса
self.data=znach # self - ссылка на экземпляр класса Class1
def otobrazh(self): # 2 Метод класса
print(self.data)#Отображение данных экземпляра
class Class2(Class1): #Class2 - наследник класса Class1
def otobrazh(self): # Метод класса Class2
print('значение=',self.data)#Отображение данных экземпляра
def otobrazh(objekt): #Объявление самостоятельной функции
print('значение объекта=',objekt)

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

@@ -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] #Обр.связь с усилителем 2
y1=self.param[0]*y0 #Усилитель1
y2=inerz(y1,self.param[1],self.ypr[0]) #Инерционное звено1
y3=inerz(y2,self.param[2],self.ypr[1]) #Инерционное звено2
self.ypr[0]=y2
self.ypr[1]=y3
def otobraz(self):
print('y=',self.ypr[1])

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

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

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

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

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

@@ -0,0 +1,313 @@
# Отчет по теме 9
Мамакин Ярослав, А-02-23
## 1 Начало работы
Запустил среду IDLE, установил рабочую папку
## 2 Создание классов и их наследников
## 2.1 Создание автономного класса
```py
>>> class Class1: #Объявление класса
... def zad_zn(self,znach): #Метод 1 класса1 – задание значения data
... self.data=znach # self - ссылка на экземпляр класса
... def otobrazh(self): # Метод 2 класса1
... print(self.data)#Отображение данных экземпляра класса
...
>>> z1=Class1()
>>> z2=Class1()
>>> z1.zad_zn('экз.класса 1')
>>> z2.zad_zn(-632.453)
>>> z1.otobrazh()
экз.класса 1
>>> z2.otobrazh()
-632.453
>>> z1.data='Новое значение атрибута у экз.1'
>>> z1.otobrazh()
Новое значение атрибута у экз.1
```
## 2.2 Создание класса-наследника
```py
>>> class Class2(Class1): #Class2 - наследник класса Class1
... def otobrazh(self): # Метод класса Class2 – переопределяет метод родителя
... print('значение=',self.data)#Отображение данных экземпляра
...
>>> z3=Class2()
>>> dir(z3)
['__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__firstlineno__', '__format__', '__ge__', '__getattribute__', '__getstate__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__module__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__static_attributes__', '__str__', '__subclasshook__', '__weakref__', 'otobrazh', 'zad_zn']
>>> z3.zad_zn('Совсем новое')
>>> z3.otobrazh()
значение= Совсем новое
>>> z1.otobrazh()
Новое значение атрибута у экз.1
>>> del z1,z2,z3
```
## 3 Использование классов, содержащихся в модулях
Содержимое Mod3
```py
class Class1: #Объявление класса Class1 в модуле
def zad_zn(self,znach): # 1 Метод класса
self.data=znach # self - ссылка на экземпляр класса Class1
def otobrazh(self): # 2 Метод класса
print(self.data)#Отображение данных экземпляра
class Class2(Class1): #Class2 - наследник класса Class1
def otobrazh(self): # Метод класса Class2
print('значение=',self.data)#Отображение данных экземпляра
def otobrazh(objekt): #Объявление самостоятельной функции
print('значение объекта=',objekt)
```
```py
>>> from Mod3 import Class1 #Частичный импорт содержимого модуля
>>> z4=Class1()
>>> z4.otobrazh()
Traceback (most recent call last):
File "<pyshell#20>", line 1, in <module>
z4.otobrazh()
File "C:\Users\uprkt\Desktop\ПО\python-labs\TEMA9\Mod3.py", line 5, in otobrazh
print(self.data)#Отображение данных экземпляра
AttributeError: 'Class1' object has no attribute 'data'
>>> # Параметру data обьекта не было присвоено значение
>>> from Mod3 import Class1
>>> z4=Class1()
>>> z4.data='значение данного data у экз.4'
>>> z4.otobrazh()
значение данного data у экз.4
>>> del z4
>>> import Mod3
>>> z4=Mod3.Class2()
>>> z4.zad_zn('Класс из модуля')
>>> z4.otobrazh()
значение= Класс из модуля
>>> Mod3.otobrazh('Объект')
значение объекта= Объект
>>> # Вызывается самостоятельная функция из модуля, а не метод класса
```
## 4 Использование специальных методов
```py
>>> class Class3(Class2): #Наследник класса Class2, а через него – и класса Class1
... def __init__(self,znach): #Конструктор-вызывается при создании нового экземпляра класса
... self.data=znach
... def __add__(self,drug_zn): #Вызывается, когда экземпляр участвует в операции «+»
... return Class3(self.data+drug_zn)
... def zad_dr_zn(self,povtor): #А это - обычный метод
... self.data*=povtor
...
>>> 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__', '__firstlineno__', '__format__', '__ge__', '__getattribute__', '__getstate__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__module__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__static_attributes__', '__str__', '__subclasshook__', '__weakref__', 'otobrazh', 'zad_dr_zn', 'zad_zn']
>>> Class3.fio='Иванов И.И.'
>>> dir(Class3)
['__add__', '__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__firstlineno__', '__format__', '__ge__', '__getattribute__', '__getstate__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__module__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__static_attributes__', '__str__', '__subclasshook__', '__weakref__', 'fio', 'otobrazh', 'zad_dr_zn', 'zad_zn']
>>> z7=Class3(123)
>>> dir(z7)==dir(Class3)
False
>>> z7.fio
'Иванов И.И.'
>>> z7.rozden='1987'
>>> dir(z7)
['__add__', '__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__firstlineno__', '__format__', '__ge__', '__getattribute__', '__getstate__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__module__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__static_attributes__', '__str__', '__subclasshook__', '__weakref__', 'data', 'fio', 'otobrazh', 'rozden', 'zad_dr_zn', 'zad_zn']
>>> dir(Class3)
['__add__', '__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__firstlineno__', '__format__', '__ge__', '__getattribute__', '__getstate__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__module__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__static_attributes__', '__str__', '__subclasshook__', '__weakref__', 'fio', 'otobrazh', 'zad_dr_zn', 'zad_zn']
```
## 6 Выявление родительских классов
```py
>>> Class3.__bases__
(<class '__main__.Class2'>,)
>>> Class2.__bases__
(<class '__main__.Class1'>,)
>>> Class1.__bases__
(<class 'object'>,)
>>> Class3.__mro__
(<class '__main__.Class3'>, <class '__main__.Class2'>, <class '__main__.Class1'>, <class 'object'>)
>>> ZeroDivisionError.__mro__
(<class 'ZeroDivisionError'>, <class 'ArithmeticError'>, <class 'Exception'>, <class 'BaseException'>, <class 'object'>)
```
## 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#61>", line 1, in <module>
exempl.svojstvo
File "<pyshell#55>", line 5, in chten
return sam.__prm
AttributeError: 'Class4' object has no attribute '_Class4__prm'
>>> # Свойство было удалено
```
## 8 Пример представления в виде класса модели системы автоматического регулирования (САР)
```py
class SAU:
def __init__(self,zn_param):
self.param=zn_param
self.ypr=[0,0]
def zdn_zn(self,upr):
self.x=upr
def model(self):
def inerz(x,T,yy):
return (x+T*yy)/(T+1)
y0=self.x-self.ypr[1]*self.param[3] #Обр.связь с усилителем 2
y1=self.param[0]*y0 #Усилитель1
y2=inerz(y1,self.param[1],self.ypr[0]) #Инерционное звено1
y3=inerz(y2,self.param[2],self.ypr[1]) #Инерционное звено2
self.ypr[0]=y2
self.ypr[1]=y3
def otobraz(self):
print('y=',self.ypr[1])
```
Проверка работы:
```py
prm=[2.5,4,1.3,0.8] #Параметры модели: коэф.усиления, 2 пост.времени, обратная связь
from SAU import *
xx=[0]+[1]*20 #Входной сигнал – «ступенька»
SAUe=SAU(prm) # Создаём экземпляр класса
yt=[]
for xt in xx: # Прохождение входного сигнала
SAUe.zdn_zn(xt)
... SAUe.model()
... SAUe.otobraz()
... yt.append(SAUe.ypr[1])
...
y= 0.0
y= 0.2173913043478261
y= 0.4763705103969754
y= 0.686594887811293
y= 0.8199324616478645
y= 0.8837201137353929
y= 0.8994188484874774
y= 0.8892777072047301
y= 0.870097963179993
y= 0.8518346102696789
y= 0.8387499784485772
y= 0.8314204114211459
y= 0.8286051955249649
y= 0.8285656555914835
y= 0.8297915186846528
y= 0.8312697736438287
y= 0.8324765218921963
y= 0.8332456979978418
y= 0.8336163607592184
y= 0.8337101315489143
y= 0.833654237067147
>>> import pylab
>>> pylab.plot(yt)
[<matplotlib.lines.Line2D object at 0x0000028C363DA710>]
>>> pylab.show()
>>> prm=[5.5,2,6.3,0.9]
>>> SAUe=SAU(prm)
>>> yt=[]
>>> for xt in xx: # Прохождение входного сигнала
... SAUe.zdn_zn(xt)
... SAUe.model()
... SAUe.otobraz()
... yt.append(SAUe.ypr[1])
...
y= 0.0
y= 0.2511415525114155
y= 0.5785429828402243
y= 0.8608684291527201
y= 1.0405548889736682
y= 1.1123698572088563
y= 1.1026104028422206
y= 1.0485692602883017
y= 0.9837333929415083
y= 0.9303020862487426
y= 0.8979490324812144
y= 0.8865131776531742
y= 0.8902188772938274
y= 0.9016293565437798
y= 0.9143726153161045
y= 0.9244204691700071
y= 0.9301876457452414
y= 0.931925085592902
y= 0.9308720026158589
y= 0.9284995249411967
y= 0.9260125207356777
>>> pylab.plot(yt)
[<matplotlib.lines.Line2D object at 0x0000028C385FB110>]
>>> pylab.show()
```
![lin1](Figure_1.png)
![lin2](Figure_2.png)

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

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

После

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

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

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

После

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

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

@@ -0,0 +1,70 @@
# Общее контрольное задание по теме 9
Мамакин Ярослав, А-02-23
## Задание
Создайте и запишите в модуль класс, содержащий следующие компоненты:
- конструктор, задающий четырем атрибутам (fio, otdel, dolzhnost, oklad), представляющим фамилии сотрудников, название отделов, названия должностей сотрудников и размеры их окладов, некоторые начальные значения;
- метод для обеспечения операции повышения оклада сотрудника на заданное значение;
- метод для обеспечения перевода сотрудника из одного отдела в другой;
- метод для изменения должности сотрудника;
- свойство, содержащее перечень (список) поощрений сотрудника.
Создайте 2 экземпляра класса, задайте им некоторые значения атрибутов и свойства. Отобрази-те эти значения. Попробуйте с этими экземплярами операции перевода из отдела в отдел, изме-нения должности и оклада, объявления благодарности.
## Решение
Содержимое модуля:
```py
class Employee:
def __init__(self, fio, otdel, dolzhnost, oklad):
self.fio = fio
self.otdel = otdel
self.dolzhnost = dolzhnost
self.oklad = oklad
self.bonus = []
def give_raise(self, amount):
print(f'Оклад повышен на {amount} рублей, новый оклад: {self.oklad + amount}')
self.oklad = self.oklad + amount
def transfer(self, new_otdel):
self.otdel = new_otdel
def position(self, new_position):
self.dolzhnost = new_position
def give_bonus(self, bonus):
self.bonus.append(bonus)
def read_bonus(self):
return self.bonus
def remove_bonus(self):
if len(self.bonus) != 0:
return self.bonus.pop()
return None
svojstvo = property(read_bonus, give_bonus, remove_bonus)
```
Проверка работы:
```py
>>> import EMP
>>> de = EMP.Employee('Дерипаска Олег Владимирович', 'Маркетинг', 'Аналитик', 130000)
>>> ya = EMP.Employee('Мамакин Ярослав Романович', 'Производственный', 'Арбузолитейщик', 131000)
>>> ya.dolzhnost
'Арбузолитейщик'
>>> de.svojstvo = 'Премного благодарны'
>>> de.svojstvo = 'Вы лучший'
>>> de.svojstvo
['Премного благодарны', 'Вы лучший']
>>> de.transfer('Клининговый')
>>> de.otdel
'Клининговый'
>>> ya.give_raise(70000)
Оклад повышен на 70000 рублей, новый оклад: 201000
```

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

@@ -0,0 +1,127 @@
# Тест по модулю 3
Мамакин Ярослав, А-02-23
## Задание
M3_27
1) Создайте модуль М1, содержащий 2 функции:
- функция 1: аргумент - список или кортеж с выборкой; определение по списку или кортежу номеров элементов с наименьшим и наибольшим значениями;
- функция 2: аргументы - список или кортеж с выборкой и целочисленный параметр N; функция должна разделить выборку на непересекающиеся группы, содержащие по заданному числу N элементов с последовательными индексами (в последней группе число элементов может быть меньше N), и расчет по группам среднего значения их элементов; значения средних возвращаются в вызывающую программу в виде списка;
2) Создайте еще один модуль М2, в котором должны выполняться следующие операции:
- запрашивается имя бинарного файла с выборкой, проверяется его наличие и при отсутствии - повторяется запрос;
- выборка вводится из файла;
- с помощью функции 1 производится определение номеров наименьшего и наибольшего элементов;
- отображается число элементов в считанной последовательности и запрашивается у пользователя число элементов N для формирования групп;
- с помощью функции 2 рассчитывается список со средними значениями по группам ;
- на графике отображается исходная выборка.
3) Создайте модуль М0 - главную программу, которая вызывает М2 и отображает результаты расчета на экране.
4) Проведите расчеты при 2-х разных исходных файлах.
## Решение
```py
def min_max(vibork):
minim = 0
maxim = 0
for i in vibork:
if i == min(vibork):
minim = i
if i == max(vibork):
maxim = i
return (minim, maxim)
def avg_bins(vibork, N):
sum = 0
avg = 0
outp = []
for i in range(len(vibork)):
if i % N == 0:
if i != 0:
avg = sum / N
outp.append(avg)
sum = 0
sum += vibork[i]
outp.append(sum / ((i % N) + 1))
return outp
```
```py
import os
os.chdir(r'C:\Users\uprkt\Desktop\ПО\python-labs\TEMA9')
while True:
filename = os.path.abspath(input(f"Введите имя файла: "))
if os.path.isfile(filename):
break
import pickle
fp=open(filename, 'rb')
vib=pickle.load(fp)
fp.close()
import M1
min_and_max = M1.min_max(vib)
print(f'Число элементов: {len(vib)}')
N = int(input('Введите число N'))
spis = M1.avg_bins(vib, N)
import pylab
pylab.plot(vib)
pylab.show()
```
```py
import M2
print(f'Минимальное и максимальное значения: {M2.min_and_max}')
print(f'Список средних: {spis}')
```
```py
import M0
Введите имя файла: binar1.bin
Число элементов: 9
Введите число N3
Минимальное и максимальное значения: (1, 9)
Список средних: [2.0, 5.0, 8.0]
import M0
Введите имя файла: binar2.bin
Число элементов: 16
Введите число N4
Минимальное и максимальное значения: (2, 56)
Список средних: [4.5, 11.75, 19.0, 4.25]
```
![12](t1.png)
![23](t2.png)