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

...

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

Автор SHA1 Сообщение Дата
ButkoZV ffde2d2b47 Изменил(а) на 'TEMA5/task.md'
20 часов назад
ButkoZV f59c4d4483 Изменил(а) на 'TEMA5/task.md'
20 часов назад
ButkoZV 2523bf3783 Изменил(а) на 'TEMA5/task.md'
20 часов назад
ButkoZV f33116880d Изменил(а) на 'TEMA5/report.md'
21 часов назад
ButkoZV c04e3c73fd Загрузил(а) файлы в 'TEMA5'
21 часов назад
ButkoZV 5003cbac66 Загрузил(а) файлы в 'TEMA5'
21 часов назад
ButkoZV 36706a8bd3 Изменил(а) на 'TEMA4/test.md'
2 недель назад
ButkoZV 4db4be844c Изменил(а) на 'TEMA4/test.md'
2 недель назад
ButkoZV 8cd089824e Загрузил(а) файлы в 'TEMA4'
2 недель назад
ButkoZV 3da6bd2633 Изменил(а) на 'TEMA4/task.md'
2 недель назад
ButkoZV 4ff8142dfc Загрузил(а) файлы в 'TEMA4'
2 недель назад
ButkoZV 193a103fd6 Изменил(а) на 'TEMA4/report.md'
2 недель назад
ButkoZV e03291dad8 Изменил(а) на 'TEMA3/test.md'
2 недель назад
ButkoZV 5dd24f5cc7 Удалить 'TEMA3/test.md'
2 недель назад
ButkoZV c87123a2f9 Загрузил(а) файлы в 'TEMA3'
2 недель назад
ButkoZV 16c20263f2 Загрузил(а) файлы в 'TEMA3'
2 недель назад
ButkoZV 02019f9678 Создал(а) 'TEMA3/test.md'
2 недель назад
ButkoZV dc8bdcd744 Изменил(а) на 'TEMA3/report.md'
2 недель назад
ButkoZV 8826fd3231 Загрузил(а) файлы в 'TEMA4'
2 недель назад
ButkoZV e69d472d83 Загрузил(а) файлы в 'TEMA4'
2 недель назад
ButkoZV 5e44a22081 Изменил(а) на 'TEMA3/task.md'
2 недель назад
ButkoZV da1e610287 Загрузил(а) файлы в 'TEMA3'
2 недель назад
ButkoZV f1dcdfac0e Удалить 'TEMA3/task.md'
2 недель назад
ButkoZV 02465640af Загрузил(а) файлы в 'TEMA3'
2 недель назад
ButkoZV e5340044d3 Изменил(а) на 'TEMA3/report.md'
2 недель назад
ButkoZV 95086f334e Изменил(а) на 'TEMA3/report.md'
2 недель назад
ButkoZV 07d50f0000 Изменил(а) на 'TEMA3/report.md'
2 недель назад
ButkoZV 871f484455 Создал(а) 'TEMA3/report.md'
2 недель назад
ButkoZV 1620dbc2f9 Создал(а) 'report.md'
2 недель назад
ButkoZV 571ecb1e7a Изменил(а) на 'TEMA2/report.md'
1 месяц назад
ButkoZV 8d79247c63 Создал(а) 'TEMA2/report.md'
1 месяц назад
ButkoZV a4508b154f Изменил(а) на 'TEMA1/report.md'
2 месяцев назад
u207-07 a50f702824 report
2 месяцев назад
u207-07 64c9f5c669 report
2 месяцев назад
u207-07 35bfe622cb report
2 месяцев назад
u207-07 c4ef032844 report
2 месяцев назад
u207-07 53d170d83a report
2 месяцев назад

Двоичные данные
TEMA1/A.bmp

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

После

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

Двоичные данные
TEMA1/B.bmp

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

После

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

@ -0,0 +1,6 @@
#Программа по Теме 1 Бутко Захара Владимировича
print('Hello')
h=input('Your name=')
exit()
import os
os.chdir('C:\\Users\\u207-07\\Desktop\\python-labs\\TEMA1\\')

@ -0,0 +1,80 @@
# Отчет по теме 1
Бутко Захар, А-03-23
## 1 Основы языка программирования Python
## 1.1 Работа с пунктами 3-5
Python 3.11.5 (tags/v3.11.5:cce6ba9, Aug 24 2023, 14:38:34) [MSC v.1936 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
print('Hello')
Hello
h=input('Your name=')
Your name=Zakhar
## 1.2 Работа с IDLE 6-8
Python 3.11.5 (tags/v3.11.5:cce6ba9, Aug 24 2023, 14:38:34) [MSC v.1936 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
import os
os.chdir('C:\\Users\\u207-07\\Desktop\\python-labs\\TEMA1\\')
## 1.3 Продолжение работы с IDLE 10-12
import os
os.chdir('C:\\Users\\u207-07\\Desktop\\python-labs\\TEMA1\\')
import prb1
Как Вас зовут? Захар
Привет, Захар
//проверил работу файлов с инсутрукций в папке __pycache__//
## 1.4 Выполнение разных команд.
help(print); help(input)
Help on built-in function print in module builtins:
print(*args, sep=' ', end='\n', file=None, flush=False)
Prints the values to a stream, or to sys.stdout by default.
sep
string inserted between values, default a space.
end
string appended after the last value, default a newline.
file
a file-like object (stream); defaults to the current sys.stdout.
flush
whether to forcibly flush the stream.
Help on built-in function input in module builtins:
input(prompt='', /)
Read a string from standard input. The trailing newline is stripped.
The prompt string, if given, is printed to standard output without a
trailing newline before reading input.
If the user hits EOF (*nix: Ctrl-D, Windows: Ctrl-Z+Return), raise EOFError.
On *nix systems, readline is used if available.
## 1.5 Выполнение пункта 15
import tdemo_chaos
![](A.bmp)
![](B.bmp)

@ -0,0 +1,207 @@
## Отчет по теме 2
Бутко З.В. А-03-23
## Изучение простых объектов и операций.
~~~py
f1=16; f2=3
f1,f2
(16, 3)
f1;f2
16
3
dir()
['__annotations__', '__builtins__', '__doc__', '__loader__', '__name__', '__package__', '__spec__', 'f1', 'f2']
dir(f1)
['__abs__', '__add__', '__and__', '__bool__', '__ceil__', '__class__', '__delattr__', '__dir__', '__divmod__', '__doc__', '__eq__', '__float__', '__floor__', '__floordiv__', '__format__', '__ge__', '__getattribute__', '__getnewargs__', '__getstate__', '__gt__', '__hash__', '__index__', '__init__', '__init_subclass__', '__int__', '__invert__', '__le__', '__lshift__', '__lt__', '__mod__', '__mul__', '__ne__', '__neg__', '__new__', '__or__', '__pos__', '__pow__', '__radd__', '__rand__', '__rdivmod__', '__reduce__', '__reduce_ex__', '__repr__', '__rfloordiv__', '__rlshift__', '__rmod__', '__rmul__', '__ror__', '__round__', '__rpow__', '__rrshift__', '__rshift__', '__rsub__', '__rtruediv__', '__rxor__', '__setattr__', '__sizeof__', '__str__', '__sub__', '__subclasshook__', '__truediv__', '__trunc__', '__xor__', 'as_integer_ratio', 'bit_count', 'bit_length', 'conjugate', 'denominator', 'from_bytes', 'imag', 'numerator', 'real', 'to_bytes']
type(f2)
<class 'int'>
del f1,f2
dir()
['__annotations__', '__builtins__', '__doc__', '__loader__', '__name__', '__package__', '__spec__']
~~~
## Правила наименования объектов
~~~py
gg1=1.6
hh1='Строка'
73sr=3
SyntaxError: invalid decimal literal
and=7
SyntaxError: invalid syntax
~~~
## Список ключевых слов и идентификаторов и их исследование.
~~~py
import keyword
keyword.kwlist
['False', 'None', 'True', 'and', 'as', 'assert', 'async', 'await', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'nonlocal', 'not', 'or', 'pass', 'raise', 'return', 'try', 'while', 'with', 'yield']
import builtins
dir(builtins)
['ArithmeticError', 'AssertionError', 'AttributeError', 'BaseException', 'BaseExceptionGroup', 'BlockingIOError', 'BrokenPipeError', 'BufferError', 'BytesWarning', 'ChildProcessError', 'ConnectionAbortedError', 'ConnectionError', 'ConnectionRefusedError', 'ConnectionResetError', 'DeprecationWarning', 'EOFError', 'Ellipsis', 'EncodingWarning', 'EnvironmentError', 'Exception', 'ExceptionGroup', 'False', 'FileExistsError', 'FileNotFoundError', 'FloatingPointError', 'FutureWarning', 'GeneratorExit', 'IOError', 'ImportError', 'ImportWarning', 'IndentationError', 'IndexError', 'InterruptedError', 'IsADirectoryError', 'KeyError', 'KeyboardInterrupt', 'LookupError', 'MemoryError', 'ModuleNotFoundError', 'NameError', 'None', 'NotADirectoryError', 'NotImplemented', 'NotImplementedError', 'OSError', 'OverflowError', 'PendingDeprecationWarning', 'PermissionError', 'ProcessLookupError', 'RecursionError', 'ReferenceError', 'ResourceWarning', 'RuntimeError', 'RuntimeWarning', 'StopAsyncIteration', 'StopIteration', 'SyntaxError', 'SyntaxWarning', 'SystemError', 'SystemExit', 'TabError', 'TimeoutError', 'True', 'TypeError', 'UnboundLocalError', 'UnicodeDecodeError', 'UnicodeEncodeError', 'UnicodeError', 'UnicodeTranslateError', 'UnicodeWarning', 'UserWarning', 'ValueError', 'Warning', 'WindowsError', 'ZeroDivisionError', '_', '__build_class__', '__debug__', '__doc__', '__import__', '__loader__', '__name__', '__package__', '__spec__', 'abs', 'aiter', 'all', 'anext', 'any', 'ascii', 'bin', 'bool', 'breakpoint', 'bytearray', 'bytes', 'callable', 'chr', 'classmethod', 'compile', 'complex', 'copyright', 'credits', 'delattr', 'dict', 'dir', 'divmod', 'enumerate', 'eval', 'exec', 'exit', 'filter', 'float', 'format', 'frozenset', 'getattr', 'globals', 'hasattr', 'hash', 'help', 'hex', 'id', 'input', 'int', 'isinstance', 'issubclass', 'iter', 'len', 'license', 'list', 'locals', 'map', 'max', 'memoryview', 'min', 'next', 'object', 'oct', 'open', 'ord', 'pow', 'print', 'property', 'quit', 'range', 'repr', 'reversed', 'round', 'set', 'setattr', 'slice', 'sorted', 'staticmethod', 'str', 'sum', 'super', 'tuple', 'type', 'vars', 'zip']
abs(-123)
123
Gg1=45
gg1,Gg1
(1.6, 45)
~~~
## Базовые типы объектов и работа со строками.
~~~py
bb1=True; bb2=False
bb1;bb2
True
False
type(bb1)
<class 'bool'>
type(ff1)
<class 'float'>
ss1='Это - строка символов'
ss1="Это - строка символов"
ss1a="Это - \" строка символов \", \n \t выводимая на двух строках"
print(ss1a)
Это - " строка символов ",
выводимая на двух строках
ss1b= 'Меня зовут: \n Бутко Захар'
print(sslb)
Меня зовут:
Бутко Захар
mnogo="""Нетрудно заметить , что в результате операции
над числами разных типов получается число,
имеющее более сложный тип из тех, которые участвуют в операции."""
print(mnogo)
Нетрудно заметить , что в результате операции
над числами разных типов получается число,
имеющее более сложный тип из тех, которые участвуют в операции.
ss1[0]
'Э'
ss1[8]
'р'
ss1[-2]
'о'
ss1[6:9]
'стр'
ss1[13:]
'символов'
ss1[:13]
'Это - строка '
ss1[5:-8]
' строка '
ss1[3:17:2]
' тоасм'
ss1[17:3:-2]
'омсаот '
ss1[4]='='
Traceback (most recent call last):
File "<pyshell#53>", line 1, in <module>
ss1[4]='='
TypeError: 'str' object does not support item assignment
ss1=ss1[:4]+'='+ss1[5:]
~~~
## Изучение сложных типов объектов
~~~py
spis1=[111,'Spisok',5-9j]
stup=[0,0,1,1,1,1,1,1,1]
spis=[1,2,3,4,
5,6,7,
8,9,10]
spis1[-1]
(5-9j)
stup[-8::2]
[0, 1, 1, 1]
spis1[1]='Список'
print(spis1)
[111, 'Список', (5-9j)]
len(spis1)
3
help(spis1.append)
Help on built-in function append:
append(object, /) method of builtins.list instance
Append object to the end of the list.
spis1.append('New item')
spis1.pop(1)
'Список'
spis2=[spis1,[4,5,6,7]]
spis2[0][1]
(5-9j)
spis2[0][1]=78
print(spis1)
[111, 78, 'New item']
print(spis1)
[111, 78, 'New item']
spis111=['Emil',175,72]
print(spis111)
['Emil', 175, 72]
kort1=(222,'Kortezh',77+8j)
kort1= kort1+(1,2)
kort1= kort1+(ss1b,)
kort2=kort1[:2]+kort1[3:]
kort1.index(2)
4
kort1.count(222)
1
kort1[2]=90
Traceback (most recent call last):
File "<pyshell#79>", line 1, in <module>
kort1[2]=90
TypeError: 'tuple' object does not support item assignment
kort111=('Emil',175,72)
~~~
## Изучение объект-словаря
~~~py
dic1={'Saratov':145, 'Orel':56, 'Vologda':45}
dic1['Orel']
56
dic1['Pskov']=78
dic1
{'Saratov': 145, 'Orel': 56, 'Vologda': 45, 'Pskov': 78}
{'Saratov': 120, 'Vologda': 45, 'Pskov': 78, 'Orel': 56}
{'Saratov': 120, 'Vologda': 45, 'Pskov': 78, 'Orel': 56}
sorted(dic1.keys())
['Orel', 'Pskov', 'Saratov', 'Vologda']
sorted(dic1.values())
[45, 56, 78, 145]
dic2={1:'mean',2:'standart deviation',3:'correlation'}sorted(dic1.keys())
SyntaxError: invalid syntax
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]))
~~~
## Изучение объект-множества
~~~py
mnoz1={'двигатель','датчик','линия связи','датчик','микропроцессор','двигатель'}
len(mnoz1)
4
'датчик' in mnoz1
True
mnoz1.add('реле')
mnoz1.remove('линия связи')
mnoz111={'Месси','Ронадо','Пеле'}
'Месси' in mnoz111
True
~~~
## ОК
~~~py
familia='Butko'
perem=familia[0]
perem
'B'
sp_kw=keyword.kwlist
sp_kw
['False', 'None', 'True', 'and', 'as', 'assert', 'async', 'await', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'nonlocal', 'not', 'or', 'pass', 'raise', 'return', 'try', 'while', 'with', 'yield']
sp_kw.remove('nonlokal')
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=('Babidjon','Bukaky','Bugatti','Baranov')
kort_nam=('Babidjon','Bukaky','Bugatti','Baranov')
type(kort_nam)
<class 'tuple'>
add=('GG','WW')
kort_nam=kort_nam+add
kort_nam
('Babidjon', 'Bukaky', 'Bugatti', 'Baranov', 'GG', 'WW')
kort_nam.count('GG')
1
dict_bas={'переменные':[familia,perem],'список': [sp_kw],'кортеж': [kort_nam]}
~~~

@ -0,0 +1,791 @@
# Протокол по Теме 3
Бутко Захар Владимирович, А-03-23
## 1. Начало работы
Запуск IDLE, установление рабочего каталога
## 2. Преобразование простых базовых типов объектов
### 2.1 Преобразование в логический тип с помощью функции bool
```py
>>> logiz1=bool(56)
>>> type(logiz1)
<class 'bool'>
>>> logiz1
True
>>> logiz2=bool(0)
>>> logiz2
False
>>> type(logiz2)
<class 'bool'>
>>> logiz3=bool("Beta")
>>> logiz3
True
>>> type(logiz3)
<class 'bool'>
>>> logiz4=bool("")
>>> logiz4
False
>>> type(logiz4)
<class 'bool'>
```
### 2.2 Преобразование в целое десятичное число / в вещественное число
```py
>>> tt1=int(198.6)
>>> tt1
198
>>> tt2=int("-76")
>>> tt2
-76
>>> tt3=int("B",16)
>>> tt3
11
>>> tt4=int("71",8)
>>> tt4
57
>>> tt5=int("98.76")
Traceback (most recent call last):
File "<pyshell#21>", line 1, in <module>
tt5=int("98.76")
ValueError: invalid literal for int() with base 10: '98.76'
```
Объяснение:
int() ожидает увидеть целочисленное значение в строке, решение проблемы - int(float("98.76"))
```py
>>> flt1=float(789)
>>> flt2=float(-6.78e2)
>>> flt3=float("Infinity")
>>> flt4=float("-inf")
>>> flt1
789.0
>>> flt2
-678.0
>>> flt3
inf
>>> flt4
-inf
```
### 2.3 Преобразование десятичных чисел в другие системы счисления
```py
>>> hh=123
>>> dv1=bin(hh) # двоичная сс
>>> vos1=oct(hh) # 8-ричная сс
>>> shs1=hex(hh) # 16-ричная сс
>>> dv1
'0b1111011'
>>> vos1
'0o173'
>>> shs1
'0x7b'
>>> int(dv1, 2)
123
>>> int(vos1, 8)
123
>>> int(shs1, 16)
123
```
## 3. Преобразование более сложных базов типов объектов
### 3.1 Преобразование в строку
```py
>>> strk1=str(23.6)
>>> strk1
'23.6'
>>> strk2=str(logiz3)
>>> strk2
'True'
>>> strk3=str(["A","B","C"])
>>> strk3
"['A', 'B', 'C']"
>>> strk4=str(("A","B","C"))
>>> strk4
"('A', 'B', 'C')"
>>> strk5=str({"A":1,"B":2,"C":9})
>>> strk5
"{'A': 1, 'B': 2, 'C': 9}"
```
### 3.2 Преобразование эл-ов объекта в список с помощью list()
```py
>>> spis1=list("Строка символов")
>>> spis1
['С', 'т', 'р', 'о', 'к', 'а', ' ', 'с', 'и', 'м', 'в', 'о', 'л', 'о', 'в']
>>> spis2=list((124,236,-15,908))
>>> spis2
[124, 236, -15, 908]
>>> spis3=list({"A":1,"B":2,"C":9})
>>> spis3
['A', 'B', 'C']
```
Решение задания:
```py
>>> spis3=list({"A":1,"B":2,"C":9}.values())
>>> spis3
[1, 2, 9]
```
### 3.3 Преобразование элементов объектов в кортеж
```py
>>> kort7=tuple('Строка символов')
>>> kort7
('С', 'т', 'р', 'о', 'к', 'а', ' ', 'с', 'и', 'м', 'в', 'о', 'л', 'о', 'в')
>>> kort8=tuple(spis2)
>>> kort8
(124, 236, -15, 908)
>>> kort9=tuple({"A":1,"B":2,"C":9})
>>> kort9
('A', 'B', 'C')
```
### 3.4 Удаление объектов
```py
>>> del strk5, kort8
>>> strk5
Traceback (most recent call last):
File "<pyshell#52>", line 1, in <module>
strk5
NameError: name 'strk5' is not defined
>>> kort8
Traceback (most recent call last):
File "<pyshell#53>", line 1, in <module>
kort8
NameError: name 'kort8' is not defined
```
Решение задания:
```py
>>> fio = 'Butko Z.V.'
>>> listfio=list(fio)
>>> listfio
['B', 'u', 't', 'k', 'o', ' ', 'Z', '.', 'V', '.']
>>> cortfio = tuple(listfio)
>>> cortfio
('B', 'u', 't', 'k', 'o', ' ', 'Z', '.', 'V', '.')
>>> strfio = str(cortfio)
>>> strfio
"('B', 'u', 't', 'k', 'o', ' ', 'Z', '.', 'V', '.')"
```
## 4. Арифметические операции
### 4.1 Сложение и вычитание
```py
>>> 12+7+90
109
>>> 5.689e-1 - 0.456
0.11289999999999994
>>> 23.6+54
77.6
>>> 14-56.7+89
46.3
```
### 4.2 Умножение
```py
>>> -6.7*12
-80.4
```
### 4.3 Деление
Результатом деления всегда будет вещественное число
```py
>>> -234.5/6
-39.083333333333336
>>> a=178/45
>>> a
3.9555555555555557
>>> type(a)
<class 'float'>
```
### 4.4 Деление с округлением вниз (целочисленное деление)
```py
>>> b=178//45
>>> b
3
>>> c=-24.6//12.1
>>> c
-3.0
>>> type(b)
<class 'int'>
>>> type(c)
<class 'float'>
```
Если в целочисленном делении используется хотя бы один объект вещественного типа - результат будет вещественным, если оба целых объекта - результат целый
```py
>>> asas= 123.4 // 3
>>> asas
41.0
>>> type(asas)
<class 'float'>
```
### 4.5 Получение остатка от деления
```py
>>> 148%33
16
>>> 12.6%3.8
1.2000000000000002
>>> 1245.4 % 4
1.400000000000091
```
Если в остатке от деления используется хотя бы один объект вещественного типа - результат будет вещественным, если оба целых объекта - результат целый
### 4.6 Возведение в степень
```py
>>> 14**3
2744
>>> e=2.7**3.6
>>> e
35.719843790663525
>>> 3**2.3
12.513502532843182
```
К комплексным числам можно применять следующие операции:
сложение
вычитание
умножение
деление
возведение в степень
и нельзя следующие:
целочисленное деление
остаток от деления
## 5. Операции с двоичными представлениями целых чисел
### 5.1 Двоичная инверсия (~)
```py
>>> dv1=9
>>> dv2=~dv1
>>> dv2
-10
```
~x = -x - 1
### 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
>>> g
56
>>> g1=h>>1
>>> g1
7
>>> g2=h>>2
>>> g2
3
```
Решение задания
```py
>>> a = 197
>>> b = 154
>>> bin(a)[2:]
'11000101'
>>> bin(b)[2:]
'10011010'
>>> a & b
128
>>> a | b
223
>>> a ^ b
95
```
## 6. Операции при работе с последовательностями
### 6.1 Объединение последовательностей (конкатенация)
```py
>>> 'Система '+'регулирования'
'Система регулирования'
>>> ['abc','de','fg']+['hi','jkl']
['abc', 'de', 'fg', 'hi', 'jkl']
>>> ('abc','de','fg')+('hi','jkl')
('abc', 'de', 'fg', 'hi', 'jkl')
```
### 6.2 Повторение
```py
>>> 'ля-'*5
'ля-ля-ля-ля-ля-'
>>> ['ку','-']*3
['ку', '-', 'ку', '-', 'ку', '-']
>>> ('кис','-')*4
('кис', '-', 'кис', '-', 'кис', '-', 'кис', '-')
>>> signal1=[0]*3+[1]*99
>>> signal1
[0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]
>>> signal2=(0,)*3+(1,)*5+(0,)*7
>>> signal2
(0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0)
```
### 6.3 Проверка наличия заданного элемента в последовательности
```py
>>> stroka='Система автоматического управления'
>>> 'автомат' in stroka
True
>>> 'ку' in ['ку','-']*3
True
>>> 'ля-' in ('abc', 'de', 'fg', 'hi', 'jkl')
False
```
### 6.4 Подстановка значений в строку с помощью оператора «%»
```py
>>> stroka='Температура = %g %s %g'
>>> stroka % (16,' меньше ',25)
'Температура = 16 меньше 25'
```
%g - placeholder для чисел
%s - placeholder для строк
```py
>>> stroka='Температура = %(zn1)g %(sravn)s %(zn2)g'
>>> stroka % {'zn1':16,'sravn':' меньше ','zn2':25}
'Температура = 16 меньше 25'
```
## 7. Оператор присваивания
### 7.1 Обычное присваивание значения переменной
```py
>>> zz=-12
>>> zz
-12
```
### 7.2 Увеличение/уменьшение значения переменной на заданную величину
```py
>>> zz+=5
>>> zz-=3
>>> stroka='Система'
>>> stroka+=' регулирования'
>>> zz
-10
>>> stroka
'Система регулирования'
```
### 7.3 Умножение текущего значения переменной на заданную величину (*=) или деление (/=)
```py
>>> qw = 8
>>> qw *= 3
>>> qw
24
>>> qw /= 4
>>> qw
6.0
```
### 7.4 Операции деления с округлением вниз (//=), получения остатка от деления (%=) и возведения в степень(**=)
```py
>>> qw
6.0
>>> qw //=2
>>> qw
3.0
>>> qw = 8
>>> qw%=2
>>> qw
0
>>> qw=4
>>> qw **= 3
>>> qw
64
```
### 7.5. Множественное присваивание
```py
>>> w=v=10
>>> w,v
(10, 10)
>>> n1,n2,n3=(11,-3,'all')
>>> n1,n2,n3
(11, -3, 'all')
```
Решение задания:
Со списком работает поэлементно, со строками посимвольно, с множествами работает, но не в той очередности присваивания, со словарем работает, но нужно знать что присваивать - ключи либо значения
## 8. Логические операции
### 8.1. Операции сравнения
```py
>>> w == v
True
>>> w != v
False
>>> w < v
False
>>> w > v
False
>>> 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
```
Решение задания:
```py
>>> (a == b) and ('Orel' in dic1) or ('Pskov' in dic1)
False
>>> (a > b) or 'pen' in mnoz1
True
>>> 'cap' in mnoz1 or a == b
False
```
### 8.4. Проверка ссылок переменных на один и тот же объект
```py
>>> w=v=10
>>> w is v
True
>>> w1=['A','B']
>>> v1=['A','B']
>>> w1 is v1
False
```
В начале присваивания двум переменным w и v значения 10 мы храним обе переменные в одной ячейке памяти, затем мы по отдельности присвоили двум этим переменным списки, они хоть и одинаковые, но всё равно переменные по отдельности претерпели изменения -> хранятся в разных ячейках памяти
## 9. Операции с объектами, выполняемые с помощью методов
```py
>>> stroka='Микропроцессорная система управления'
>>> dir(stroka)
['__add__', '__class__', '__contains__', '__delattr__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__getnewargs__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__iter__', '__le__', '__len__', '__lt__', '__mod__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__rmod__', '__rmul__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', 'capitalize', 'casefold', 'center', 'count', 'encode', 'endswith', 'expandtabs', 'find', 'format', 'format_map', 'index', 'isalnum', 'isalpha', 'isascii', 'isdecimal', 'isdigit', 'isidentifier', 'islower', 'isnumeric', 'isprintable', 'isspace', 'istitle', 'isupper', 'join', 'ljust', 'lower', 'lstrip', 'maketrans', 'partition', 'removeprefix', 'removesuffix', 'replace', 'rfind', 'rindex', 'rjust', 'rpartition', 'rsplit', 'rstrip', 'split', 'splitlines', 'startswith', 'strip', 'swapcase', 'title', 'translate', 'upper', 'zfill']
```
### 9.1 Методы для работы со строками
```py
>>> stroka.find('пр')
5
>>> stroka.count("с")
4
>>> stroka.replace(' у',' автоматического у')
'Микропроцессорная система автоматического управления'
>>> spis22=stroka.split(' ')
>>> spis22
['Микропроцессорная', 'система', 'управления']
>>> stroka.upper()
'МИКРОПРОЦЕССОРНАЯ СИСТЕМА УПРАВЛЕНИЯ'
>>> stroka3=" ".join(spis22)
>>> stroka3.partition("с")
('Микропроце', 'с', 'сорная система управления')
>>> stroka3.rpartition("с")
('Микропроцессорная си', 'с', 'тема управления')
```
```py
>>> 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, 'blablabla', 7.0, (1, 2, 3), True]
>>> dir(spsk)
['__add__', '__class__', '__class_getitem__', '__contains__', '__delattr__', '__delitem__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__gt__', '__hash__', '__iadd__', '__imul__', '__init__', '__init_subclass__', '__iter__', '__le__', '__len__', '__lt__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__reversed__', '__rmul__', '__setattr__', '__setitem__', '__sizeof__', '__str__', '__subclasshook__', 'append', 'clear', 'copy', 'count', 'extend', 'index', 'insert', 'pop', 'remove', 'reverse', 'sort']
>>> spsk.pop(2)
7.0
>>> spsk.append('c')
>>> spsk
[1, 'blablabla', (1, 2, 3), True, 'c']
>>> spsk.insert(2,'a')
>>> spsk
[1, 'blablabla', 'a', (1, 2, 3), True, 'c']
>>> spsk.count('a')
1
```
1.методом pop() удалили 2-ой эл-т списка (2-ой начиная с нуля)
2.добавили 'c' в конец списка (метод append() всегда добавляет элемент в конец списка)
3.методом insert() на позицию 2 (также начиная с нуля) вставили строку 'a'
4.методом count() посчитали количество вхождений элемента 'a' в список
### 9.3. Самостоятельно создайте кортеж и изучите применение его методов.
```py
>>> mytuple = ('abc', 23, (1, 2, 3), True)
>>> mytuple.count(23)
1
>>> mytuple.index(23)
1
```
### 9.4.Cамостоятельно изучите методы словарей и множеств.
Словари
```py
>>> student = {
"name": "Zakhar",
"age": 19,
"city": "Moscow",
"courses": ["Math", "Physics"],
"gpa": 2.74
}
>>> student
{'name': 'Zakhar', 'age': 19, 'city': 'Moscow', 'courses': ['Math', 'Physics'], 'gpa': 2.74}
>>> student.get("name")
'Zakhar'
>>> student.keys()
dict_keys(['name', 'age', 'city', 'courses', 'gpa'])
>>> student.values()
dict_values(['Zakhar', 19, 'Moscow', ['Math', 'Physics'], 2.74])
>>> student.update({"gpa": 4.5, "lazy": True})
>>> student
{'name': 'Zakhar', 'age': 19, 'city': 'Moscow', 'courses': ['Math', 'Physics'], 'gpa': 4.5, 'lazy': True}
>>> student.pop("lazy")
True
>>> student
{'name': 'Zakhar', 'age': 19, 'city': 'Moscow', 'courses': ['Math', 'Physics'], 'gpa': 4.5}
>>> student.clear()
>>> student
{}
```
Множества
```py
>>> A = {1, 2, 3, 4, 5}
>>> A.add(6)
>>> A
{1, 2, 3, 4, 5, 6}
>>> A.remove(4)
>>> A
{1, 2, 3, 5, 6}
>>> A.pop()
1
>>> A
{2, 3, 5, 6}
>>> A.clear()
>>> A
set()
```

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

@ -0,0 +1,69 @@
# Тест по модулю 1
Бутко Захар, А-03-23
## Задание
Вариант 7
M1_7
1) Можно ли работать со средой без использования интерактивной оболочки IDLE?
2) Создайте объект-словарь с 7 элементами: ключи - названия (аббревиатура) вузов, значения - число студентов (задать произвольно). Напишите инструкцию, доказывающую, что создан объект именно требуемого типа. Напишите инструкцию отображения списка атрибутов созданного объекта.
3) Напишите инструкцию, позволяющую вычислить общее число студентов в двух указываемых вузах из словаря.
4) Преобразуйте значения из словаря в список и, затем, список - в строку. Отобразите полученные объекты. Получите новый список, разделением строки на части по разделителю: ",".
5) Используя операцию подстановки, отобразить рассчитанное число студентов в 2-х вузах по шаблону: "Число студентов в <название вуза 1> и <название вуза 2> =:".
## Решение
### Задача 1
Да
### Задача 2
```py
# Создание словаря с вузами и числом студентов
universities = {
'МГУ': 35000,
'СПбГУ': 28000,
'МФТИ': 7500,
'ВШЭ': 42000,
'МГТУ': 25000,
'МИФИ': 8500,
'РУДН': 32000
}
print(type(universities))
<class 'dict'>
print(dir(universities))
['__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
students = universities['МГУ'] + universities['СПбГУ']
print(students)
63000
```
### Задача 4
```py
students_list = list(universities.values())
print(students_list)
[35000, 28000, 7500, 42000, 25000, 8500, 32000]
students_str = str(students_list)
print(students_str)
'[35000, 28000, 7500, 42000, 25000, 8500, 32000]'
new_list = students_str.split(",")
print(new_list)
['[35000', ' 28000', ' 7500', ' 42000', ' 25000', ' 8500', ' 32000]']
```
### Задача 5
```py
print("Число студентов в %s и %s = %d" % ('МГУ', 'СПбГУ', students))
Число студентов в МГУ и СПбГУ = 63000
```

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

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

После

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

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

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

После

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

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

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

После

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

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

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

После

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

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

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

После

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

@ -0,0 +1,347 @@
# Протокол по Теме 4
Бутко Захар Владимирович, А-03-23
## 1. Начало работы
Запуск IDLE, установление рабочего каталога
## 2. Стандартные функции
### 2.1 Функция round – округление числа с заданной точностью
```py
>>> round(123.456,1)
123.5
>>> round(123.456,0)
123.0
>>> round(123.456)
123
```
### 2.2. Функция range
```py
>>> gg=range(76,123,9)
>>> gg
range(76, 123, 9)
>>> list(gg)
[76, 85, 94, 103, 112, 121]
>>> range(23)
range(0, 23)
>>> list(range(23))
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22]
```
### 2.3. Функция zip
```py
>>> qq = ['Markov','Butko','Ogarkov','Krishtul']
>>> ff=zip(gg,qq)
>>> ff
<zip object at 0x0000026369CB4400>
>>> tuple(ff)
((76, 'Markov'), (85, 'Butko'), (94, 'Ogarkov'), (103, 'Krishtul'))
>>> ff[0]
Traceback (most recent call last):
File "<pyshell#13>", line 1, in <module>
ff[0]
TypeError: 'zip' object is not subscriptable
```
Нельзя обращаться с указанием индекса, т.к. объект является итерируемым класса zip
### 2.4 Функция eval
```py
>>> fff=float(input('коэффициент усиления=')); dan=eval('5*fff-156')
коэффициент усиления=5
>>> dan
-131.0
```
### 2.5 Функция exec
```py
>>> exec(input('введите инструкции:'))
введите инструкции:perem=-123.456;gg=round(abs(perem)+98,3)
>>> gg
221.456
```
### 2.6. Функции abs, pow, max, min, sum, divmod, len, map
```py
>>> abs(-14)
14
>>> pow(2, 3)
8
>>> max(1, 2, 3)
3
>>> min(1, 2, 3)
1
>>> sum([1, 2, 3])
6
>>> divmod(5, 3)
(1, 2)
>>> len(range(0, 15+1))
16
>>> map_test = map(lambda x: round(x, 1), [12.1245, 14.125234, 534.222])
>>> list(map_test)
[12.1, 14.1, 534.2]
```
## 3. Функции из стандартного модуля math
```py
>>> import math
>>> dir(math)
['__doc__', '__loader__', '__name__', '__package__', '__spec__', 'acos', 'acosh', 'asin', 'asinh', 'atan', 'atan2', 'atanh', 'ceil', 'comb', 'copysign', 'cos', 'cosh', 'degrees', 'dist', 'e', 'erf', 'erfc', 'exp', 'expm1', 'fabs', 'factorial', 'floor', 'fmod', 'frexp', 'fsum', 'gamma', 'gcd', 'hypot', 'inf', 'isclose', 'isfinite', 'isinf', 'isnan', 'isqrt', 'lcm', 'ldexp', 'lgamma', 'log', 'log10', 'log1p', 'log2', 'modf', 'nan', 'nextafter', 'perm', 'pi', 'pow', 'prod', 'radians', 'remainder', 'sin', 'sinh', 'sqrt', 'tan', 'tanh', 'tau', 'trunc', 'ulp']
>>> help(math.factorial)
Help on built-in function factorial in module math:
factorial(x, /)
Find x!.
Raise a ValueError if x is negative or non-integral.
>>> math.factorial(5)
120
>>> math.sin(90)
0.8939966636005579
>>> math.acos(0)
1.5707963267948966
>>> math.degrees(math.pi)
180.0
>>> math.radians(180)
3.141592653589793
>>> math.exp(1)
2.718281828459045
>>> math.log(10)
2.302585092994046
>>> math.log10(100)
2.0
>>> math.sqrt(16)
4.0
>>> math.ceil(3.14) # округление вверх
4
>>> math.floor(3.14) # округление вниз
3
>>> math.pi
3.141592653589793
>>> math.sin((2*math.pi/7) + math.exp(0.23))
0.8334902641414562
```
## 4. Функции из модуля cmath, c комплексными числами
```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', '_Sequence', '_Set', '__all__', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', '_accumulate', '_acos', '_bisect', '_ceil', '_cos', '_e', '_exp', '_floor', '_inst', '_log', '_os', '_pi', '_random', '_repeat', '_sha512', '_sin', '_sqrt', '_test', '_test_generator', '_urandom', '_warn', 'betavariate', 'choice', 'choices', 'expovariate', 'gammavariate', 'gauss', 'getrandbits', 'getstate', 'lognormvariate', 'normalvariate', 'paretovariate', 'randbytes', 'randint', 'random', 'randrange', 'sample', 'seed', 'setstate', 'shuffle', 'triangular', 'uniform', 'vonmisesvariate', 'weibullvariate']
>>> help(random.seed)
Help on method seed in module random:
seed(a=None, version=2) method of random.Random instance
Initialize internal state from a seed.
The only supported seed types are None, int, float,
str, bytes, and bytearray.
None or no argument seeds from current time or from an operating
system specific randomness source if available.
If *a* is an int, all bits are used.
For version 2 (the default), all of the bits are used if *a* is a str,
bytes, or bytearray. For version 1 (provided for reproducing random
sequences from older versions of Python), the algorithm for str and
bytes generates a narrower range of seeds.
```
```py
>>> random.random() # вещественное число от 0.0 до 1.0
0.12874671061082976
>>> random.uniform(5, 15) # вещественное число от 5.0 до 15.0
13.134575401523493
>>> random.randint(1, 100) # целое число от 1 до 100
32
>>> random.gauss(0, 1) # mu - среднее значение, sigma - стандартное отклонение
-0.07800637063087972
>>> random.choice([1, 2, 3, 4]) # случайный выбор элемента из списка, кортежа, строки и т.д.
3
>>> My_Numbers = [1, 2, 3, 4]
>>> random.shuffle(My_Numbers)
>>> My_Numbers
[1, 2, 4, 3]
>>> random.sample(My_Numbers, 2) # случайный выбор двух элементов из My_Numbers
[4, 1]
>>> random.betavariate(2, 5)
0.16541871582286427
>>> random.gammavariate(2, 1)
0.6551814424330216
```
## 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()
>>> c1
1760283309.499735
>>> c2=time.time()-c1
>>> c2
10.906989812850952
>>> dat=time.gmtime()
>>> dat
time.struct_time(tm_year=2025, tm_mon=10, tm_mday=12, tm_hour=15, tm_min=35, tm_sec=35, tm_wday=6, tm_yday=285, tm_isdst=0)
>>> dat.tm_mon
10
>>> time.asctime((2024, 12, 10, 18, 7, 14, 1, 345, 0)) #год, месяц, день, час, минута, секунда, день недели, день года, летнее время
'Tue Dec 10 18:07:14 2024'
>>> time.ctime(time.time())
'Sun Oct 12 18:36:59 2025'
>>> time.mktime((2025, 12, 25, 15, 30, 0, 0, 0, 0))
1766665800.0
```
## 7. Графические функции
```py
>>> import pylab
>>> x=list(range(-3,55,4))
>>> x
[-3, 1, 5, 9, 13, 17, 21, 25, 29, 33, 37, 41, 45, 49, 53]
>>> t=list(range(15))
>>> t
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
>>> pylab.plot(t,x)
[<matplotlib.lines.Line2D object at 0x000002630D20D340>]
>>> pylab.title('Первый график')
Text(0.5, 1.0, 'Первый график')
>>> pylab.xlabel('время')
Text(0.5, 0, 'время')
>>> pylab.ylabel('сигнал')
Text(0, 0.5, 'сигнал')
>>> pylab.show()
```
**Результат:**
<image src="Figure_1.png">
```py
>>> X1=[12,6,8,10,7]
>>> X2=[5,7,9,11,13]
>>> pylab.plot(X1)
[<matplotlib.lines.Line2D object at 0x0000026312246130>]
>>> pylab.plot(X2)
[<matplotlib.lines.Line2D object at 0x00000263122463D0>]
>>> pylab.show()
```
**Результат:**
<image src="Figure_2.png">
```py
>>> region=['Центр','Урал','Сибирь','Юг']
>>> naselen=[65,12,23,17]
>>> pylab.pie(naselen,labels=region)
([<matplotlib.patches.Wedge object at 0x000002631062D130>, <matplotlib.patches.Wedge object at 0x000002631062D1F0>, <matplotlib.patches.Wedge object at 0x000002631063B970>, <matplotlib.patches.Wedge object at 0x000002631063BDF0>], [Text(-0.191013134139045, 1.0832885038559115, 'Центр'), Text(-0.861328292412156, -0.6841882582231001, 'Урал'), Text(0.04429273995539947, -1.0991078896938387, 'Сибирь'), Text(0.9873750693480946, -0.48486129194837324, 'Юг')])
>>> pylab.show()
```
**Результат:**
<image src="diag.png">
```py
>>> pylab.bar(region, naselen)
<BarContainer object of 4 artists>
>>> pylab.title('Население по регионам')
Text(0.5, 1.0, 'Население по регионам')
>>> pylab.ylabel('Население (млн)')
Text(0, 0.5, 'Население (млн)')
>>> pylab.show()
```
**Результат:**
<image src="hist.png">
```py
>>> pylab.hist(naselen)
(array([2., 0., 1., 0., 0., 0., 0., 0., 0., 1.]), array([12. , 17.3, 22.6, 27.9, 33.2, 38.5, 43.8, 49.1, 54.4, 59.7, 65. ]), <BarContainer object of 10 artists>)
>>> pylab.title('Гистограмма распределения населения')
Text(0.5, 1.0, 'Гистограмма распределения населения')
>>> pylab.xlabel('Население (млн)')
Text(0.5, 0, 'Население (млн)')
>>> pylab.ylabel('Частота')
Text(0, 0.5, 'Частота')
>>> pylab.show()
```
**Результат:**
<image src="hist2.png">
## 8. Статистический модуль statistics
```py
>>> import statistics
>>> numbers = [1,2,3,4,5,6,7,8,9]
>>> statistics.mean(numbers)
5
>>> statistics.median(numbers)
5
>>> statistics.mode(numbers)
1
```

@ -0,0 +1,64 @@
# Общее контрольное задание по теме 4
Бутко Захар Владимирович, А-03-23
## Задание
1.Напишите и исполните единое выражение, реализующее последовательное выполнение следующих операций: вычисление фазы комплексного числа 0.2+0.8j, округление результата до двух знаков после запятой, умножение полученного значения на 20, получение кортежа из двух значений: округленное вниз значение от деления результата на 3 и остатка от этого деления.
2.Создайте объект класса struct_time с временными параметрами для текущего московского времени. Создайте строку с текущим часом и минутами.
3.Создайте список с элементами – названиями дней недели. Сделайте случайную выборку из этого списка с тремя днями недели.
4.Напишите инструкцию случайного выбора числа из последовательности целых чисел от 14 до 32 с шагом 3.
5.Сгенерируйте нормально распределенное число N с математическим ожиданием 15 и стандартным отклонением 4 и округлите его до целого значения. Создайте список с N элементами – случайно выбранными буквами латинского алфавита.
6.Напишите инструкцию для определения временного интервала в минутах, прошедшего с момента предыдущего (из п.2) определения временных параметров.
## Решение
```py
import cmath
import math
import time
import random
import string
# 1
>>> first = round(cmath.phase(0.2+0.8j), 2) * 20
>>> divmod(math.floor(first), 3)
(8, 2)
# 2
>>> moscow_time = time.localtime()
>>> string_with_time = f"{moscow_time.tm_hour}:{moscow_time.tm_min}"
>>> print(string_with_time, type(moscow_time))
19:1 <class 'time.struct_time'>
# 3
>>> days_of_week = ['Понедельник', 'Вторник', 'Среда', 'Четверг', 'Пятница', 'Суббота', 'Воскресенье']
>>> random.sample(days_of_week, 3)
['Четверг', 'Среда', 'Понедельник']
# 4
>>> numbers = list(range(14, 32+1, 3))
>>> random.choice(numbers)
20
#5
>>> N = round(random.normalvariate(15, 4))
>>> N
14
>>> gen_list = random.choices(string.ascii_uppercase, k=N)
>>> gen_list
['A', 'N', 'V', 'L', 'N', 'U', 'O', 'V', 'N', 'R', 'L', 'Z', 'Q', 'R']
#6
>>> current_time = time.time()
>>> previous_time = time.mktime(moscow_time)
>>> time_interval_minutes = (current_time - previous_time) / 60
>>> time_interval_minutes
1.379131011168162
```

@ -0,0 +1,30 @@
# Тест по модулю 4
Бутко Захар, А-03-23
## Задание
Вариант 19
Напишите инструкцию запоминания в переменной текущего регионального времени. Напишите инструкцию превращения этого времени в символьную строку. Отобразите результат на экране. Создайте множество с 5 элементами – случайными целыми числами из диапазона значений от -23 до 57. Подсчитайте корень квадратный из суммы элементов этого множества и отобразите на экране в виде: «результат = ХХХ» с округлением числа до одного знака после точки.
## Решение
```py
import datetime
current_time = datetime.datetime.now()
time_string = current_time.strftime("%Y-%m-%d %H:%M:%S")
print("Текущее время:", time_string)
Текущее время: 2025-10-24 12:26:05
import math
numbers_set = set(range(-23, 58, 16))
print("Множество:", numbers_set)
Множество: {-23, 41, 9, -7, 25, 57}
print(sum(numbers_set))
102
result = math.sqrt(sum_elements)
result
10.099504938362077
print(math.ceil(result))
11
```

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

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

После

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

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

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

После

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

@ -0,0 +1,396 @@
# Протокол по Теме 5
Бутко Захар Владимирович, А-03-23
## 1. Начало работы
Запуск IDLE, установление рабочего каталога
## 2. Управляющая инструкция if
```py
>>> porog = 12
>>> rashod1 = 10
>>> rashod2 = 7
>>> 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
>>> porog
12
```
### Операция с множественным ветвлением линий потока
```py
>>> if porog==3:
dohod=1
elif porog==4:
dohod=2
elif porog==5:
dohod=3
else:
dohod=0
>>> dohod
0
```
### Условные инструкции в одну строку
```py
>>> dohod=2 if porog>=4 else 0
>>> dohod
2
>>> if porog>=5 : rashod1=6; rashod2=0
>>> rashod1
6
>>> rashod2
0
```
## 3.Управляющая инструкция for
### 3.1 Простой цикл.
```py
>>> temperatura=5
>>> for i in range(3,18,3):
temperatura+=i
>>> temperatura
50
```
### 3.2 Более сложный цикл
```py
>>> 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]
```
### 3.3
```py
>>> import random as rn
>>> sps5=[]
>>> for i in range(10):
sps5.append(rn.randint(1,100))
ss=sum(sps5)
if ss>500: break
else:
print(ss)
>>> ss
531
>>> sps5
[16, 30, 74, 91, 77, 97, 40, 38, 8, 60]
>>> for i in range(10):
sps5.append(rn.randint(1,100))
ss=sum(sps5)
if ss>500: break
else:
print(ss)
>>> ss
578
>>> for i in range(10):
sps5.append(rn.randint(1,100))
ss=sum(sps5)
if ss>500: break
else:
print(ss)
>>> ss
607
>>> sps5
[16, 30, 74, 91, 77, 97, 40, 38, 8, 60, 47, 29]
```
### 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)]
>>> sps2
[0.9092974268256817, 0.49103209793281005, -0.11479080280322804, -0.6767675184643197, -0.9802420445539634, -0.9092974268256817, -0.49103209793281016, 0.11479080280322791, 0.6767675184643196, 0.9802420445539634, 0.9092974268256818, 0.4910320979328103, -0.1147908028032278, -0.6767675184643196, -0.9802420445539632, -0.9092974268256818, -0.4910320979328104, 0.11479080280322768, 0.6767675184643195, 0.9802420445539632, 0.9092974268256819, 0.4910320979328105, -0.11479080280322579, -0.6767675184643194, -0.9802420445539632, -0.9092974268256819, -0.4910320979328106, 0.11479080280322743, 0.6767675184643193, 0.9802420445539632, 0.909297426825682, 0.49103209793281066, -0.1147908028032273, -0.6767675184643192, -0.9802420445539632, -0.909297426825682, -0.4910320979328108, 0.11479080280322719, 0.6767675184643192, 0.9802420445539631, 0.9092974268256822, 0.491032097932814, -0.11479080280322707, -0.676767518464319, -0.9802420445539625, -0.9092974268256822, -0.491032097932811, 0.11479080280323047, 0.6767675184643189, 0.9802420445539625, 0.9092974268256822, 0.4910320979328142, -0.11479080280322682, -0.6767675184643215, -0.9802420445539631, -0.9092974268256808, -0.4910320979328112, 0.11479080280322317, 0.6767675184643187, 0.9802420445539624, 0.9092974268256823, 0.4910320979328082, -0.11479080280322658, -0.6767675184643213, -0.980242044553963, -0.9092974268256838, -0.49103209793281144, 0.11479080280322293, 0.6767675184643186, 0.9802420445539637, 0.9092974268256824, 0.49103209793280844, -0.11479080280322633, -0.6767675184643158, -0.980242044553963, -0.9092974268256839, -0.49103209793281166, 0.11479080280322974, 0.6767675184643184, 0.9802420445539637, 0.9092974268256825, 0.4910320979328149, -0.11479080280321903, -0.6767675184643209, -0.9802420445539629, -0.909297426825681, -0.4910320979328119, 0.11479080280322244, 0.6767675184643129, 0.9802420445539636, 0.9092974268256826, 0.49103209793281505, -0.11479080280322584, -0.6767675184643155, -0.9802420445539644, -0.9092974268256812, -0.49103209793281205, 0.1147908028032222, 0.6767675184643127, 0.980242044553965]
```
**Результат:**
<image src="Figure_2.png">
## 4.Управляющая инструкция while
### 4.1. Цикл со счетчиком.
```py
>>> rashod=300
>>> while rashod:
print("Расход=",rashod)
rashod-=50
Расход= 300
Расход= 250
Расход= 200
Расход= 150
Расход= 100
Расход= 50
```
### 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
```
сигнал на выходе инерционного звена из списка sps2
```py
>>> pylab.figure(figsize=(10, 5))
<Figure size 1000x500 with 0 Axes>
>>> pylab.plot(sps2, 'b-', linewidth=2, label='Выходной сигнал')
[<matplotlib.lines.Line2D object at 0x000002630D0A6760>]
>>> pylab.title('Сигнал на выходе инерционного звена')
Text(0.5, 1.0, 'Сигнал на выходе инерционного звена')
>>> pylab.xlabel('Время (дискретные моменты i)')
Text(0.5, 0, 'Время (дискретные моменты i)')
>>> pylab.ylabel('Значение сигнала')
Text(0, 0.5, 'Значение сигнала')
>>> pylab.grid(True)
>>> pylab.legend()
<matplotlib.legend.Legend object at 0x000002630D08B4C0>
>>> pylab.show()
```
**Результат:**
<image src="Figure_1.png">
### 4.3 Определение, является ли число простым
```py
>>> chislo=267
>>> kandidat =chislo // 2
>>> while kandidat > 1:
if chislo%kandidat == 0: # Остаток от деления
print(chislo, ' имеет множитель ', kandidat)
break # else выполняться не будет
kandidat -= 1
else: # При завершении цикла без break
print(chislo, ' является простым!')
267 имеет множитель 89
```
```py
>>> for i in range(250,300+1):
chislo=i
kandidat=chislo//2
while kandidat>1:
if chislo%kandidat==0:
print(chislo,' имеет множитель ',kandidat)
break
kandidat -=1
else:
print(chislo,' является простым.')
250 имеет множитель 125
251 является простым.
252 имеет множитель 126
253 имеет множитель 23
254 имеет множитель 127
255 имеет множитель 85
256 имеет множитель 128
257 является простым.
258 имеет множитель 129
259 имеет множитель 37
260 имеет множитель 130
261 имеет множитель 87
262 имеет множитель 131
263 является простым.
264 имеет множитель 132
265 имеет множитель 53
266 имеет множитель 133
267 имеет множитель 89
268 имеет множитель 134
269 является простым.
270 имеет множитель 135
271 является простым.
272 имеет множитель 136
273 имеет множитель 91
274 имеет множитель 137
275 имеет множитель 55
276 имеет множитель 138
277 является простым.
278 имеет множитель 139
279 имеет множитель 93
280 имеет множитель 140
281 является простым.
282 имеет множитель 141
283 является простым.
284 имеет множитель 142
285 имеет множитель 95
286 имеет множитель 143
287 имеет множитель 41
288 имеет множитель 144
289 имеет множитель 17
290 имеет множитель 145
291 имеет множитель 97
292 имеет множитель 146
293 является простым.
294 имеет множитель 147
295 имеет множитель 59
296 имеет множитель 148
297 имеет множитель 99
298 имеет множитель 149
299 имеет множитель 23
300 имеет множитель 150
```
### 4.4 Инструкция continue
```py
>>> number = 0
>>> while number < 10:
number += 1
if number % 2 == 0: # Если число четное
continue # Пропускаем оставшуюся часть цикла
print(f"Нечетное число: {number}")
Нечетное число: 1
Нечетное число: 3
Нечетное число: 5
Нечетное число: 7
Нечетное число: 9
```

@ -0,0 +1,120 @@
# Общее контрольное задание по теме 5
Бутко Захар Владимирович, А-03-23
## Задание
1.Для заданной символьной строки с англоязычным текстом (его можно заимствовать из помощи) определите порядковый номер каждой буквы в английском алфавите.
2.Создайте список со словами из задания данного пункта. Для этого списка – определите, есть ли в нем некоторое заданное значение, и выведите соответствующее сообщение: либо о нахождении элемента, либо о его отсутствии в списке (проверить как с имеющимся, так и с отсутствующим словом).
3.Создайте список студентов вашей группы (3-4 фамилии) и список их средних баллов в летней сессии – в порядке перечисления студентов в первом списке. Создайте еще 2 аналогичных списка для тех же студентов, но в другом порядке, по зимней сессии. Напишите инструкции, позволяющие по указанной (запрошенной и введенной) фамилии студента вывести его средние баллы по двум сессиям.
## Решение
### Задание №1
```py
>>> alphabet="abcdefghijklmnopqrstuvwxyz"
>>> stroka="My name is Zakhar. I am a student of MPEI"
>>> for cur_ind in range(len(stroka)):
low_stroka=stroka.lower()
letter=low_stroka[cur_ind]
if not letter in alphabet:
continue
else:
print("Порядковый номер буквы ",letter," - ", alphabet.index(letter)+1)
Порядковый номер буквы m - 13
Порядковый номер буквы y - 25
Порядковый номер буквы n - 14
Порядковый номер буквы a - 1
Порядковый номер буквы m - 13
Порядковый номер буквы e - 5
Порядковый номер буквы i - 9
Порядковый номер буквы s - 19
Порядковый номер буквы z - 14
Порядковый номер буквы a - 9
Порядковый номер буквы k - 11
Порядковый номер буквы h - 9
Порядковый номер буквы a - 20
Порядковый номер буквы r - 1
Порядковый номер буквы i - 9
Порядковый номер буквы a - 1
Порядковый номер буквы m - 13
Порядковый номер буквы a - 1
Порядковый номер буквы s - 19
Порядковый номер буквы t - 20
Порядковый номер буквы u - 21
Порядковый номер буквы d - 4
Порядковый номер буквы e - 5
Порядковый номер буквы n - 14
Порядковый номер буквы t - 20
Порядковый номер буквы o - 15
Порядковый номер буквы f - 6
Порядковый номер буквы m - 13
Порядковый номер буквы p - 16
Порядковый номер буквы e - 5
Порядковый номер буквы i - 9
```
### Задание 2
```py
>>> text="Создайте список со словами из задания данного пункта. Для этого списка – определите, есть ли в нем некоторое заданное значение, и выведите соответствующее сообщение: либо о нахождении элемента, либо о его отсутствии в списке (проверить как с имеющимся, так и с отсутствующим словом)."
>>> text=text.replace('.','');text=text.replace(',','');text=text.replace('(','');text=text.replace(')','');text=text.replace(':','');text=text.replace('–','');
>>> text
'Создайте список со словами из задания данного пункта Для этого списка определите есть ли в нем некоторое заданное значение и выведите соответствующее сообщение либо о нахождении элемента либо о его отсутствии в списке проверить как с имеющимся так и с отсутствующим словом'
>>> text=text.replace(' ',' ')
>>> text_list = text.split()
>>> text_list
['Создайте', 'список', 'со', 'словами', 'из', 'задания', 'данного', 'пункта', 'Для', 'этого', 'списка', 'определите', 'есть', 'ли', 'в', 'нем', 'некоторое', 'заданное', 'значение', 'и', 'выведите', 'соответствующее', 'сообщение', 'либо', 'о', 'нахождении', 'элемента', 'либо', 'о', 'его', 'отсутствии', 'в', 'списке', 'проверить', 'как', 'с', 'имеющимся', 'так', 'и', 'с', 'отсутствующим', 'словом']
>>> word1='как'
>>> word2='пупуня'
>>> if word1 in text_list:
print("Слово '",word1,"' найдено в списке слов.")
else:
print("Слово '",word1,"' не найдено в списке слов.")
Слово ' как ' найдено в списке слов.
>>> if word2 in text_list:
print("Слово '",word2,"' найдено в списке слов.")
else:
print("Слово '",word2,"' не найдено в списке слов.")
Слово ' пупуня ' не найдено в списке слов.
```
### Задание 3
```py
>>> sr_ball_summer=[3.35,4,3.5,3.5]
>>> stud_summer=['Markov','Butko','Ogarkov','Stepanishev']
>>> stud_winter=['Butko','Ogarkov','Markov','Stepanishev']
>>> sr_ball_winter=[4,4.25,4.5,3]
>>> search_surname = input("Введите фамилию студента: ")
Введите фамилию студента: Butko
>>> print("Средний балл студента с фамилией",search_surname,"по зимней сессии -", sr_ball_winter[stud_winter.index(search_surname)], ", а по летней -",sr_ball_summer[stud_summer.index(search_surname)])
Средний балл студента с фамилией Butko по зимней сессии - 4 , а по летней - 4
```
Загрузка…
Отмена
Сохранить