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

..

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

Автор SHA1 Сообщение Дата
Alex 6530e8d25d test
2 недель назад
Alex 2974734c75 report 4
2 недель назад
Alex ae95bb0f33 test
4 недель назад
Alex 78fbfd99f3 fix 2
4 недель назад
Alex 060f85328c fix
4 недель назад
Alex bdc1b39e4b FIRST COMMIT
4 недель назад
Alex 9367d53129 Исправление ошибок
2 месяцев назад
Alex ae3c0e4849 test
2 месяцев назад
Alex 4e6d6ca1bc task
2 месяцев назад
Alex 57b1286771 отчёт по теме2
2 месяцев назад
Alex 80c454e7f9 test
2 месяцев назад
Alex 662b7c8754 first commit
2 месяцев назад

@ -1,7 +1,6 @@
# Программное обеспечение автоматизированных систем: лабораторные работы
[Репозиторий с методическими указаниями и заданиями.](http://uit.mpei.ru/git/main/python)
Обратите внимание на файл с комментариями в репозитории по ссылке.
## Работа с Git
@ -87,7 +86,7 @@
## 1.1 Настройка текущего каталога
```py
```
>>> import os
>>> os.chdir(r"C:\users\u111-19\Desktop\python\TEMA1")
>>> os.getcwd()
@ -110,7 +109,7 @@
### Оформление решений
Решение всех заданий и тестов оформляется по образцу:
Решение всех заданий оформляется по образцу:
# Общее контрольное задание по теме 2
@ -130,8 +129,5 @@
Для темы 1 вместо «Задания» — «Вопрос», вместо «Решения» — «Ответ».
Для тем 3, 6 и 9 вместо «Индивидуального контрольного задания по теме 3 (6, 9)» —
«Тест по модулю 1 (2, 3)».
Для тем 8 и 9 раздела «Решение» не нужно,
вместо этого решение размещается в отдельных файлах `*.py`.

@ -6,7 +6,7 @@
## 1.1 Настройка текущего каталога
```py
```
>>> import os
>>> os.chdir(r"C:\users\u111-19\Desktop\python\TEMA1")
>>> os.getcwd()

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

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

После

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

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

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

После

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

@ -0,0 +1,3 @@
print('Hello!')
h=input('Your name: ')
print(h)

@ -0,0 +1,140 @@
# Отчёт по лабораторной работе №1
Криштул Александр, А-03-23
## Знакомство с программой-интерпретатором
```py
>>> print('Hello!')
Hello!
>>> h=input('Your name: ')
Your name: Alexander
>>> print(h)
Alexander
>>> exit()
```
## Инструкции настройки рабочего каталога среды
```py
>>> import os
>>> os.chdir('C:\\Users\\User\\Desktop\\LR\\python-labs\\TEMA1')
>>> os.getcwd()
'C:\\Users\\User\\Desktop\\LR\\python-labs\\TEMA1'
```
## pr0.py
Содержимое файла:
```py
print('Hello!')
h=input('Your name: ')
print(h)
```
Результат выполнения программы:
```
>>>
========== RESTART: C:\Users\User\Desktop\LR\python-labs\TEMA1\pr0.py ==========
Hello!
Your name: Alex
Alex
```
## prb1.py
Содержимое файла:
```py
name = input("Как Вас зовут? ")
print("Привет,", name)
```
Результат выполнения программы:
```
>>>
= RESTART: C:\Users\User\Desktop\LR\python-labs\TEMA1\prb1.py
Как Вас зовут? Alexander
Привет, Alexander
```
## __pycache__ и содержимое файла Pr0.cpython-34.pyc
Содержимое файла:
```
a
µhr г  @ s& e d ѓ edѓZddlZe dЎ dS )zHello!z Your name: й Nz*C:\Users\User\Desktop\LR\python-labs\TEMA1)ЪprintЪinputЪosЪchdir© r r ъ1C:\Users\User\Desktop\LR\python-labs\TEMA1\pr0.pyЪ<module> s 
```
В папке __pycache__ хранится скомпилированный двоичный код, который нужен ля оптимизации загрузки и запуска программы.
## Раздел помощи (Help)
```py
>>> help(print)
Help on built-in function print in module builtins:
print(...)
print(value, ..., sep=' ', end='\n', file=sys.stdout, flush=False)
Prints the values to a stream, or to sys.stdout by default.
Optional keyword arguments:
file: a file-like object (stream); defaults to the current sys.stdout.
sep: string inserted between values, default a space.
end: string appended after the last value, default a newline.
flush: whether to forcibly flush the stream.
```
```py
>>> help(input)
Help on built-in function input in module builtins:
input(prompt=None, /)
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.
```
## Файл tdemo_chaos.py
Содержание файла:
```py
# File: tdemo_chaos.py
# Author: Gregor Lingl
# Date: 2009-06-24
# A demonstration of chaos
from turtle import *
N = 80
def f(x):
return 3.9*x*(1-x)
def g(x):
return 3.9*(x-x**2)
def h(x):
return 3.9*x-3.9*x*x
def jumpto(x, y):
penup(); goto(x,y)
def line(x1, y1, x2, y2):
jumpto(x1, y1)
pendown()
goto(x2, y2)
def coosys():
line(-1, 0, N+1, 0)
line(0, -0.1, 0, 1.1)
```
Результат выполнение программы:
<image src="figure0.png">
## Демонстрация работы модуля Turtle на примере Clock
<image src="figure1.png">

@ -0,0 +1,8 @@
# Общее контрольное задание по теме один
Криштул Александр, А-03-23
## Вопрос
Можно ли работать со средой без использования интерактивной оболочки IDLE?
## Ответ
Да, со средой можно работать как и других интерактивных оболочках (например VS code), так и в крмандной строке.

@ -0,0 +1,411 @@
# Отчёт по ЛР2
Криштул Александр, А-03-23
## Пункт 2. Изучение простых объектов.
```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', 'is_integer', 'numerator', 'real', 'to_bytes']
>>> type(f2)
<class 'int'>
>>> del f1,f2
>>> dir()
['__annotations__', '__builtins__', '__doc__', '__loader__', '__name__', '__package__', '__spec__']
```
## Пункт 3. Изучение правил именования объектов в Python.
```py
>>> gg1=1.6
>>> gg1
1.6
>>> hh1='Строка'
>>> hh1
'Строка'
>>> 73sr=3
SyntaxError: invalid decimal literal
>>> and=7
SyntaxError: invalid syntax
```
## Пункт 4. Ключевые слова в Python.
```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']
>>> s = keyword.kwlist
>>> s
['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']
```
## Пункт 5. Встроенные идентификаторы и встроенные функции.
Список встроенных идентификаторов:
```py
>>> import builtins
>>> dir(builtins)
['ArithmeticError', 'AssertionError', 'AttributeError', 'BaseException', 'BaseExceptionGroup', 'BlockingIOError', 'BrokenPipeError', 'BufferError', 'BytesWarning', 'ChildProcessError', 'ConnectionAbortedError', 'ConnectionError', 'ConnectionRefusedError', 'ConnectionResetError', 'DeprecationWarning', 'EOFError', 'Ellipsis', 'EncodingWarning', 'EnvironmentError', 'Exception', 'ExceptionGroup', 'False', 'FileExistsError', 'FileNotFoundError', 'FloatingPointError', 'FutureWarning', 'GeneratorExit', 'IOError', 'ImportError', 'ImportWarning', 'IndentationError', 'IndexError', 'InterruptedError', 'IsADirectoryError', 'KeyError', 'KeyboardInterrupt', 'LookupError', 'MemoryError', 'ModuleNotFoundError', 'NameError', 'None', 'NotADirectoryError', 'NotImplemented', 'NotImplementedError', 'OSError', 'OverflowError', 'PendingDeprecationWarning', 'PermissionError', 'ProcessLookupError', 'PythonFinalizationError', 'RecursionError', 'ReferenceError', 'ResourceWarning', 'RuntimeError', 'RuntimeWarning', 'StopAsyncIteration', 'StopIteration', 'SyntaxError', 'SyntaxWarning', 'SystemError', 'SystemExit', 'TabError', 'TimeoutError', 'True', 'TypeError', 'UnboundLocalError', 'UnicodeDecodeError', 'UnicodeEncodeError', 'UnicodeError', 'UnicodeTranslateError', 'UnicodeWarning', 'UserWarning', 'ValueError', 'Warning', 'WindowsError', 'ZeroDivisionError', '_', '_IncompleteInputError', '__build_class__', '__debug__', '__doc__', '__import__', '__loader__', '__name__', '__package__', '__spec__', 'abs', 'aiter', 'all', 'anext', 'any', 'ascii', 'bin', 'bool', 'breakpoint', 'bytearray', 'bytes', 'callable', 'chr', 'classmethod', 'compile', 'complex', 'copyright', 'credits', 'delattr', 'dict', 'dir', 'divmod', 'enumerate', 'eval', 'exec', 'exit', 'filter', 'float', 'format', 'frozenset', 'getattr', 'globals', 'hasattr', 'hash', 'help', 'hex', 'id', 'input', 'int', 'isinstance', 'issubclass', 'iter', 'len', 'license', 'list', 'locals', 'map', 'max', 'memoryview', 'min', 'next', 'object', 'oct', 'open', 'ord', 'pow', 'print', 'property', 'quit', 'range', 'repr', 'reversed', 'round', 'set', 'setattr', 'slice', 'sorted', 'staticmethod', 'str', 'sum', 'super', 'tuple', 'type', 'vars', 'zip']
```
Базовые функции:
```py
>>> a = -34.8569
>>> aa = [-4, 6, 15, -14, 2, 4]
>>> aaa = ['At', 'Aattt', 'Taa', 'Tttaa']
>>> abs(a)
34.8569
>>> round(a, 2)
-34.86
>>> len(aa)
6
>>> pow(a, 2)
1215.0034776100001
>>> max(aa)
15
>>> min(aa)
-14
>>> sorted(aa)
[-14, -4, 2, 4, 6, 15]
>>> sorted(aaa)
['Aattt', 'At', 'Taa', 'Tttaa']
>>> sorted(aaa, key = len)
['At', 'Taa', 'Aattt', 'Tttaa']
>>> sum(aa)
9
>>> sum(aa, 20)
29
>>> Tovar = ['Milk', 'Meet', 'Bread']
>>> Stoimost = [100, 450, 55]
>>> Kolichestvo = [40, 28, 64]
>>> data = zip(Tovar, Stoimost, Kolichestvo)
list(data)
[('Milk', 100, 40), ('Meet', 450, 28), ('Bread', 55, 64)]
```
## Пункт 6. Учёт регистра.
```py
>>> Gg1 = 45
>>> gg1
1.6
>>> Gg1
45
```
## Пункт 7. Базовые типы объектов.
### 7.1. Логический тип
```py
>>> bb1=True; bb2=False
>>> bb1;bb2
True
False
>>> type(bb1)
<class 'bool'>
```
### 7.2. Другие простые типы.
```py
>>> ii1 = -123456789
>>> type(ii1)
<class 'int'>
>>> ff1=-8.9876e-12
>>> type(ff1)
<class 'float'>
>>> dv1=0b1101010
>>> type(dv1)
<class 'int'>
>>> vsm1=0o52765
>>> type(vsm1)
<class 'int'>
>>> shest1=0x7109af6
>>> type(shest1)
<class 'int'>
>>> cc1=2-3j
>>> type(cc1)
<class 'complex'>
>>> a=3.67; b=-0.45
>>> cc2=complex(a,b)
>>> type(cc2)
<class 'complex'>
>>> cc2
(3.67-0.45j)
```
### 7.3. Строка символов.
```py
>>> ss1='Это - строка символов'
>>> ss1; type(ss1)
'Это - строка символов'
<class 'str'>
>>> ss1a="Это - \" строка символов \", \n \t выводимая на двух строках"
>>> print(ss1a)
Это - " строка символов ",
выводимая на двух строках
>>> ss1b = 'Меня зовут \n Криштул А.'
>>> print(ss1b)
Меня зовут
Криштул А.
>>> mnogo="""Нетрудно заметить , что в результате операции
над числами разных типов получается число,
имеющее более сложный тип из тех, которые участвуют в операции."""
>>> print(mnogo)
Нетрудно заметить , что в результате операции
над числами разных типов получается число,
имеющее более сложный тип из тех, которые участвуют в операции.
>>> ss1[0]
'Э'
>>> ss1[8]
'р'
>>> ss1[-2]
'о'
>>> ss1[6:9]
'стр'
>>> ss1[13:]
'символов'
>>> ss1[:13]
'Это - строка '
>>> >>> ss1[5:-8]
' строка '
>>> ss1[3:17:2]
' тоасм'
>>> ss1[17:3:-2]
'омсаот '
```
Так как индекс -4 и 17 равны в строке ss1, то с помощью этой строки кода получим то же самое:
```py
>>> ss1[-4:3:-2]
'омсаот '
```
Стротка - неизменяемый объект
```py
>>> ss1[4]='='
Traceback (most recent call last):
File "<pyshell#114>", line 1, in <module>
ss1[4]='='
TypeError: 'str' object does not support item assignment
```
```py
>>> ss1=ss1[:4]+'='+ss1[5:]
>>> ss1
'Это = строка символов'
```
Создадим еще несколько объектов разных типов данных:
```py
>>> a = -8; a; type(a)
-8
<class 'int'>
>>> a = 1.1; a; type(a)
1.1
<class 'float'>
>>> a = True; a; type(a)
True
<class 'bool'>
>>> a = 8 - 9j; a; type(a)
(8-9j)
<class 'complex'>
>>> a = complex(6,4); a; type(a)
(6+4j)
<class 'complex'>
>>> a = 'String'; a; type(a)
'String'
<class 'str'>
```
## Пункт 8. Более сложные типы объектов.
### 8.1. Списки.
```py
>>> spis1=[111,'Spisok',5-9j]
>>> stup=[0,0,1,1,1,1,1,1,1]
>>> spis=[1,2,3,4,
5,6,7,
8,9,10]
>>> spis1[-1]
(5-9j)
>>> stup[-8::2]
[0, 1, 1, 1]
```
В список stup вошло 4 элемента с индексами из исходного списк: [-8] ([1]), [-6] ([3]), [-4] ([5]) и [-2] ([7]).
```py
>>> spis1[1]='Список'
>>> spis1
[111, 'Список', (5-9j)]
>>> len(spis1)
3
```
```py
>>> help(spis1.append)
Help on built-in function append:
append(object, /) method of builtins.list instance
Append object to the end of the list.
```
```py
>>> spis1.append('New item')
>>> spis1
[111, 'Список', (5-9j), 'New item']
>>> spis1.append('New item2')
>>> spis1
[111, 'Список', (5-9j), 'New item', 'New item2']
>>> spis1
[111, 'Список', (5-9j), 'New item']
>>> spis1.pop(1)
'Список'
>>> spis1
[111, (5-9j), 'New item']
```
Также могут использоваться методы insert, remove, extend, clear, sort, reverse, copy, count, index:
```py
>>> spis1.insert(1, 'string')
>>> spis1
[111, 'string', (5-9j), 'New item']
>>> spis1.remove(111)
>>> spis1
['string', (5-9j), 'New item']
>>> new_list = [1, 2, 3]
>>> spis1.extend(new_list)
>>> spis1
['string', (5-9j), 'New item', 1, 2, 3]
>>> new_list.clear()
>>> new_list
[]
>>> new_list = [3, 1, 2]
>>> new_list.sort()
>>> new_list
[1, 2, 3]
>>> new_list.reverse()
>>> new_list
[3, 2, 1]
>>> new_list2 = new_list.copy()
>>> new_list2
[1, 2, 3]
>>> new_list = [1, 2, 2, 2, 3, 3]
>>> new_list.count(2)
3
>>> new_list = ['one', 'two', 'three']
>>> new_list.index('three')
2
```
```py
>>> spis1
['string', (5-9j), 'New item', 1, 2, 3]
>>> spis2=[spis1,[4,5,6,7]]
>>> spis2[0][1]
(5-9j)
>>> spis2[0][1]=78
>>> spis2
[['string', 78, 'New item', 1, 2, 3], [4, 5, 6, 7]]
>>> spis1
['string', 78, 'New item', 1, 2, 3]
```
Spis1 претерпел изменения, потому что spis2[0] не является копией spis1, а представляет собой ссылку на тот же самый объект в памяти.
```py
>>> my_list = [12, 'str', True, [1, 2, 3]]
>>> my_list
[12, 'str', True, [1, 2, 3]]
```
### 8.2. Кортежи.
```py
>>> kort1=(222,'Kortezh',77+8j)
>>> kort1
(222, 'Kortezh', (77+8j))
>>> kort1= kort1+(1,2)
>>> kort1
(222, 'Kortezh', (77+8j), 1, 2)
>>> kort1= kort1+(sslb,)
>>> kort1
(222, 'Kortezh', (77+8j), 1, 2, 'Криштул А.Н.')
>>> kort2=kort1[:2]+kort1[3:]
>>> kort2
(222, 'Kortezh', 1, 2, 'Криштул А.Н.')
>>> kort1.index(2)
4
>>> kort1.count(222)
1
>>> kort1[2]=90
Traceback (most recent call last):
File "<pyshell#109>", line 1, in <module>
kort1[2]=90
TypeError: 'tuple' object does not support item assignment
>>> my_kort = (12, 'str', [1, 2, 3], (222, 'str'))
>>> my_kort
(12, 'str', [1, 2, 3], (222, 'str'))
```
### 8.3. Словари.
```py
>>> dic1={'Saratov':145, 'Orel':56, 'Vologda':45}
>>> dic1['Orel']
56
>>> dic1['Pskov']=78
>>> dic1
{'Saratov': 145, 'Orel': 56, 'Vologda': 45, 'Pskov': 78}
>>> sorted(dic1.keys())
['Orel', 'Pskov', 'Saratov', 'Vologda']
>>> sorted(dic1.values())
[45, 56, 78, 145]
>>> 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)])
>>> dic4
{1: ['A', 'B', 'C'], 2: [4, 5], 'Q': 'Prim', 'Stroka': 'Криштул А.Н.'}
>>> dic5=dict(zip(['A','B','C','Stroka'],[16,-3,9,ss1b]))
>>> dic5
{'A': 16, 'B': -3, 'C': 9, 'Stroka': 'Криштул А.Н.'}
```
```py
>>> t = ("a", "b", "c", "d", "e", "f", "g")
>>> l = [1, 2, 3, 4, 5]
>>> d = dict(zip(t, l))
>>> d
{'a': 1, 'b': 2, 'c': 3, 'd': 4, 'e': 5}
```
Элементов в получившимся словаре - 5, т.к. zip() работает до конца самого короткого объекта (в нашем случае этот объект l)
```py
>>> AVTI={'Курс I':[22,23,17,24,30,29,28,25,23,0,4,31,30,33,18,12,27],'Курс II':[18,16,12,15,29,18,21,23,13,0,4,20,31,26,16,], 'Курс III':[17,12,0,6,17,15,19,19,0,0,5,17,22,18,12], 'Курс IV':[27,16,0,13,17,15,19,20,0,0,2,15,18,16,17]}
>>> AVTI['Курс III'][5]
15
```
### 8.4. Множества.
```py
>>> mnoz1={'двигатель','датчик','линия связи','датчик','микропроцессор','двигатель'}
>>> mnoz1
{'датчик', 'микропроцессор', 'двигатель', 'линия связи'}
>>> len(mnoz1)
4
>>> 'датчик' in mnoz1
True
>>> mnoz1.add('реле')
>>> mnoz1.remove('линия связи')
```
```py
>>> s = {1, "hello", True, 3.14, (2, 5)}
>>> s.add("Python")
>>> s
{1, 3.14, 'hello', (2, 5), 'Python'}
>>> s.remove(3.14)
>>> s
{1, 'hello', (2, 5), 'Python'}
```

@ -0,0 +1,32 @@
# Общее контрольное задание к ЛР2
Криштул Александр, А-03-23
## Задание
Реализовать, записать в текстовый файл и проанализировать результаты последовательности инструкций
## Решение
Код программы:
```py
import keyword
familia = 'Krishtul A.N.'
first_l = familia[0]
sp_kw = keyword.kwlist
print(sp_kw)
sp_kw.remove('nonlocal')
print(sp_kw)
kort_nam = ('Alex', 'Dima', 'Victor', 'Iliya')
print(type(kort_nam))
kort_nam = kort_nam + ('Dima', 'Ivan')
print(kort_nam.count('Dima'))
dict_bas = {'Строка': familia, 'Список': sp_kw, 'Кортеж': kort_nam}
print(dict_bas)
```
Результат выполнения программы:
```py
['False', 'None', 'True', '__peg_parser__', 'and', 'as', 'assert', 'async', 'await', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'nonlocal', 'not', 'or', 'pass', 'raise', 'return', 'try', 'while', 'with', 'yield']
['False', 'None', 'True', '__peg_parser__', 'and', 'as', 'assert', 'async', 'await', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'not', 'or', 'pass', 'raise', 'return', 'try', 'while', 'with', 'yield']
<class 'tuple'>
2
{'Строка': 'Krishtul A.N.', 'Список': ['False', 'None', 'True', '__peg_parser__', 'and', 'as', 'assert', 'async', 'await', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'not', 'or', 'pass', 'raise', 'return', 'try', 'while', 'with', 'yield'], 'Кортеж': ('Alex', 'Dima', 'Victor', 'Iliya', 'Dima', 'Ivan')}
```

@ -0,0 +1,13 @@
import keyword
familia = 'Krishtul A.N.'
first_l = familia[0]
sp_kw = keyword.kwlist
print(sp_kw)
sp_kw.remove('nonlocal')
print(sp_kw)
kort_nam = ('Alex', 'Dima', 'Victor', 'Iliya')
print(type(kort_nam))
kort_nam = kort_nam + ('Dima', 'Ivan')
print(kort_nam.count('Dima'))
dict_bas = {'Строка': familia, 'Список': sp_kw, 'Кортеж': kort_nam}
print(dict_bas)

@ -0,0 +1,20 @@
# Индивидуальное контрольное задание по Теме 2
Криштул Александр, А-03-23
## Задание
Создайте два списка: один – с фамилиями 4-х студентов вашей группы, другой – с 5 числами: 111,112,113,114,115. Напишите инструкцию создания кортежа, у которого списки были бы двумя элементами. Отобразите кортеж. Напишите инструкцию вывода на экран с использованием функции print и ссылок на элементы кортежа так, чтобы получилось сообщение вида: <ФИО студента>=114.
## Решение
Код программы:
```py
spis1 = ['Ivanov', 'Petrov', 'Sidorov', 'Kochetkov']
spis2 = [111, 112, 113, 114, 115]
kort = (spis1, spis2)
print(kort)
print(kort[0][3], ' = ', kort[1][3])
```
Р езультат выполнения:
```py
(['Ivanov', 'Petrov', 'Sidorov', 'Kochetkov'], [111, 112, 113, 114, 115])
Kochetkov = 114
```

@ -0,0 +1,631 @@
# Отчёт по ТЕМЕ №3.
Криштул Александр, А-03-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 Преобразование в целое десятичное число и преобразование в вещественное число.
```py
>>> tt1=int(198.6)
>>> tt2=int("-76")
>>> tt3=int("B",16)
>>> tt4=int("71",8)
>>> tt1
198
>>> tt2
-76
>>> tt3
11
>>> tt4
57
```
Пример ошибки:
```py
>>> tt5=int("98.76")
Traceback (most recent call last):
File "<pyshell#19>", line 1, in <module>
tt5=int("98.76")
ValueError: invalid literal for int() with base 10: '98.76'
```
Причиной этому является то, что функция int() ожидает из строки получить целочисленное значение.
```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 Преобразование десятичных чисел в двоичную, 8-ричную и 16-ричную системы счисления.
```py
>>> hh=123
>>> dv1=bin(hh) # двоичная сс
>>> vos1=oct(hh) # 8-ричная сс
>>> shs1=hex(hh) # 16-ричная сс
>>> dv1
'0b1111011'
>>> vos1
'0o173'
>>> shs1
'0x7b'
```
Для проверки выполним обратные преобразования объектов:
```py
>>> int(dv1, 2)
123
>>> int(vos1, 8)
123
>>> int(shs1, 16)
123
```
## 3. Преобразование более сложных базов типов объектов.
### 3.1 Преобразование в строчный тип.
```py
>>> strk1=str(23.6)
>>> strk2=str(logiz3)
>>> strk3=str(["A","B","C"])
>>> strk4=str(("A","B","C"))
>>> strk5=str({"A":1,"B":2,"C":9})
>>> strk1
'23.6'
>>> strk2
'True'
>>> strk3
"['A', 'B', 'C']"
>>> strk4
"('A', 'B', 'C')"
>>> strk5
"{'A': 1, 'B': 2, 'C': 9}"
```
### 3.2 Преобразование элементов объекта в список.
```py
>>> spis1=list("Строка символов")
>>> spis2=list((124,236,-15,908))
>>> spis3=list({"A":1,"B":2,"C":9})
```
Инструкция, обеспечивающуя создание из того же словаря списка с другими его частями:
```py
>>> spis3=list({"A":1,"B":2,"C":9}.values())
>>> spis3
[1, 2, 9]
```
### 3.3 Преобразование элементов объектов в кортеж.
```py
>>> kort7=tuple('Строка символов')
>>> kort8=tuple(spis2)
>>> kort9=tuple({"A":1,"B":2,"C":9})
>>> kort7
('С', 'т', 'р', 'о', 'к', 'а', ' ', 'с', 'и', 'м', 'в', 'о', 'л', 'о', 'в')
>>> kort8
(124, 236, -15, 908)
>>> kort9
('A', 'B', 'C')
>>> kort9=tuple({"A":1,"B":2,"C":9}.values())
>>> kort9
(1, 2, 9)
```
### 3.4 Удаление объектов.
```py
>>> del strk5, kort8
>>> strk5
Traceback (most recent call last):
File "<pyshell#150>", line 1, in <module>
strk5
NameError: name 'strk5' is not defined. Did you mean: 'strk1'?
>>> kort8
Traceback (most recent call last):
File "<pyshell#151>", line 1, in <module>
kort8
NameError: name 'kort8' is not defined. Did you mean: 'kort7'?
```
### Задание (преобразование строк, кортежей и списков)
```py
>>> fio = 'Krishtul A.N.'
>>> list_fio = list(fio)
>>> cort_fio = tuple(list_fio)
>>> str_fio = str(cort_fio)
>>> list_fio
['K', 'r', 'i', 's', 'h', 't', 'u', 'l', ' ', 'A', '.', 'N', '.']
>>> cort_fio
('K', 'r', 'i', 's', 'h', 't', 'u', 'l', ' ', 'A', '.', 'N', '.')
>>> str_fio
"('K', 'r', 'i', 's', 'h', 't', 'u', 'l', ' ', 'A', '.', 'N', '.')"
```
## 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
>>> c=-24.6//12.1
>>> type(b)
<class 'int'>
>>> b
3
>>> type(c)
<class 'float'>
>>> c
-3.0
>>> d = 8.4//4
>>> type(d)
<class 'float'>
>>> d
2.0
```
### 4.5 Получение остатка от деления.
```py
>>> 148%33
16
>>> 12.6%3.8
1.2000000000000002
>>> 250.1%4
2.0999999999999943
```
### 4.6 Возведение в степень.
```py
>>> 14**3
2744
>>> e=2.7**3.6
>>> e
35.719843790663525
>>> 4.4**9
618121.8395095045
```
### Задание (арифмитические операции с комплексными числами).
К комплексным числам можно применить операции такие как: сложение, вычитание, умножение, деление и возведение в степень:
```py
>>> z1 = 4 + 5j
>>> z2 = 16 - 9j
>>> z1 + z2
(20-4j)
>>> z1 - z2
(-12+14j)
>>> z1 * z2
(109+44j)
>>> z1 / z2
(0.05637982195845697+0.34421364985163205j)
>>> z1**z2
(-1.827252763904479e+16-1.7626503076626254e+16j)
```
## 5. Операции с двоичными представлениями целых чисел.
### 5.1 Двоичная инверсия.
```py
>>> dv1=9
>>> dv2=~dv1
>>> dv2
-10
```
### 5.2 Двоичное "И".
```py
>>> 7&9
1
>>> 7&8
0
```
### 5.3 Двоичное "Или".
```py
>>> 7|9
15
>>> 7|8
15
>>> 14|5
15
```
### 5.4 Двоичное исключающее "Или".
```py
>>> 14^5
11
```
### 5.5 Двоичное исключающее "Или" (Влево или вправо).
```py
>>> h=14 #Двоичное представление = 1110
>>> g=h<<2 # Новое двоичное представление = 111000
>>> g1=h>>1 # Новое двоичное представление = 0111
>>> g2=h>>2 # Новое двоичное представление = 0011
```
### Задание (Операции с более длинными двоичными представлениями целых чисел).
```py
>>> a = 423
>>> b = 324
>>> a & b
260
>>> a | b
487
>>> a ^ b
227
```
## 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'
>>> 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=-12
>>> zz
-12
>>> zz+=5
>>> zz-=3
>>> stroka='Система'
>>> stroka+=' регулирования'
>>> zz
-10
>>> stroka
'Система регулирования'
```
### 7.3 Умножение текущего значения переменной на заданную величину или её деление.
```py
>>> zz/=2
>>> zz*=5
>>> p = 3
>>> p *= 87
>>> p
261
>>> p /= 3
>>> p
87.0
```
### 7.4 Операции деления с округлением вниз, получения остатка от деления и возведения в степень.
```py
>>> a = 5
>>> a //= 2
>>> a
2
>>> a = 5
>>> a %= 2
>>> a
1
>>> a = 5
>>> a **= 3
>>> a
125
```
### 7.5. Множественное присваивание.
```py
>>> w=v=10
>>> n1,n2,n3=(11,-3,'all')
>>> n1,n2,n3
(11, -3, 'all')
>>> w,v
(10, 10)
```
### Задание (проверить множественное присваивание на строке, списке и множестве)
```py
>>> s1 = s2 = 'String'
>>> s1
'String'
>>> s2
'String'
>>> m1 = m2 = [1, 2, 4, 76]
>>> m1
[1, 2, 4, 76]
>>> m2
[1, 2, 4, 76]
>>> t1 = t2 = {4, -6, 15, 64}
>>> t1
{64, -6, 4, 15}
>>> t2
{64, -6, 4, 15}
```
## 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
>>> (a == b) and ('Vologda' in dic1) or ('Pskov' in dic1)
False
>>> (a > b) or 'book' in mnoz1
True
>>> 'cap' in mnoz1 or a >= b
True
```
### 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
'Микропроцессорная система управления'
>>> stroka.count("с")
4
>>> stroka.replace(' у',' автоматического у')
'Микропроцессорная система автоматического управления'
>>> spis22=stroka.split(' ')
>>> spis22
['Микропроцессорная', 'система', 'управления']
>>> stroka.upper()
'МИКРОПРОЦЕССОРНАЯ СИСТЕМА УПРАВЛЕНИЯ'
>>> stroka3=" ".join(spis22)
>>> stroka3.partition("с")
('Микропроце', 'с', 'сорная система управления')
>>> stroka3.rpartition("с")
('Микропроцессорная си', 'с', 'тема управления')
>>> dont_shout_please = stroka.lower()
```
```py
>>> strk1='Момент времени {}, значение = {}'
>>> strk1.format(1,89.7)
'Момент времени 1, значение = 89.7'
>>> strk2='Момент времени {1}, значение = {0}:{2}'
>>> strk2.format(36.7,2,'норма!')
'Момент времени 2, значение = 36.7:норма!'
```
### 9.2 Методы для работы со списками.
```py
>>> spis = [-4, 15, (6, -4), 'str']
>>> spis.pop(2)
(6, -4)
>>> spis
[-4, 15, 'str']
>>> spis.append('c')
>>> spis
[-4, 15, 'str', 'c']
>>> spis.insert(2,'a')
>>> spis
[-4, 15, 'a', 'str', 'c']
>>> spis.count('a')
1
```
Метод pop() удалил элемент под индексом 2 (3 элемент), метод append() добавил в конец списка 'c', метод insert() поставил на 3 позицию (2 по индексу) элемент 'a', а метод count() посчитал количество вхождений элемента 'a' в список.
### 9.3 Методы для работы с кортежами.
```py
>>> my_tuple = ('str', 20, (1, 2, 3), True)
>>> my_tuple.count(20)
1
>>> my_tuple.index(True)
3
```
### 9.3 Методы для работы со словарями и множествами.
Методы для работы со словарями:
```py
>>> student = {
"name": "Alex",
"age": 20,
"city": "Moscow",
"courses": ["Math", "Physics"],
"gpa": 2.85
}
>>> student.get("name")
'Alex'
>>> student.keys()
dict_keys(['name', 'age', 'city', 'courses', 'gpa'])
>>> student.values()
dict_values(['Alex', 20, 'Moscow', ['Math', 'Physics'], 2.85])
>>> student.update("gpa": 4.5)
>>> student
{'name': 'Alex', 'age': 20, '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(6)
>>> A
{1, 2, 3, 4, 5}
>>> A.pop()
1
>>> A
{2, 3, 4, 5}
>>> A.clear()
>>> A
set()
```

@ -0,0 +1,79 @@
# Общее контрольное задание по ТЕМЕ №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
>>> task1 = int('45', 8)
>>> task1
37
```
### 2.
```py
>>> D_keys, D_values = list(D.keys()), list(D.values())
>>> D_cort = tuple(D_keys + D_values)
>>> D_cort
('усиление', 'запаздывание', 'постоянная времени', 23, 12, 78)
```
Список изменяемый, кортеж неизменяемый.
### 3.
```py
>>> task3 = ((1768 // 24.8) % 3)**2.4
>>> task3
5.278031643091577
```
### 4.
```py
>>> task4 = (~(13 & 27)^14) << 2
>>> task4
-32
```
### 5.
```py
>>> task5 = ['колебат', 'колебат', 'колебат', 'колебат']
>>> check = 'аткол' in (task5[2] + task5[3])
>>> check
True
```
### 6.
```py
>>> task6 = dir(D)
>>> D_values, D_keys = D.values(), D.keys()
>>> D_values
dict_values([23, 12, 78])
>>> D_keys
dict_keys(['усиление', 'запаздывание', 'постоянная времени'])
```
### 7.
```py
>>> only_words = task7.split(' ')
>>> index_of_replace_symbol = only_words.index('-')
>>> only_words[index_of_replace_symbol] = ','
>>> only_words.remove('данного')
>>> only_words
['Создать', 'объект', ',', 'символьную', 'строку', 'с', 'текстом', 'предложения']
```

@ -0,0 +1,63 @@
# Индивидуальное контрольное задание по ТЕМЕ №3
Криштул Александр, А-03-23
## Задание
```
M1_21
1) Если требуется повторить с небольшим изменением ранее введенную инструкцию, работая в командном окне IDLE, как это лучше сделать?
2) Создайте объект-словарь с 5 элементами: ключи - фамилии студентов, значения - адреса их электронной почты. Напишите инструкцию, доказывающую, что создан объект именно требуемого типа. Напишите инструкцию отображения списка атрибутов созданного объекта.
3) Напишите инструкцию добавления к словарю данных о еще одном студенте. Отобразите на экране список ключей словаря.
4) Создайте на основе словаря список адресов электронной почты. Отобразите полученный объект. Напишите инструкцию, позволяющую подсчитать, сколько студентов используют почту на mail.ru.
5) У одного из студентов изменился адрес почты. Запишите новый адрес в виде объекта-строки. Напишите инструкции, позволяющие скорректировать словарь с использованием созданной строки. Отобразите объект-словарь.
```
## Решение
### 1.
При помощи горячих клавиш ALT-P и ALT-N, которые "прокручивают" историю команд вперёд или назад.
### 2.
```py
>>> d = {'a':'a@mail.ru', 'b':'b@mail.ru', 'c':'c@mail.ru', 'd':'d@mail.ru', 'e':'e@mail.ru' }
>>> type(d)
<class 'dict'>
>>> dir(d)
['__class__', '__class_getitem__', '__contains__', '__delattr__', '__delitem__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__ior__', '__iter__', '__le__', '__len__', '__lt__', '__ne__', '__new__', '__or__', '__reduce__', '__reduce_ex__', '__repr__', '__reversed__', '__ror__', '__setattr__', '__setitem__', '__sizeof__', '__str__', '__subclasshook__', 'clear', 'copy', 'fromkeys', 'get', 'items', 'keys', 'pop', 'popitem', 'setdefault', 'update', 'values']
```
### 3.
```py
>>> d['f'] = 'f@mail.ru'
>>> d.keys()
dict_keys(['a', 'b', 'c', 'd', 'e', 'f'])
```
### 4.
```py
emails = ['a@mail.ru', 'b@mail.ru', 'c@mail.ru', 'd@gmail.ru', 'e@gmail.ru', 'f@mail.ru']
count = 0
for email in emails:
if email.endswith('mail.ru'):
count += 1
print(count)
```
Вывод:
```
4
```
### 5.
```py
>>> d
{'a': 'a@mail.ru', 'b': 'b@mail.ru', 'c': 'c@mail.ru', 'd': 'd@gmail.ru', 'e': 'e@gmail.ru', 'f': 'f@mail.ru'}
>>> new = 'a@mpei.ru'
>>> d['a'] = new
>>> d
{'a': 'a@mpei.ru', 'b': 'b@mail.ru', 'c': 'c@mail.ru', 'd': 'd@gmail.ru', 'e': 'e@gmail.ru', 'f': 'f@mail.ru'}
```

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

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

После

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

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

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

После

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

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

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

После

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

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

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

После

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

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

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

После

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

@ -0,0 +1,355 @@
# Отчёт по теме 4
Криштул Александр, А-03-23.
## 1. Начало работы.
Запуск интерактивнок оболочки IDLE. Открыто окно текстового редактора.
## 2. Стандартные функции.
### 2.1. Функция round – округление числа с заданной точностью.
```py
>>> help(round)
Help on built-in function round in module builtins:
round(number, ndigits=None)
Round a number to a given precision in decimal digits.
The return value is an integer if ndigits is omitted or None. Otherwise
the return value has the same type as the number. ndigits may be negative.
>>> round(123.456,1)
123.5
>>> (123.456, 0)
123.0
>>> type(round(123.456, 0))
<class 'float'>
>>> round(123.456)
123
>>> type(round(123.456))
<class 'int'>
```
### 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]
```
У нас получился объект с границами от 0 до 22 включительно, при этом шаг равен 1.
### 2.3. Функция zip.
```py
>>> qq = ['Krishtul', 'Stepanishchev', 'Ogarkov', 'Markov']
>>> zip(gg, qq)
>>> ff = zip(gg, qq)
>>> tuple(ff)
((76, 'Krishtul'), (85, 'Stepanishchev'), (94, 'Ogarkov'), (103, 'Markov'))
>>> fff = tuple(ff)
>>> len(fff)
4
>>> len(gg), len(qq)
(6, 4)
>>> ff[0]
Traceback (most recent call last):
File "<input>", line 1, in <module>
TypeError: 'zip' object is not subscriptable
```
Невозможно обратиться с указанием индекса, потому что объект является итерируемым.
### 2.4. Функция eval.
```py
>>> fff=float(input('коэффициент усиления=')); dan=eval('5*fff-156')
коэффициент усиления=4
>>> dan
-136.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(9))
9
>>> r = map(lambda x: round(x) * (-1), [12.1245, 14.125234, 534.222])
>>> list(r)
[-12, -14, -534]
```
## 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', '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!.
Raise a ValueError if x is negative or non-integral.
>>> math.factorial(5)
120
```
### 3.1 sin.
```py
>>> math.sin(90)
0.8939966636005579
```
### 3.2 acos.
```py
>>> math.acos(0)
1.5707963267948966
```
### 3.3 degrees.
```py
>>> math.degrees(math.pi)
180.0
```
### 3.4 radians.
```py
>>> math.radians(180)
3.141592653589793
```
### 3.5 exp.
```py
>>> math.exp(4)
54.598150033144236
```
### 3.6 log.
```py
>>> math.log(10)
2.302585092994046
```
### 3.7 log10.
```py
>>> math.log10(100)
2.0
```
### 3.8 sqrt.
```py
>>> math.sqrt(16)
4.0
```
### 3.9 ceil.
```py
>>> math.ceil(3.14)
4
```
Округление верх.
### 3.10 floor.
```py
>>> math.floor(3.14)
3
```
Округление вниз.
### 3.11 pi.
```py
>>> math.pi
3.141592653589793
```
Вычисление значения функции sin((2π/7)+exp(0.23)):
```py
>>> sin((2*pi/7) + 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']
```
Квадратный корень комплексного числа:
```py
>>> cmath.sqrt(1.2 - 0.5j)
(1.118033988749895-0.22360679774997896j)
```
Функция расчёта фазы:
```py
>>> 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', '_pi', '_random', '_repeat', '_sha512', '_sin', '_sqrt', '_test', '_test_generator', '_urandom', '_warn', 'betavariate', 'binomialvariate', '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.
>>> random.seed()
```
```py
>>> random.random() # вещественное число от 0.0 до 1.0
0.9718302557719972
>>> random.uniform(5, 15) # вещественное число от 5.0 до 15.0
13.25280136669705
>>> random.randint(1, 100) # целое число от 1 до 100
67
>>> random.gauss(0, 1) # mu - среднее значение, sigma - стандартное отклонение
-1.024203625286
>>> random.choice([1, 2, 3, 4]) # случайный выбор элемента из списка, кортежа, строки и т.д.
1
>>> Num = [1, 2, 3, 4]
>>> random.shuffle(Num)
>>> Num
[4, 3, 2, 1]
>>> random.sample(Num, 2) # случайный выбор двух элементов из Num
[3, 1]
>>> random.betavariate(2, 5) # случайное число с плавающей точкой на основе бета-распределения
0.47197929664908556
>>> random.gammavariate(2, 1) # случайное число с плавающей точкой на основе гамма-распределения
1.1397684174940441
```
## 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
1760183600.767916
>>> c2=time.time()-c1
>>> c2
40.34894275665283
>>> dat=time.gmtime()
>>> dat
time.struct_time(tm_year=2025, tm_mon=10, tm_mday=11, tm_hour=12, tm_min=25, tm_sec=32, tm_wday=5, tm_yday=284, 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())
'Sat Oct 11 15:27:32 2025'
>>> time.mktime((2025, 12, 25, 15, 30, 0, 0, 0, 0))
1766665800.0
```
## 7. Графические функции.
```py
>>> import pylab
>>> x=list(range(-3,55,4))
>>> t = list(range(15))
>>> pylab.plot(t,x)
[<matplotlib.lines.Line2D object at 0x0000017CF2E761B0>]
>>> pylab.title('Первый график')
>>> Text(0.5, 1.0, 'Первый график')
>>> pylab.xlabel('время')
>>> Text(0.5, 0, 'время')
>>> pylab.ylabel('сигнал')
>>> Text(0, 0.5, 'сигнал')
>>> pylab.show() #
```
Итог:
<image src="figure1.png">
```py
>>> X1=[12,6,8,10,7]; X2=[5,7,9,11,13]
>>> pylab.plot(X1)
[<matplotlib.lines.Line2D object at 0x0000017CF50861E0>]
>>> pylab.plot(X2)
[<matplotlib.lines.Line2D object at 0x0000017CF4FE7800>]
>>> pylab.show()
```
Итог:
<image src="figure2.png">
```py
>>> region=['Центр','Урал','Сибирь','Юг']
>>> naselen=[65,12,23,17]
>>> pylab.pie(naselen,labels=region)
([<matplotlib.patches.Wedge object at 0x0000017CF4FF43B0>, <matplotlib.patches.Wedge object at 0x0000017CF4FF5730>, <matplotlib.patches.Wedge object at 0x0000017CF5579100>, <matplotlib.patches.Wedge object at 0x0000017CF5579580>], [Text(-0.191013134139045, 1.0832885038559115, 'Центр'), Text(-0.861328292412156, -0.6841882582231001, 'Урал'), Text(0.04429273995539947, -1.0991078896938387, 'Сибирь'), Text(0.9873750693480946, -0.48486129194837324, 'Юг')])
>>> pylab.show()
```
Итог:
<image src="figure3.png">
```py
>>> pylab.bar(region, naselen)
>>> pylab.title('Население по регионам')
Text(0.5, 1.0, 'Население по регионам')
>>> pylab.ylabel('Население (млн)')
Text(0, 0.5, 'Население (млн)')
>>> pylab.show()
```
Итог:
<image src="figure4.png">
```py
>>> pylab.hist(naselen)
>>> pylab.title('Гистограмма распределения населения')
>>> pylab.xlabel('Население (млн)')
>>> pylab.ylabel('Частота')
>>> pylab.show()
```
Итог:
<image src="figure5.png">
## 8. Статистический модуль statistics.
```py
>>> import statistics
>>> numbers = [1,2,3,4,5,6,7,8,9]
>>> statistics.mean(numbers)
5
>>> statistics.median(numbers)
5
>>> a = [-1,-2,-3,-4,-5,-6,-7,-8,-9]
>>> statistics.correlation(numbers, a)
-1.0
```

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

@ -0,0 +1,50 @@
# Индивидуальное контрольное задание по ТЕМЕ №4.
Криштул Александр, А-03-23
# Задание.
1) Создайте объект со значением -2.3+0.8j.
```py
>>> i = -2.3 + 0.8j
>>> i
(-2.3+0.8j)
```
2) Определите фазу этого комплексного числа.
```py
>>> import cmath
>>> cmath.phase(i)
2.8068558162729786
```
3) Создайте строку с 33 символами русского алфавита.
```py
>>> a = "абвгдеёжзийклмнопрстуфхцчшщъыьэюя"
>>> a
'абвгдеёжзийклмнопрстуфхцчшщъыьэюя'
```
4) Подсчитайте число символов в строке.
```py
>>> len(a)
33
```
5) Случайным образом выберите из строки 7 символов и составьте из них кортеж.
```py
>>> import random
>>> random.seed()
>>> b = tuple(random.sample(a, 7))
>>> b
('к', 'ъ', 'ж', 'ч', 'р', 'б', 'з')
```
6) Превратите кортеж в новую строку.
```py
>> b = list(b)
>>> s = ""
>>> for i in range(len(b)):
s = s + ''.join(str(b[i]))
>>> s
'къжчрбз'
```
Загрузка…
Отмена
Сохранить