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

...

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

Автор SHA1 Сообщение Дата
BerezhkovDA 1b30398834 Изменил(а) на 'TEMA4/test.md'
1 день назад
BerezhkovDA 7c3a08cd6d Изменил(а) на 'TEMA4/test.md'
1 день назад
BerezhkovDA 355960e587 Изменил(а) на 'TEMA4/test.md'
1 день назад
BerezhkovDA 3a71c6a0a3 Изменил(а) на 'TEMA4/test.md'
1 день назад
BerezhkovDA 42bee91228 Merge branch 'main' of http://uit.mpei.ru/git/BerezhkovDA/python-labs
1 день назад
BerezhkovDA 226f7f2384 тест
1 день назад
BerezhkovDA 0e2a0167bc Изменил(а) на 'TEMA4/task.md'
1 день назад
BerezhkovDA 6f1a3c9601 Изменил(а) на 'TEMA4/task.md'
1 день назад
BerezhkovDA cafcf8e61e Изменил(а) на 'TEMA4/task.md'
1 день назад
BerezhkovDA 1cbebefe26 Изменил(а) на 'TEMA4/report.md'
1 день назад
BerezhkovDA da43ee93b1 Изменил(а) на 'TEMA4/task.md'
1 день назад
BerezhkovDA 3eec409e41 Изменил(а) на 'TEMA4/task.md'
1 день назад
BerezhkovDA d9ea0a3fd1 Изменил(а) на 'TEMA4/report.md'
1 день назад
BerezhkovDA 074ca40d02 Изменил(а) на 'TEMA4/report.md'
1 день назад
BerezhkovDA 5284b12aea Изменил(а) на 'TEMA4/task.md'
1 день назад
BerezhkovDA 6dd072e811 Изменил(а) на 'TEMA4/task.md'
3 дней назад
BerezhkovDA 89e0837841 задание
3 дней назад
BerezhkovDA 1629e18087 Merge branch 'main' of http://uit.mpei.ru/git/BerezhkovDA/python-labs
3 дней назад
BerezhkovDA d2376df544 отчет
3 дней назад
BerezhkovDA 6140763048 Изменил(а) на 'TEMA3/test.md'
2 недель назад
BerezhkovDA 0cac3ffb37 Merge branch 'main' of http://uit.mpei.ru/git/BerezhkovDA/python-labs
2 недель назад
BerezhkovDA 83f076c862 Модуль
2 недель назад
BerezhkovDA a3c81ef5db Изменил(а) на 'TEMA3/report.md'
2 недель назад
BerezhkovDA 285be332e4 Изменил(а) на 'TEMA3/report.md'
2 недель назад
BerezhkovDA b2dd6d76ca Merge branch 'main' of http://uit.mpei.ru/git/BerezhkovDA/python-labs
2 недель назад
BerezhkovDA 441e70a7a0 общее задание
2 недель назад
BerezhkovDA 138c765f36 отчет
2 недель назад
BerezhkovDA 42283b5c88 Изменил(а) на 'TEMA2/task2.md'
4 недель назад
BerezhkovDA 826207322c индивидуальное задание
4 недель назад
BerezhkovDA fc90f5aff0 общее задание
4 недель назад
BerezhkovDA af3a7fef5f отчет
4 недель назад
BerezhkovDA 1bde8e6d6d Ответ на вопрос
1 месяц назад
BerezhkovDA a683c5186d исправление
1 месяц назад
BerezhkovDA 837e332337 добавление скрина 2
1 месяц назад
BerezhkovDA 0aa269e739 добавление скрина
1 месяц назад
BerezhkovDA 49e3e7c337 отчет
1 месяц назад

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

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

После

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

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

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

После

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

@ -0,0 +1,175 @@
# Отчет по теме 1
Бережков Дмитрий, А-01-23
## Изучение среды IDLE
```py
>>> print('Hello')
Hello
>>> h=input('Your name=')
Your name=Dima
>>>print(h)
Dima
>>> exit()
```
## Настройки рабочего каталога среды
```py
>>> import os
>>> os.chdir('C:\\MPEI\\PO_ASY\\BerezhkovGit\\python-labs\\TEMA1')
```
## Файл Pr0.py
Содержимое файла:
```py
print('Hello')
h=input('Your name=')
print(h)
import os
os.chdir('C:\\MPEI\\PO_ASY\\BerezhkovGit\\python-labs\\TEMA1')
```
Результат выполнения программы:
```py
>>>
=================== RESTART: C:\MPEI\PO_ASY\BerezhkovGit\python-labs\TEMA1\Pr0.py ==================
Hello
Your name=Dima
Dima
```
Альтернативный способ запуска программы на исполнение:
```py
>>> import Pr0
Hello
Your name=Dima
Dima
```
## Файл Prb1.py
Содержимое файла:
```py
name = input("Как Вас зовут? ")
print("Привет,", name)
```
Результат выполнения программы:
```py
================== RESTART: C:\MPEI\PO_ASY\BerezhkovGit\python-labs\TEMA1\prb1.py ==================
Как Вас зовут? Dima
Привет, Dima
```
## __pycache__ и содержимое файла Pr0.cpython-34.pyc
Содержимое файла:
```py
у
Гh№ г  у` • \ " S 5 \" S5 r\ " \5 SSKr\R " S5 g)ЪHelloz
Your name=й Nz-C:\MPEI\PO_ASY\BerezhkovGit\python-labs\TEMA1)ЪprintЪinputЪosЪchdir© у Ъ4C:\MPEI\PO_ASY\BerezhkovGit\python-labs\TEMA1\Pr0.pyЪ<module>r  s- рб Ђg„Щ УЂЩ Ђa„Ы Ш Р =Х >r
```
В папке __pycache__ хранится скомпилированный двоичный код, который нужен для оптимизации
## Раздел помощи(help)
```py
>>> help(print)
Help on built-in function print in module builtins:
print(*args, sep=' ', end='\n', file=None, flush=False)
Prints the values to a stream, or to sys.stdout by default.
sep
string inserted between values, default a space.
end
string appended after the last value, default a newline.
file
a file-like object (stream); defaults to the current sys.stdout.
flush
whether to forcibly flush the stream.
```
```py
>>> 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.
```
## Файл 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)
def plot(fun, start, color):
pencolor(color)
x = start
jumpto(0, x)
pendown()
dot(5)
for i in range(N):
x=fun(x)
goto(i+1,x)
dot(5)
def main():
reset()
setworldcoordinates(-1.0,-0.1, N+1, 1.1)
speed(0)
hideturtle()
coosys()
plot(f, 0.35, "blue")
plot(g, 0.35, "green")
plot(h, 0.35, "red")
# Now zoom in:
for s in range(100):
setworldcoordinates(0.5*s,-0.1, N+1, 1.1)
return "Done!"
if __name__ == "__main__":
main()
mainloop()
```
Результат выполнения программы:
<image src="chaos.png">
## Работа модуля Turtle, пример clock
<image src="clock.png">

@ -0,0 +1,6 @@
# Контрольный вопрос #5 по Теме1
Бережков Дмитрий А-01-23
# Вопрос:
Продемонстрируйте последовательность действий при создании файла с программой с помощью текстового редактора IDLE.
# Ответ:
Используя предложение <<Файл(File)>> -> <<Новый файл(New File)>> -> ввести код -> <<Файл(File)>> -> сохранить -> указать имя файла и расширение .py

@ -0,0 +1,373 @@
# Отчет по теме 2
Бережков Дмитрий, А-01-23
## 1. Изучение простых объектов
```py
>>> import os
>>> os.chdir('C:\\MPEI\\PO_ASY\\BerezhkovGit\\python-labs\\Tema2')
>>> f1=16; f2=3
>>> f1,f2
(16, 3)
>>> f1;f2
16
3
>>> dir()
>>> 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']
['__annotations__', '__builtins__', '__doc__', '__loader__', '__name__', '__package__', '__spec__', 'f1', 'f2', 'os']
>>> type(f2)
<class 'int'>
>>> del(f1,f2)
>>> dir()
['__annotations__', '__builtins__', '__doc__', '__loader__', '__name__', '__package__', '__spec__', 'os']
```
## 2. Изучение правил именования объектов
```py
>>> gg1=1.6
>>> hh1='Строка'
>>> 73sr=3
SyntaxError: invalid decimal literal
>>> and=7
SyntaxError: invalid syntax
```
## 3. Список ключевых слов
```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']
>>> w=keyword.kwlist
>>> w
['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']
```
## 4. Список встроенных идентификаторов
```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']
```
## 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
>>> abs(-10)
10
>>> len([1,2,3])
3
>>> max([1,2,3,4,5])
5
>>> min([1,2,3,4,5])
1
>>> pow(2,5)
32
>>> pi=3.14159
>>> round(pi,3)
3.142
>>> unsorted_list = [3, 1, 4, 1, 5, 9, 2, 6]
>>> sorted_list = sorted(unsorted_list)
>>> print(sorted_list)
[1, 1, 2, 3, 4, 5, 6, 9]
>>>num=[1,2,3,4,5]
>>>print(sum(num))
15
>>>names = ["Oreshki", "Big", "Bob"]
>>> val=[25,25,25]
>>> zipp=zip(names,val)
>>> print(list(zipp))
[('Oreshki', 25), ('Big', 25), ('Bob', 25)]
```
## 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=-1234567890
>>> ff1=-8.9876e-12
>>> dv1=0b1101010
>>> vsm1=0o52765
>>> shest1=0x7109af6
>>> cc1=2-3j
>>> a=3.67;b=-0.45
>>> cc2=complex(a,b)
>>> type(ii1)
<class 'int'>
>>> type(ff1)
<class 'float'>
>>> type(dv1)
<class 'int'>
>>> type(vsm1)
<class 'int'>
>>> type(shest1)
<class 'int'>
>>> type(cc1)
<class 'complex'>
>>> type(cc2)
<class 'complex'>
```
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 равны в строке, тогда с помощью этой строки кода получим то же самое:
```py
>>> ss1[-4:3:-2]
'омсаот '
```
Строка неизменяемый объект:
```py
>>> ss1[4]='=' # Будет диагностика!
Traceback (most recent call last):
File "<pyshell#107>", line 1, in <module>
>>> ss1[4]='=' # Будет диагностика!
TypeError: 'str' object does not support item assignment
```
```py
>>> ss1=ss1[:4]+'='+ss1[5:]
>>> ss1
'Это = строка символов'
>>> ss1b=ss1b[:0]+'='+ss1b[10:]
>>> ss1b
'=: \n Бережков Д. А.'
```
Создание еще несколько объектов разных типов данных:
```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.
>>> spis1.append('New item')
>>> 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
>>> spis2=[spis1,[4,5,6,7]]
>>> spis2[0][1]
(5-9j)
>>> spis2[0][1]=78
>>> spis1 # в spis2 сохраняется ссылка на объект spis1, а не копия списка (spis2[0] и spis1 — это один и тот же список в памяти)
['string', 78, 'New item', 1, 2, 3]
```
```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= kort1+(1,2)
>>> kort1= kort1+(ss1b,)
>>> kort1=(222,'Kortezh',77+8j)
>>> kort1
(222, 'Kortezh', (77+8j))
>>> kort1= kort1+(1,2)
>>> kort1
(222, 'Kortezh', (77+8j), 1, 2)
>>> kort1= kort1+(ss1b,)
>>> kort1
(222, 'Kortezh', (77+8j), 1, 2, '=: \n Бережков Д. А.')
>>> kort2=kort1[:2]+kort1[3:]
>>> kort2
(222, 'Kortezh', 1, 2, '=: \n Бережков Д. А.')
>>> kort1.index(2)
4
>>> kort1.count(222)
1
>>> kort1[2]=90
Traceback (most recent call last):
File "<pyshell#185>", 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)])
>>> dic5=dict(zip(['A','B','C','Stroka'],[16,-3,9,ss1b]))
>>> dic4
{1: ['A', 'B', 'C'], 2: [4, 5], 'Q': 'Prim', 'Stroka': '=: \n Бережков Д. А.'}
>>> dic5
{'A': 16, 'B': -3, 'C': 9, 'Stroka': '=: \n Бережков Д. А.'}
>>> t = ("a", "b", "c", "d", "e", "f", "g")
>>> l = [1, 2, 3, 4, 5]
>>> d = dict(zip(t, l))
>>> d # Элементов в получившимся словаре - 5, т.к. zip() работает до конца самого короткого объекта
{'a': 1, 'b': 2, 'c': 3, 'd': 4, 'e': 5}
```
```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
{'двигатель', 'датчик', 'линия связи', 'реле', 'микропроцессор'}
>>> mnoz1.remove('линия связи')
>>> mnoz1
{'двигатель', 'датчик', 'реле', 'микропроцессор'}
>>> s = {1, "hello", True, 3.14, (2, 5)}
>>> s.add("Python")
>>> s
{1, 3.14, 'Python', (2, 5), 'hello'}
>>> s.remove(3.14)
>>> s
{1, 'Python', (2, 5), 'hello'}
```

@ -0,0 +1,26 @@
# Общее контрольное задание к ЛР2
Бережков Дмитрий А-01-23
## Задание:
Реализовать, записать в текстовый файл и проанализировать результаты последовательности инструкций
## Решение:
```py
familia='Berezhkov'
first_letter=familia[0]
first_letter
'B'
sp_kw=keyword.kwlist
print(sp_kw)
['False', 'None', 'True', 'and', 'as', 'assert', 'async', 'await', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'nonlocal', 'not', 'or', 'pass', 'raise', 'return', 'try', 'while', 'with', 'yield']
sp_kw.remove('nonlocal')
print(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=('Dmitriy','Alexandr','Victor','Ivan')
print(type(kort_nam))
<class 'tuple'>
kort_nam=kort_nam+('Dmitriy','Daniil')
print(kort_nam.count('Dmitriy'))
2
dict_bas={'строка':familia,'список':sp_kw,'кортеж':kort_nam}
print(dict_bas)
{'строка': 'Berezhkov', 'список': ['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'], 'кортеж': ('Dmitriy', 'Alexandr', 'Victor', 'Ivan', 'Dmitriy', 'Daniil')}
```

@ -0,0 +1,13 @@
# Индивидуальное контрольное задание (7) к лр2
Бережков Дмитрий А-01-23
## Задание:
Напишите инструкцию создания множества с 5 русскоязычными названиями фруктов.
Напишите инструкцию проверки вхождения фрукта «яблоко» в составе множества.
## Ответ:
```py
fruits = {"яблоко","банан","апельсин","лимон","помело"}
'яблоко' in fruits
True
```

@ -0,0 +1,572 @@
# Отчет по теме 3
Бережков Дмитрий, А-01-23
## Начало работы.
Запуск IDLE, установление рабочего каталога.
## 2. Преобразование простых базовых типов объектов.
2.1 Преобразование в логический тип с помощью функции bool.
```py
>>> logiz1=bool(56)
>>> logiz2=(0)
>>> logiz3=bool("Beta")
>>> logiz4=bool("")
>>> logiz1
True
>>>logiz2
0
>>> logiz3
True
>>> logiz4
False
```
2.2 Преобразование в целое десятичное число / в вещественное число.
```py
>>> tt1=int(198.6) #Отбрасывается дробная часть
>>> tt2=int("-76") #Число - встроке символов, система по умолчанию - десятичная
>>> tt3=int("B",16)
>>> tt4=int("71",8)
>>> tt5=int("98.76")
Traceback (most recent call last):
File "<pyshell#27>", 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 Преобразование десятичных чисел в другие системы счисления:
```py
>>> hh=123
>>> dv1=bin(hh) #Преобразование в строку с двоичным представлением
>>> vos1=oct(hh) # Преобразование в строку с восьмеричным представлением
>>> shs1=hex(hh) # Преобразование в строку с шестнадцатеричным представлением
>>> 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}) #Преобразование словаря в список
>>> spis1
['С', 'т', 'р', 'о', 'к', 'а', ' ', 'с', 'и', 'м', 'в', 'о', 'л', 'о', 'в']
>>> spis2
[124, 236, -15, 908]
>>> spis3
['A', 'B', 'C']
```
Придумал инструкцию, обеспечивающую создание из того же словаря списка с другими его частями:
```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')
```
3.4 Удаление объектов:
```py
>>> del strk5, kort8
>>> strk5
Traceback (most recent call last):
File "<pyshell#73>", line 1, in <module>
strk5
NameError: name 'strk5' is not defined. Did you mean: 'strk1'?
>>> kort8
Traceback (most recent call last):
File "<pyshell#74>", line 1, in <module>
kort8
NameError: name 'kort8' is not defined. Did you mean: 'kort7'?
```
Создал строку со своей фамилией и инициалами, преобразовал её в список, затем список в кортеж и, наконец кортеж в строку:
```py
>>> fio='Berezhkov D. A.'
>>> list_fio=list(fio)
>>> cort_fio=tuple(list_fio)
>>> str_fio=str(cort_fio)
>>> list_fio
['B', 'e', 'r', 'e', 'z', 'h', 'k', 'o', 'v', ' ', 'D', '.', ' ', 'A', '.']
>>> cort_fio
('B', 'e', 'r', 'e', 'z', 'h', 'k', 'o', 'v', ' ', 'D', '.', ' ', 'A', '.')
>>> str_fio
"('B', 'e', 'r', 'e', 'z', 'h', 'k', 'o', 'v', ' ', 'D', '.', ' ', 'A', '.')"
```
## 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'>
>>> d=54.54//2
>>> d
27.0
>>> type(d)
<class 'float'>
```
4.5 Получение остатка от деления:
```py
>>> 148%33 #Остаток от деления двух целых чисел
16
>>> 12.6%3.8 #Остаток от деления двух вещественных чисел
1.2000000000000002
>>> 1337.1337%54
41.13370000000009
```
4.6 Возведение в степень:
```py
>>> 14**3 #Целое число возводится в целую степень
2744
>>> e=2.7**3.6 #Вещественное число возводится в вещественную степень
>>> e
35.719843790663525
>>> 5**3.2
172.4662076826519
>>> (2+3j)**3
(-46+9j)
```
К комплексным числам можно применять следующие операции:
сложение
вычитание
умножение
деление
возведение в степень
и нельзя следующие:
1) целочисленное деление
```py
>>> k1=1+4j
>>> k2=8-3j
>>> k2//k1
Traceback (most recent call last):
File "<pyshell#112>", line 1, in <module>
k2//k1
```
(целочисленное деление требует целой части, не мнимой)
2) остаток от деления
```py
k1%k2
Traceback (most recent call last):
File "<pyshell#113>", line 1, in <module>
k1%k2
TypeError: unsupported operand type(s) for %: 'complex' and 'complex'
```
(остаток от деления основан на целочисленном делении, также работа с мнимой частью не предусмотрена)
## 5. Операции с двоичными представлениями целых чисел.
5.1 Двоичная инверсия:
```py
>>> dv1=9
>>> dv2=~dv1
>>> dv2
-10
```
Почему результат отрицательный - используется дополнительный код для представления отрицательных чисел
5.2 Двоичное «И»:
```py
>>> 7&9 # 111 и 1001 = 0001
1
>>> 7&8 # 111 и 1000 = 0000
0
```
5.3 Двоичное «ИЛИ»:
```py
>>> 7|9 # 111 или 1001 = 1111
15
>>> 7|8 # 111 или 1000 = 1111
15
>>> 14|5 # 1110 или 0101 = 1111
15
```
5.4 Двоичное исключающее "Или":
```py
14^5 # 1110 исключающее или 0101 = 1011
11
```
5.5 Двоичное исключающее "Или" (Влево или вправо):
```py
>>> h=14 #Двоичное представление = 1110
>>> g=h<<2 # Новое двоичное представление = 111000
>>> g1=h>>1 # Новое двоичное представление = 0111
>>> g2=h>>2 # Новое двоичное представление = 0011
>>> h
14
>>> bin(h)
'0b1110'
>>> g
56
>>> g1
7
>>> g2
3
```
Придумал два двоичных числа, не менее чем с 7 знаками, и попробовал выполнить с ними разные операции:
```py
>>> a=182
>>> b=107
>>> a&b
34
>>> a|b
255
>>> a^b
221
```
## 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 #Повторение строки 5 раз
'ля-ля-ля-ля-ля-'
>>> ['ку','-']*3 #Повторение списка 3 раза
['ку', '-', 'ку', '-', 'ку', '-']
>>> ('кис','-')*4 #Повторение кортежа 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+=5 # Значение zz увеличивается на 5
>>> zz
-7
>>> zz-=3 # Значение уменьшается на 3
>>> zz
-10
```
7.3 Умножение текущего значения переменной на заданную величину или деление:
```py
>>> zz/=2
>>> zz
-5.0
>>> zz*=5
>>> zz
-25.0
>>> xx=5
>>> xx*=3
>>> xx
15
>>> xx/=5
>>> xx
3.0
```
7.4 Операции деления с округлением вниз, получения остатка от деления и возведения в степень:
```py
>>> xx=5
>>> xx//=2
>>> xx
2
>>> xx=5
>>> xx%=2
>>> xx
1
>>> xx=5
>>> xx**=4
>>> xx
625
```
7.5 Множественное присваивание:
```py
>>> w=v=10 # Переменным присваивается одно и то же значение
>>> n1,n2,n3=(11,-3,'all') #Значения переменных берутся из кортежа
>>> w,v
(10, 10)
>>> n1,n2,n3
(11, -3, 'all')
```
Проверил можно ли использовать множественное присваивание с объектами: строка, список, кортеж, словарь:
```py
>>> n1,n2,n3='abc'
>>> n1,n2,n3
('a', 'b', 'c')
>>> n1,n2,n3=[11,-3,'all']
>>> n1,n2,n3
(11, -3, 'all')
>>> n1,n2,n3={11: 'a',3: 'b',5: 'c'}
>>> n1,n2,n3
(11, 3, 5)
>>> n1,n2,n3={'a','b','c'}
>>> n1,n2,n3
('b', 'a', 'c')
```
## 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
```
8.4 Проверка ссылок переменных на один и тот же объект:
```py
>>> w=v=10 #При таком присваивании переменные ссылаются на один и тот же объект в оперативной памяти
>>> w is v
True
>>> w1=['A','B']
>>> v1=['A','B']
>>> w1 is v1
False
```
В начале присваивания двум переменным w и v значения 10 мы храним обе переменные в одной ячейке памяти, затем мы по отдельности присвоили двум этим переменным списки, они хоть и одинаковые, но всё равно переменные по отдельности претерпели изменения, поэтому они хранятся в разных ячейках памяти.
## 9. Операции с объектами, выполняемые с помощью методов.
Полный список всех атрибутов любого объекта можно получить с использованием функции dir, например,
```py
>>> stroka='Микропроцессорная система управления'
>>> dir(stroka)
```
9.1 Методы для работы со строками:
```py
>>> stroka.find('пр') #Возвращает номер позиции первого вхождения указанного контекста
5
>>> stroka.count("с") #Подсчет числа вхождений строки “с” в stroka
4
>>> stroka.replace(' у',' автоматического у')
'Микропроцессорная система автоматического управления'
>>> spis22=stroka.split(' ') #Возвращает список подстрок, между которыми в строке стоит заданный разделитель
>>> spis22
['Микропроцессорная', 'система', 'управления']
>>> stroka.upper() #Возвращает строку со всеми заглавными буквами
'МИКРОПРОЦЕССОРНАЯ СИСТЕМА УПРАВЛЕНИЯ'
>>> stroka3=" ".join(spis22) #Возвращает строку, собранную из элементов списка
>>> stroka3.partition("с") #Возвращает кортеж с результатами поиска «с» слева
('Микропроце', 'с', 'сорная система управления')
>>> stroka3.rpartition("с") #Возвращает кортеж с результатами поиска «с» справа
('Микропроцессорная си', 'с', 'тема управления')
>>> strk1='Момент времени {}, значение = {}'
>>> strk1.format(1,89.7)
'Момент времени 1, значение = 89.7'
>>> strk2='Момент времени {1}, значение = {0}:{2}'
>>> strk2.format(36.7,2,'норма!')
'Момент времени 2, значение = 36.7:норма!'
>>> strk3='Момент времени {num}, значение = {znch}'
>>> strk3.format(znch=89.7,num=2)
'Момент времени 2, значение = 89.7'
```
9.2 Методы для работы со списками:
```py
>>> spsk = [1, 'A-01-23', 5.0, (1, 2, 3), True]
>>> dir(spsk)
['__add__', '__class__', '__class_getitem__', '__contains__', '__delattr__', '__delitem__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__getstate__', '__gt__', '__hash__', '__iadd__', '__imul__', '__init__', '__init_subclass__', '__iter__', '__le__', '__len__', '__lt__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__reversed__', '__rmul__', '__setattr__', '__setitem__', '__sizeof__', '__str__', '__subclasshook__', 'append', 'clear', 'copy', 'count', 'extend', 'index', 'insert', 'pop', 'remove', 'reverse', 'sort']
>>> spsk.pop(2)
5.0
>>> spsk
[1, 'A-01-23', (1, 2, 3), True]
>>> spsk.append('c')
>>> spsk
[1, 'A-01-23', (1, 2, 3), True, 'c']
>>> spsk.insert(2,'a')
>>> spsk
[1, 'A-01-23', 'a', (1, 2, 3), True, 'c']
>>> spsk.count('a')
1
```
9.3 Создание кортежа и изучение применение его методов:
```py
>>> my_tuple = ('str', 20, (1, 2, 3), True)
>>> my_tuple.count(20)
1
>>> my_tuple.index(True) # позиция True в кортеже
3
```
9.4 Изучение методов словарей и множеств:
```py
>>> student = {
"name": "Dima",
"age": 20,
"city": "Moscow",
"courses": ["Math", "Physics"],
"sr": 3.01
}
>>> student.get("name")
'Dima'
>>> student.keys()
dict_keys(['name', 'age', 'city', 'courses', 'sr'])
>>> student.values()
dict_values(['Dima', 20, 'Moscow', ['Math', 'Physics'], 3.01])
>>> student["sr"] = 4.1
>>> student
{'name': 'Dima', 'age': 20, 'city': 'Moscow', 'courses': ['Math', 'Physics'], 'sr': 4.1}
>>> 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,75 @@
# Общее контрольное задание.
Бережков Дмитрий А-01-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 = {"усиление":23, "запаздывание":12, "постоянная времени":78}
>>> 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
>>> task7 = "Создать объект - символьную строку с текстом данного предложения"
>>> 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,55 @@
# Выполнение модуля 1 (Вар 20).
Бережков Д. А., А-01-23
## Задание:
M1_20
1) Какое назначение имеют демонстрационные примеры в системе помощи?
2) Создайте объект-список с числовыми четными целыми значениями от -10 до +26. Напишите инструкцию, доказывающую, что создан объект именно требуемого типа. Напишите инструкцию отображения списка атрибутов созданного объекта.
3) Напишите инструкцию, позволяющую определить число элементов в созданном списке. Напишите инструкции, заменяющие первое значение в списке на -1000, а последнее - на +1000. Отобразите получившийся объект.
4) Напишите инструкцию, вставляющую в список на 4-ю позицию от начала число 123. Удлините список за счет его повторения ещё два раза. Отобразите получившийся объект. Подсчитайте число элементов в получившемся списке.
5) Преобразуйте список в кортеж. Создайте два кортежа, содержащих, соответственно первую и вторую половину элементов из исходного кортежа. Отобразите созданные объекты.
## 1.
Демонстрационные примеры предназначены для практического изучения возможностей языка и среды на готовых работающих фрагментах кода.
## 2.
```py
>>> obsp=list(range(-10,26,2))
>>> type(obsp)
<class 'list'>
>>> dir(obsp)
['__add__', '__class__', '__class_getitem__', '__contains__', '__delattr__', '__delitem__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__getstate__', '__gt__', '__hash__', '__iadd__', '__imul__', '__init__', '__init_subclass__', '__iter__', '__le__', '__len__', '__lt__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__reversed__', '__rmul__', '__setattr__', '__setitem__', '__sizeof__', '__str__', '__subclasshook__', 'append', 'clear', 'copy', 'count', 'extend', 'index', 'insert', 'pop', 'remove', 'reverse', 'sort']
```
## 3.
```py
>>> kol_elem=len(obsp)
>>> kol_elem
18
>>> obsp[0]=-1000
>>> obsp[-1]=1000
>>> obsp
[-1000, -8, -6, -4, -2, 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 1000]
```
## 4.
```py
>>> obsp.insert(3,123)
>>> long_l=obsp*3
>>> long_l
[-1000, -8, -6, 123, -4, -2, 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 1000, -1000, -8, -6, 123, -4, -2, 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 1000, -1000, -8, -6, 123, -4, -2, 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 1000]
>>> len(long_l)
57
```
## 5.
```py
>>> kurt_n=tuple(long_l)
>>> mid=len(kurt_n)//2
>>> f_half=kurt_n[:mid]
>>> s_half=kurt_n[mid:]
>>> f_half
(-1000, -8, -6, 123, -4, -2, 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 1000, -1000, -8, -6, 123, -4, -2, 0, 2, 4)
>>> s_half
(6, 8, 10, 12, 14, 16, 18, 20, 22, 1000, -1000, -8, -6, 123, -4, -2, 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 1000)
```

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

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

После

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

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

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

После

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

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

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

После

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

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

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

После

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

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

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

После

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

@ -0,0 +1,305 @@
# Отчет по теме 4
Бережков Дмитрий, А-01-23
## 1.Начало работы, настройка текущего каталога
```py
>>> import os
>>> os.chdir('C:\\MPEI\\PO_ASY\\BerezhkovGit\\python-labs\\Tema4')
```
## 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
>>> round(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 - создание последовательности целых чисел с заданным шагом или, по умолчанию, с шагом 1:
```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, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22]
Границы: [0, 23)
Шаг: 1
2.3 Функция zip-создание общего объекта, элементами которого являются кортежи:
```py
>>> qq=['Berezhkov','Stepanischev','Tabolin','Krishtul']
>>> ff=zip(gg,qq)
>>> fff = tuple(ff)
>>> print(fff)
((76, 'Berezhkov'), (85, 'Stepanischev'), (94, 'Tabolin'), (103, 'Krishtul'))
>>> print(len(fff))
4
>>> len(gg), len(qq)
(6, 4)
>>> ff[0]
Traceback (most recent call last):
File "<pyshell#34>", line 1, in <module>
ff[0]
TypeError: 'zip' object is not subscriptable
```
Невозможно обратиться с указанием индекса, потому что объект является итерируемым.
2.4 Функция eval– вычисление значения выражения:
```py
>>> fff=float(input('коэффициент усиления=')); dan=eval('5*fff-156')
коэффициент усиления=3
>>> dan
-141.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(-13)
13
>>> pow(2,4)
16
>>> max(42,54,33)
54
>>> min(1,3,5)
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', 'fma', 'fmod', 'frexp', 'fsum', 'gamma', 'gcd', 'hypot', 'inf', 'isclose', 'isfinite', 'isinf', 'isnan', 'isqrt', 'lcm', 'ldexp', 'lgamma', 'log', 'log10', 'log1p', 'log2', 'modf', 'nan', 'nextafter', 'perm', 'pi', 'pow', 'prod', 'radians', 'remainder', 'sin', 'sinh', 'sqrt', 'sumprod', 'tan', 'tanh', 'tau', 'trunc', 'ulp']
>>> help(math.factorial)
Help on built-in function factorial in module math:
factorial(n, /)
Find n!.
Raise a ValueError if x is negative or non-integral.
>>> math.factorial(5)
120
```
3.1 Функции sin, acos, degrees, radians, exp, log, log10, sqrt, ceil, floor, pi:
```py
>>> math.sin(90)
0.8939966636005579
>>> math.acos(0)
1.5707963267948966
>>> math.degrees(math.pi)
180.0
>>> math.radians(180)
3.141592653589793
>>> math.exp(4)
54.598150033144236
>>> 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
```
3.2 Вычисление значения функции sin(2π/7+e0.23 ):
```py
>>> math.sin((2*math.pi/7) + math.exp(0.23))
0.8334902641414562
```
## 4. Функции из модуля cmath:
```py
>>> import cmath
>>> dir(cmath)
['__doc__', '__loader__', '__name__', '__package__', '__spec__', 'acos', 'acosh', 'asin', 'asinh', 'atan', 'atanh', 'cos', 'cosh', 'e', 'exp', 'inf', 'infj', 'isclose', 'isfinite', 'isinf', 'isnan', 'log', 'log10', 'nan', 'nanj', 'phase', 'pi', 'polar', 'rect', 'sin', 'sinh', 'sqrt', 'tan', 'tanh', 'tau']
>>> cmath.sqrt(1.2-0.5j)
(1.118033988749895-0.22360679774997896j)
>>> cmath.phase(1-0.5j)
-0.4636476090008061
```
## 5. Стандартный модуль random – совокупность функций для выполнения операций с псевдослучайными числами и выборками.
```py
>>> import random
>>> dir(random)
['BPF', 'LOG4', 'NV_MAGICCONST', 'RECIP_BPF', 'Random', 'SG_MAGICCONST', 'SystemRandom', 'TWOPI', '_ONE', '_Sequence', '__all__', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', '_accumulate', '_acos', '_bisect', '_ceil', '_cos', '_e', '_exp', '_fabs', '_floor', '_index', '_inst', '_isfinite', '_lgamma', '_log', '_log2', '_os', '_parse_args', '_pi', '_random', '_repeat', '_sha512', '_sin', '_sqrt', '_test', '_test_generator', '_urandom', 'betavariate', 'binomialvariate', 'choice', 'choices', 'expovariate', 'gammavariate', 'gauss', 'getrandbits', 'getstate', 'lognormvariate', 'main', 'normalvariate', 'paretovariate', 'randbytes', 'randint', 'random', 'randrange', 'sample', 'seed', 'setstate', 'shuffle', 'triangular', 'uniform', 'vonmisesvariate', 'weibullvariate']
>>> help(random.seed)
Help on 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()
random.random() # вещественное число от 0.0 до 1.0
0.022635313373460364
random.uniform(5, 15) # вещественное число от 5.0 до 15.0
5.363612111162993
random.randint(1, 100) # целое число от 1 до 100
2
random.gauss(0, 1) # mu - среднее значение, sigma - стандартное отклонение
0.8104264223845308
random.choice([1, 2, 3, 4]) # случайный выбор элемента из списка, кортежа, строки и т.д.
1
Num = [1, 2, 3, 4]
random.shuffle(Num)
Num
[2, 1, 4, 3]
random.sample(Num, 2) # случайный выбор двух элементов из Num
[3, 1]
random.betavariate(2, 5) # случайное число с плавающей точкой на основе бета-распределения
0.3506592878950909
random.gammavariate(2, 1) # случайное число с плавающей точкой на основе гамма-распределения
3.755676054491517
```
## 6. Функции из модуля time – работа с календарем и со временем.
```py
>>> import time
>>> dir(time)
['_STRUCT_TM_ITEMS', '__doc__', '__loader__', '__name__', '__package__', '__spec__', 'altzone', 'asctime', 'ctime', 'daylight', 'get_clock_info', 'gmtime', 'localtime', 'mktime', 'monotonic', 'monotonic_ns', 'perf_counter', 'perf_counter_ns', 'process_time', 'process_time_ns', 'sleep', 'strftime', 'strptime', 'struct_time', 'thread_time', 'thread_time_ns', 'time', 'time_ns', 'timezone', 'tzname']
>>> c1=time.time()
>>> c2=time.time()-c1
>>> c1
1761120933.7341516
>>> c2
5.980855703353882
>>> dat=time.gmtime()
>>> dat
time.struct_time(tm_year=2025, tm_mon=10, tm_mday=22, tm_hour=8, tm_min=16, tm_sec=5, tm_wday=2, tm_yday=295, tm_isdst=0)
>>> dat.tm_mon
10
>>> time.asctime((2025, 10, 13, 20, 13, 54, 1, 345, 0)) #год, месяц, день, час, минута, секунда, день недели, день года, летнее время
'Tue Oct 13 20:13:54 2025'
>>> time.ctime(time.time())
'Wed Oct 22 11:19:57 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 0x000001890FC94910>]
>>> 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 0x000001890FD35450>]
>>> pylab.plot(X2)
[<matplotlib.lines.Line2D object at 0x000001890FD35590>]
>>> pylab.show()
```
Отображение графика:
<image src="figure2.png">
```py
>>> region=['Центр','Урал','Сибирь','Юг'] #Метки для диаграммы
>>> naselen=[65,12,23,17] # Значения для диаграммы
>>> pylab.pie(naselen,labels=region) #Создание диаграммы в памяти
([<matplotlib.patches.Wedge object at 0x000001890E333E00>, <matplotlib.patches.Wedge object at 0x000001890F4DF110>, <matplotlib.patches.Wedge object at 0x000001890F4DF4D0>, <matplotlib.patches.Wedge object at 0x000001890F4DF750>], [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)
<BarContainer object of 4 artists>
>>> pylab.title('Население по регионам')
Text(0.5, 1.0, 'Население по регионам')
>>> pylab.ylabel('Население (млн)')
Text(0, 0.5, 'Население (млн)')
>>> pylab.show()
```
Отбражение диаграммы:
<image src="figure4.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="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,51 @@
# Общее контрольное задание.
Бережков Дмитрий А-01-23
## Задание:
Реализовать, записать в текстовый файл и проанализировать результаты последовательности инструкций, выполняющих следующие действия:
## Выполнение:
• Напишите и исполните единое выражение, реализующее последовательное выполнение следующих операций: вычисление фазы комплексного числа 0.2+0.8j, округление результата до двух знаков после запятой, умножение полученного значения на 20, получение кортежа из двух значений: округленное вниз значение от деления результата на 3 и остатка от этого деления.
```py
>>> import cmath
>>> import math
>>> import time
>>> import random
>>> import string
>>> print(divmod((round(cmath.phase(0.2+0.8j), 2))*20, 3))
(8.0, 2.6000000000000014)
```
• Создайте объект класса struct_time с временными параметрами для текущего московского времени. Создайте строку с текущим часом и минутами.
```py
>>> moscow_time = time.localtime()
>>> string_with_time = f"{moscow_time.tm_hour}:{moscow_time.tm_min}"
>>> print(string_with_time)
12:38
```
• Создайте список с элементами – названиями дней недели. Сделайте случайную выборку из этого списка с тремя днями недели.
```py
>>> days_of_week = ['Понедельник', 'Вторник', 'Среда', 'Четверг', 'Пятница', 'Суббота', 'Воскресенье']
>>> print(random.sample(days_of_week, 3))
['Вторник', 'Суббота', 'Понедельник']
```
• Напишите инструкцию случайного выбора числа из последовательности целых чисел от 14 до 32 с шагом 3.
```py
>>> numbers = list(range(14, 33, 3))
>>> print(random.choice(numbers))
32
```
• Сгенерируйте нормально распределенное число N с математическим ожиданием 15 и стандартным отклонением 4 и округлите его до целого значения. Создайте список с N элементами – случайно выбранными буквами латинского алфавита.
```py
>>> N = round(random.normalvariate(15, 4))
>>> N
13
N_list = random.choices(string.ascii_uppercase, k=N)
>>> print(N_list)
['A', 'L', 'C', 'N', 'Z', 'K', 'O', 'F', 'W', 'V', 'I', 'T', 'M']
```
• Напишите инструкцию для определения временного интервала в минутах, прошедшего с момента предыдущего (из п.2) определения временных параметров.
```py
>>> current_time = time.time()
>>> previous_time = time.mktime(moscow_time)
>>> time_interval_minutes = (current_time - previous_time) / 60
>>> print(time_interval_minutes)
10.002429103851318
```

@ -0,0 +1,23 @@
# Индивидуальное контрольное задание, тема 4(вар15).
Бережков Дмитрий А-01-23
## Задание:
Напишите инструкцию, создающую переменную, значение которой равно зафиксированному времени начала ответа в секундах от начала эпохи. Создайте список с целочисленными значениями, равномерно размещенными в диапазоне от -37 до 62 с шагом 11. Определите число элементов в списке. Случайным образом выберите один элемент из этого списка и рассчитайте для него значение синуса, округленное до трех цифр после точки. Выведите результат в виде строки: «Синус элемента <значение> равен <значение>».
## Выполнение:
```py
>>> import time
>>> vrem=time.time()
>>> print(vrem)
1761294005.023787
>>> sp1=range(-37,63,11)
>>> print(list(sp1))
[-37, -26, -15, -4, 7, 18, 29, 40, 51, 62]
>>> len(sp1)
10
>>> rnd=random.choice(sp1)
>>> print(rnd)
-37
>>> print(round(math.sin(rnd),3))
0.644
>>> print('Синус элемента',rnd,'равен', round(math.sin(rnd),3))
Синус элемента -37 равен 0.644
```
Загрузка…
Отмена
Сохранить