From 82f210a62bd1a68c800b25ab037ef3cf83db3b4e Mon Sep 17 00:00:00 2001 From: u207-05 Date: Fri, 5 Sep 2025 06:08:45 -0700 Subject: [PATCH 01/24] Task_1: First commit --- TEMA1/report.md | 0 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 TEMA1/report.md diff --git a/TEMA1/report.md b/TEMA1/report.md new file mode 100644 index 0000000..e69de29 From e91ec0837f205283689cbcf8bb8c7aa39ae0ee77 Mon Sep 17 00:00:00 2001 From: u207-05 Date: Fri, 5 Sep 2025 07:53:19 -0700 Subject: [PATCH 02/24] Task_2: report v1 --- TEMA1/Pr0.py | 6 +++ TEMA1/pic1.png | Bin 0 -> 40032 bytes TEMA1/pic2.png | Bin 0 -> 42802 bytes TEMA1/report.md | 124 ++++++++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 130 insertions(+) create mode 100644 TEMA1/Pr0.py create mode 100644 TEMA1/pic1.png create mode 100644 TEMA1/pic2.png diff --git a/TEMA1/Pr0.py b/TEMA1/Pr0.py new file mode 100644 index 0000000..7304066 --- /dev/null +++ b/TEMA1/Pr0.py @@ -0,0 +1,6 @@ +#This is a very profound comment +#Программа по Теме 1 Савин С.А. +print('Hello') +h = input('Your name is -') +import os +os.chdir(r'C:\Users\u207-05\python-labs\TEMA1') diff --git a/TEMA1/pic1.png b/TEMA1/pic1.png new file mode 100644 index 0000000000000000000000000000000000000000..04c829b4e718b157a13968fc52b343aa8fef2364 GIT binary patch literal 40032 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 ZXJmGkzPW7Gb{9}f-qY33Wt~$(698ym3LXFe literal 0 HcmV?d00001 diff --git a/TEMA1/report.md b/TEMA1/report.md index e69de29..269f46f 100644 --- a/TEMA1/report.md +++ b/TEMA1/report.md @@ -0,0 +1,124 @@ +# Отчет по ЛР1 Савин С.А. + + + +## Пункты3-5 +Через командную строку вы +```py +print('Hello') +h=input('Your name is -') +Hello +Your name is -sam +exit() +``` +Программа закрыта (Вся командная строка) + +## Пункт 8: +```py +import os +os.chdir(r'C:\Users\u207-05\python-labs\TEMA1') +``` + +## Пункт 9: +Были изменены параметры текста в редакторе при помощи меню "Options" + +## Пункт 10: +Создан новый файл в редакторе написано: +```py +#This is a very profound comment +#Программа по Теме 1 Савин С.А. +print('Hello') +h = input('Your name is -') +import os +os.chdir(r'C:\Users\u207-05\python-labs\TEMA1') +``` +Модуль запущен +### Вывод: +```py += RESTART: C:/Users/u207-05/python-labs/TEMA1/Pr0.py +Hello +Your name is -sam +``` +Последняя команда выбора рабочей папки выполнена без ошибок. + +Также файл был выполнен следующим образом: +```py +import Pr0 +Hello +Your name is -sam +``` +И аналогично через клавишу F5 в открытом редакторе. + +## Пункт 11: +При помощи повторного вызова команды import вставили имя файла - "prb1" +```py +import prb1 +Как Вас зовут? Семён +Привет, Семён +``` + +## Пункт 12: +В папке __pycache__ нашел файл +pr0.cpython-311, открыл при помощи notepad++ +Содержимое: +§ + + №йєhВ г  уZ —  e d ¦ «   ed¦ « ZddlZ ej d¦ «  dS )ЪHellozYour name is -й Nz"C:\Users\u207-05\python-labs\TEMA1)ЪprintЪinputЪhЪosЪchdir© у ъ)C:\Users/u207-05/python-labs/TEMA1\Pr0.pyъr  sF рр ЂЂgЃ„ЂШ ЂEР +СФЂШ Ђ Ђ Ђ Ш Ђ„Р .С /Ф /Р /Р /Р /r + +Это резльтат компиляции, который выглядит так по причине того, что в данной папке хранятся байт-коды, используемые при запуске программы для увеличения оптимизации. + +## Пункт 13: +Пропущен по причине уже созданного файла report.md. + +## Пункт 14: +Вызвана команда help по нескольким функциям. +help(print) +Help on built-in function print in module builtins: + +print(*args, sep=' ', end='\n', file=None, flush=False) + Prints the values to a stream, or to sys.stdout by default. + + sep + string inserted between values, default a space. + end + string appended after the last value, default a newline. + file + a file-like object (stream); defaults to the current sys.stdout. + flush + whether to forcibly flush the stream. + +help(print),help(input) +Help on built-in function print in module builtins: + +print(*args, sep=' ', end='\n', file=None, flush=False) + Prints the values to a stream, or to sys.stdout by default. + + sep + string inserted between values, default a space. + end + string appended after the last value, default a newline. + file + a file-like object (stream); defaults to the current sys.stdout. + flush + whether to forcibly flush the stream. + +Help on built-in function input in module builtins: + +input(prompt='', /) + Read a string from standard input. The trailing newline is stripped. + + The prompt string, if given, is printed to standard output without a + trailing newline before reading input. + + If the user hits EOF (*nix: Ctrl-D, Windows: Ctrl-Z+Return), raise EOFError. + On *nix systems, readline is used if available. +Также была найдена запись о функции print() через f1 +## Пункт 15: +Были снова выполнены файлы из рабочей папки, проведена работа с окнами. +Результат работы tdemo_chaos: + +![C:\Users\u207-05\python-labs\TEMA1](pic1.png) + +Результат работы часов clock из примеров для демо: + From be2feb4df886b780b6cb9955f07233f04dc65e36 Mon Sep 17 00:00:00 2001 From: u207-05 Date: Fri, 5 Sep 2025 07:55:12 -0700 Subject: [PATCH 03/24] Task_2 reporn v2 --- TEMA1/report.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/TEMA1/report.md b/TEMA1/report.md index 269f46f..38660a7 100644 --- a/TEMA1/report.md +++ b/TEMA1/report.md @@ -118,7 +118,8 @@ input(prompt='', /) Были снова выполнены файлы из рабочей папки, проведена работа с окнами. Результат работы tdemo_chaos: -![C:\Users\u207-05\python-labs\TEMA1](pic1.png) +![Демонстрация хаоса](pic1.png) Результат работы часов clock из примеров для демо: +![Часы](pic2.png) \ No newline at end of file From 092d7820f229a3e885ba2b7a6766252504edde17 Mon Sep 17 00:00:00 2001 From: u207-05 Date: Fri, 5 Sep 2025 08:05:19 -0700 Subject: [PATCH 04/24] v3 --- TEMA1/report.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/TEMA1/report.md b/TEMA1/report.md index 38660a7..dc31d94 100644 --- a/TEMA1/report.md +++ b/TEMA1/report.md @@ -1,6 +1,6 @@ -# Отчет по ЛР1 Савин С.А. - +# Отчет по теме 1 +Савин Семён, А-02-23 ## Пункты3-5 Через командную строку вы From ee7055033d5aa2be1ed69ea1bcf6a2b48a7e571f Mon Sep 17 00:00:00 2001 From: u207-05 Date: Fri, 5 Sep 2025 08:08:38 -0700 Subject: [PATCH 05/24] report v3 --- TEMA1/report.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/TEMA1/report.md b/TEMA1/report.md index dc31d94..7033e83 100644 --- a/TEMA1/report.md +++ b/TEMA1/report.md @@ -2,6 +2,8 @@ Савин Семён, А-02-23 +# Основы языка программирования Python + ## Пункты3-5 Через командную строку вы ```py From 3eee856b82034f9d7e0b0401560194f3a8d5872f Mon Sep 17 00:00:00 2001 From: u207-05 Date: Fri, 5 Sep 2025 08:20:33 -0700 Subject: [PATCH 06/24] Task_3: Q&A --- TEMA1/test.md | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 TEMA1/test.md diff --git a/TEMA1/test.md b/TEMA1/test.md new file mode 100644 index 0000000..8e1ded2 --- /dev/null +++ b/TEMA1/test.md @@ -0,0 +1,11 @@ +# Общее контрольное задание по теме 1 + +Савин Семён, А-02-23 + +## Вопрос 3 + +Что означает название интерактивной оболочки IDLE? + +## Ответ + +Integrated Development and Learning Environment (Интегрированная среда разработки и обучения) \ No newline at end of file From 17841b48b218a4b8a2218647614a773ba9bd97f2 Mon Sep 17 00:00:00 2001 From: SavinSA Date: Mon, 15 Sep 2025 00:02:40 +0300 Subject: [PATCH 07/24] TEMA2 report v1 --- TEMA2/report.md | 529 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 529 insertions(+) create mode 100644 TEMA2/report.md diff --git a/TEMA2/report.md b/TEMA2/report.md new file mode 100644 index 0000000..983067a --- /dev/null +++ b/TEMA2/report.md @@ -0,0 +1,529 @@ +# Отчет по Теме 2 + +Савин Семён, А-02-23 + +## Пункт 2. Изучение простых объектов + +Переменным f1 и f2 были присвоены значения (целые числа). +```py +>>> import os +>>> os.chdir ('C:\\Users\\somas\\python-labs\\TEMA2') +>>> f1 = 16; f2 = 3 +>>> f1, f2 +(16, 3) +>>> f1;f2 +16 +3 +``` + +Проверяем, какие объекты есть в среде python, а также выводим атрибуты для переменной f1. +```py +>>> dir() +['__annotations__', '__builtins__', '__doc__', '__loader__', '__name__', '__package__', '__spec__', 'f1', 'f2', 'os'] +>>> dir(f1) +['__abs__', '__add__', '__and__', '__bool__', '__ceil__', '__class__', '__delattr__', '__dir__', '__divmod__', '__doc__', '__eq__', '__float__', '__floor__', '__floordiv__', '__format__', '__ge__', '__getattribute__', '__getnewargs__', '__gt__', '__hash__', '__index__', '__init__', '__init_subclass__', '__int__', '__invert__', '__le__', '__lshift__', '__lt__', '__mod__', '__mul__', '__ne__', '__neg__', '__new__', '__or__', '__pos__', '__pow__', '__radd__', '__rand__', '__rdivmod__', '__reduce__', '__reduce_ex__', '__repr__', '__rfloordiv__', '__rlshift__', '__rmod__', '__rmul__', '__ror__', '__round__', '__rpow__', '__rrshift__', '__rshift__', '__rsub__', '__rtruediv__', '__rxor__', '__setattr__', '__sizeof__', '__str__', '__sub__', '__subclasshook__', '__truediv__', '__trunc__', '__xor__', 'as_integer_ratio', 'bit_length', 'conjugate', 'denominator', 'from_bytes', 'imag', 'numerator', 'real', 'to_bytes'] +``` +Выводим класс переменной f2 и удаляем обе переменные с проверкой удаления. + +```py +>>> type (f2) + +>>> del f1,f2 +>>> f1,f2 +Traceback (most recent call last): + File "", line 1, in + f1,f2 +NameError: name 'f1' is not defined +>>> f2 +Traceback (most recent call last): + File "", line 1, in + f2 +NameError: name 'f2' is not defined +``` + +## Пункт 3. Правила именования объектов +Создал несколько переменных разных типов, а также с неверным названием. +```py +>>> ggl = 1.6 +>>> hhl = 'Строка' +>>> 73sr = 3 +SyntaxError: invalid syntax +>>> and = 7 +SyntaxError: invalid syntax +``` +## Пункт 4. Просмотр ключевых слов + +Был выведен и сохранен в переменной keylist список ключевых слов. +```py +>>> keyword.kwlist +['False', 'None', 'True', '__peg_parser__', 'and', 'as', 'assert', 'async', 'await', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'nonlocal', 'not', 'or', 'pass', 'raise', 'return', 'try', 'while', 'with', 'yield'] +>>> keylist = keyword.kwlist +>>> keylist +['False', 'None', 'True', '__peg_parser__', 'and', 'as', 'assert', 'async', 'await', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'nonlocal', 'not', 'or', 'pass', 'raise', 'return', 'try', 'while', 'with', 'yield'] +``` + +## Пункт 5. Просмотр встроенных идентификаторов + +Получен список встроенных идентификаторов + +>>> import builtins +>>> dir(builtins) +['ArithmeticError', 'AssertionError', 'AttributeError', 'BaseException', 'BlockingIOError', 'BrokenPipeError', 'BufferError', 'BytesWarning', 'ChildProcessError', 'ConnectionAbortedError', 'ConnectionError', 'ConnectionRefusedError', 'ConnectionResetError', 'DeprecationWarning', 'EOFError', 'Ellipsis', 'EnvironmentError', 'Exception', 'False', 'FileExistsError', 'FileNotFoundError', 'FloatingPointError', 'FutureWarning', 'GeneratorExit', 'IOError', 'ImportError', 'ImportWarning', 'IndentationError', 'IndexError', 'InterruptedError', 'IsADirectoryError', 'KeyError', 'KeyboardInterrupt', 'LookupError', 'MemoryError', 'ModuleNotFoundError', 'NameError', 'None', 'NotADirectoryError', 'NotImplemented', 'NotImplementedError', 'OSError', 'OverflowError', 'PendingDeprecationWarning', 'PermissionError', 'ProcessLookupError', 'RecursionError', 'ReferenceError', 'ResourceWarning', 'RuntimeError', 'RuntimeWarning', 'StopAsyncIteration', 'StopIteration', 'SyntaxError', 'SyntaxWarning', 'SystemError', 'SystemExit', 'TabError', 'TimeoutError', 'True', 'TypeError', 'UnboundLocalError', 'UnicodeDecodeError', 'UnicodeEncodeError', 'UnicodeError', 'UnicodeTranslateError', 'UnicodeWarning', 'UserWarning', 'ValueError', 'Warning', 'WindowsError', 'ZeroDivisionError', '_', '__build_class__', '__debug__', '__doc__', '__import__', '__loader__', '__name__', '__package__', '__spec__', 'abs', 'all', 'any', 'ascii', 'bin', 'bool', 'breakpoint', 'bytearray', 'bytes', 'callable', 'chr', 'classmethod', 'compile', 'complex', 'copyright', 'credits', 'delattr', 'dict', 'dir', 'divmod', 'enumerate', 'eval', 'exec', 'exit', 'filter', 'float', 'format', 'frozenset', 'getattr', 'globals', 'hasattr', 'hash', 'help', 'hex', 'id', 'input', 'int', 'isinstance', 'issubclass', 'iter', 'len', 'license', 'list', 'locals', 'map', 'max', 'memoryview', 'min', 'next', 'object', 'oct', 'open', 'ord', 'pow', 'print', 'property', 'quit', 'range', 'repr', 'reversed', 'round', 'set', 'setattr', 'slice', 'sorted', 'staticmethod', 'str', 'sum', 'super', 'tuple', 'type', 'vars', 'zip'] + +Получена помощь по нескольким из них. Также были опробованы несколько функций +abs - модуль от числа +max/min - вывод максимального/минимального числа для либо списка либо для нескольких перечисленных переменных +len - выводит кол-во объектов в контейнере +pow - возводит число в степень +round - округляет число +sum - дает сумму всех элементов в контейнере +sorted - сортирует по возрастанию элементы в контейнере +zip - "сшивает" значения из одной последовательности значений с соответвтвующими значениями из другой + +```py +>>> x = -3 +>>> abs(x) +3 +>>> pow(x,2) +9 +>>> x = 1.576 +>>> round(x) +2 +>>> x = 1.50 +>>> round(x) +2 +``` + +## Пункт 6. Значимость регистра + +При присваивании имен переменным важен также регистр букв. + +```py +>>> x = 1.576 +>>> round(x) +2 +>>> x = 1.50 +>>> round(x) +2 +``` + +## Пункт 7. Изучение простых базовых типов. + +## 7.1. Логический тип + +```py +>>> bb1 = True; bb2 = False +>>> bb1,bb2 +(True, False) +>>> type(bb1) + +``` + +## 7.2. Другие простые типы + +Изучены некоторые другие типы числовых переменных + +```py +>>> ii1 = -1234567890 +>>> type(ii1) + +>>> ff1 = -8.9876e-12 +>>> type(ff1) + +>>> dv1 = 0b1101010 +>>> type(dv1) + +>>> vsm1 = 0o52765 +>>> shest1 = 0x7109af6 +>>> ccl = 2-3j +>>> a = 3.67; b = -0.45 +>>> cc2 = complex(a,b) +>>> cc2 +(3.67-0.45j) +>>> type(cc2) + +``` + +## 7.3. Строка + +Также изучили разные способы вывода простой строки с помощью "экранированных последовательностей" + +```py +>>> ss1 = 'this is a string' +>>> print(ss1) +this is a string +>>> ss1a = "this is a \" string \", \n \t printed on two lines" +>>> print(ss1a) +this is a " string ", + printed on two lines +>>> ss1b = "my name is: \n Savin S.A." +>>> print(ss1b) +my name is: + Savin S.A. +``` + +Также вывели многострочное предложение с помощью тройных кавычек + +```py +>>> mnogo="""Нетрудно заметить , что в результате операции +над числами разных типов получается число, +имеющее более сложный тип из тех, которые участвуют в операции.""" +>>> print(mnogo) +Нетрудно заметить , что в результате операции +над числами разных типов получается число, +имеющее более сложный тип из тех, которые участвуют в операции. +``` + +Изучил действия со сторокой - вывд определенных букв по индексу в строке, а так же разрезание строки(с шагами 1 и 2) + +```py +>>> ss1[0] +'t' +>>> ss1[8] +'a' +>>> ss1[-2] +'n' +>>> ss1[6:9] +'s a' +>>> ss1[13:] +'ing' +>>> ss1[5:-8] +'is ' +>>> ss1[3:17:2] +'si tig' +>>> ss1[17:3:-2] +'git i' +>>> ss1[-4:3:-2] +'rsas ' +``` +(Изначальная строка - this is a string) + +При изменении строки случается ошибка - так как строка неизменяема. Однако при переопределении можно внести изменения. + +```py +>>> ss1[4] = '=' +Traceback (most recent call last): + File "", line 1, in + ss1[4] = '=' +TypeError: 'str' object does not support item assignment +>>> ss1 = ss1[:4] + '+' + ss1[5:] +>>> ss1 +'this+is a string' +``` + +Самостоятельно поработал со строкой ss1b - двухстрочное предложение. А также удалил старые значения x,y, заменив на другие. +Проверил их тип. + +```py +>>> ss1b[4:17:2] +'aei:\nSv' +>>> ss1b[16:] +'vin S.A.' +>>> ss1b[14:] +'Savin S.A.' +>>> del x +>>> del y +>>> x = True +>>> y = 14-5j +>>> type(x);type(y) + + +``` + +## Пункт 8. Изучение более сложных типов. + +## 8.1. Список + +Работа со списками - можно задать любые значение и типы. Список - упорядоченная коллекция объектов. +```py +>>> spis1 = [111,'spisok', 5-9j] +>>> spis1 +[111, 'spisok', (5-9j)] +>>> stup=[0,0,1,1,1,1,1,1,1] +>>> stup +[0, 0, 1, 1, 1, 1, 1, 1, 1] +>>> spis = [1,2,3,4, + 5,6,7,8, + 9,10] +>>> spis +[1, 2, 3, 4, 5, 6, 7, 8, 9, 10] +``` +Также по индексу можно сослаться на определенные элементы. Или перечислить с некоторым шагом. + +```py +>>> spis[-1] +10 +>>> stup[-8::2] +[0, 1, 1, 1] +>>> spis[-9::2] +[2, 4, 6, 8, 10] +``` + +Списки можно изменять, меняя элементы и переписывая их. + +```py +>>> spis1[1] = 'Список' +>>> spis1 +[111, 'Список', (5-9j)] +``` + +len(...) возвращает длину списка(количестево элементов в контейнере) +spis1.append(элемент) добавляет элемент в конец списка +spis1+[элемент] - добавляет элемент на вывод 1 раз. Не вписывает этот элемент в список +spis1.pop(индекс элемента) - удаляет элемент с указанным индексом +spis1.reverse - переворачивает список +spis1.insert(индекс, элемент) - вставляет элемент после элемента с указанным индексом +spis1.extend(список) - присоединяет в конец другой список +spis1.remove(элемент) - удаляет первый встреченный элемент равный указанному +spis1.sort() - сортирует список в порядке возрастания +spis1.copy() - создает поверхностную копию(shallow copy) +spis1.index(элемент) - возвращает индекс первого соответсвующего элемента +spis1.clear() - очищает список +spis1.count(элемент) - считает кол-во соответствующих элементов + +```py +>>> len(spis) +10 +>>> len(spis1) +3 +>>> help(spis1.append) +Help on built-in function append: + +append(object, /) method of builtins.list instance + Append object to the end of the list. + +>>> spis1.append('New item') +>>> spis1 +[111, 'Список', (5-9j), 'New item'] +>>> spis1+['Newest item'] +[111, 'Список', (5-9j), 'New item', 'Newest item'] +>>> spis1 +[111, 'Список', (5-9j), 'New item'] +>>> spis1.append(ss1b) +>>> spis1 +[111, 'Список', (5-9j), 'New item', 'my name is: \n Savin S.A.'] +>>> spis1.pop(1) +'Список' +>>> spis1 +[111, (5-9j), 'New item', 'my name is: \n Savin S.A.'] +>>> spis1.reverse + +>>> spis1 +[111, (5-9j), 'New item', 'my name is: \n Savin S.A.'] +>>> spis1.reverse() +>>> spis1 +['my name is: \n Savin S.A.', 'New item', (5-9j), 111] +>>> spis1.insert(2, 2+ 2j) +>>> spis1 +['my name is: \n Savin S.A.', 'New item', (2+2j), (5-9j), 111] +>>> spis1.extend(spis) +>>> spis1 +['my name is: \n Savin S.A.', 'New item', (2+2j), (5-9j), 111, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10] +>>> spis1.append('New item') +>>> spis1 +['my name is: \n Savin S.A.', 'New item', (2+2j), (5-9j), 111, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 'New item'] +>>> spis1.remove('New item') +>>> spis1 +['my name is: \n Savin S.A.', (2+2j), (5-9j), 111, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 'New item'] +>>> spis1.count(1) +1 +>>> spis1.index(10) +13 +>>> spis.clear() +>>> spis1.clear() +>>> spis1 +[] +>>> spis +[] +``` + +Далее создаем вложенные списки. Здесь я также попробовал применить spis2.copy() и проверить как работает поверхностная копия. +В итоге сделан вывод - изменения в копии не вносятся только на первом уровне. Если поменять вложенный список, то он поменяется и для оригинала. +Тут же я самостоятельно изменил вложенный элемент при помощи append. После изменил значения элемента во вложенном списке. + +```py +>>> spis1 = (1,2,3) +>>> spis1 = [1,2,3] +>>> spis1 +[1, 2, 3] +>>> spis2 = [spis1,[4,5,6,7]] +>>> spis2 +[[1, 2, 3], [4, 5, 6, 7]] +>>> copytest = spis2.copy() +>>> copytest +[[1, 2, 3], [4, 5, 6, 7]] +>>> spis2 +[[1, 2, 3], [4, 5, 6, 7]] +>>> copytest.append(3) +>>> copytest +[[1, 2, 3], [4, 5, 6, 7], 3] +>>> spis2 +[[1, 2, 3], [4, 5, 6, 7]] +>>> copytest +[[1, 2, 3], [4, 5, 6, 7], 3] +>>> copytest[1].append(2) +>>> copytest +[[1, 2, 3], [4, 5, 6, 7, 2], 3] +>>> spis2 +[[1, 2, 3], [4, 5, 6, 7, 2]] +>>> spis2 +[[1, 2, 3], [4, 5, 6, 7, 2]] +>>> spis2[0] = 78 +>>> spis2 +[78, [4, 5, 6, 7, 2]] +``` + +## 8.2. Кортеж + +Работа с кортежами - их нельзя изменять, но можно переопределять, таким образом внося изменения. + +```py +>>> kort1 = (222,'Kortezh', 77+8j) +>>> kort1 +(222, 'Kortezh', (77+8j)) +>>> kort1 = kort1 + (1,2) +>>> kort1 +(222, 'Kortezh', (77+8j), 1, 2) +>>> kort1 = kort1 + (ss1b,) +>>> kort1 +(222, 'Kortezh', (77+8j), 1, 2, 'my name is: \n Savin S.A.') +>>> kort2 = kort1[:2] + kort1[3:] +>>> kort2 +(222, 'Kortezh', 1, 2, 'my name is: \n Savin S.A.') +>>> kort2.index(2) +3 +>>> kort2.count(222) +1 +>>> kort2[2] = 90 +Traceback (most recent call last): + File "", line 1, in + kort2[2] = 90 +TypeError: 'tuple' object does not support item assignment +``` + +## 8.3. Словарь + +Работа со словарями. Ключи - неизменяемы. + +```py +>>> dic1={'Saratov':145, 'Orel':56, 'Vologda':45} +>>> dic1['Orel'] +56 +>>> dic1['Pskov'] = 78 +>>> dic1 +{'Saratov': 145, 'Orel': 56, 'Vologda': 45, 'Pskov': 78} +>>> sorted(dic1.keys()) +['Orel', 'Pskov', 'Saratov', 'Vologda'] +>>> sorted(dic1.values()) +[45, 56, 78, 145] +>>> dic1 +{'Saratov': 145, 'Orel': 56, 'Vologda': 45, 'Pskov': 78} +>>> dic2={1:'mean', 2:'standart deviation', 3:'correlation'} +>>> dic2 +{1: 'mean', 2: 'standart deviation', 3: 'correlation'} +>>> dic3={'statistics':dic2, 'POAS':['base','elementary','programming']} +>>> dic3 +{'statistics': {1: 'mean', 2: 'standart deviation', 3: 'correlation'}, 'POAS': ['base', 'elementary', 'programming']} +>>> dic3['statistics'][2] +'standart deviation' +>>> dic4=dict([(1,['A','B','C']),(2,[4,5]),('Q','Prim'),('Stroka',ss1b)]) +>>> dic4 +{1: ['A', 'B', 'C'], 2: [4, 5], 'Q': 'Prim', 'Stroka': 'my name is: \n Savin S.A.'} +>>> dic5 = dict(zip(['A','B','C','Stroka'],[16,-3,9,ss1b])) +>>> dic5 +{'A': 16, 'B': -3, 'C': 9, 'Stroka': 'my name is: \n Savin S.A.'} +``` + +Свой словарь состоит из 5 элементов, потому что мы "сшили" два контейнера, длина определилась по минимальному кол-ву. + +```py +>>> testkort = ('B','S','M','H','D','A','R') +>>> testlist = ['bow','sword','mace','helbard','dirk'] +>>> dictest=dict(zip(testkort,testlist)) +>>> dictest +{'B': 'bow', 'S': 'sword', 'M': 'mace', 'H': 'helbard', 'D': 'dirk'} +``` +## 8.4. Множество + +Множества могут состоять только из неповторяющихся неизменяемых элементов - при создании множества со списком выведет ошибку. + +```py +>>> mnoz1={'двигатель','датчик','линия связи','датчик','микропроцессор','двигатель'} +>>> mnoz1 +{'линия связи', 'датчик', 'микропроцессор', 'двигатель'} +>>> len(mnoz1) +4 +>>> 'датчик' in mnoz1 +True +>>> mnoz1.add('htkt') +>>> mnoz1.remove('htkt') +>>> mnoz1.add('реле') +>>> mnoz1 +{'датчик', 'двигатель', 'микропроцессор', 'линия связи', 'реле'} +>>> mnoz1.remove('линия связи') +>>> mnoz1 +{'датчик', 'двигатель', 'микропроцессор', 'реле'} +>>> mnoz2 = {'дерево', 15, 78, [6,7,8]} +Traceback (most recent call last): + File "", line 1, in + mnoz2 = {'дерево', 15, 78, [6,7,8]} +TypeError: unhashable type: 'list' +>>> kortmnoz = (7,8,7,8) +>>> mnoz2 = {'дерево', 16, 19, kortmnoz} +>>> mnoz2 +{16, (7, 8, 7, 8), 19, 'дерево'} +>>> mnoz2.add(kort1) +>>> mnoz2 +{(222, 'Kortezh', (77+8j), 1, 2, 'my name is: \n Savin S.A.'), 16, (7, 8, 7, 8), 19, 'дерево'} +>>> mnoz2.remove('дерево') +>>> mnoz2 +{(222, 'Kortezh', (77+8j), 1, 2, 'my name is: \n Savin S.A.'), 16, (7, 8, 7, 8), 19} +>>> len(mnoz2) +4 +``` + +# Общее контрольное задаие по теме 2 + +Савин Семён, А-02-23 + +##Задание + +1) Создать переменную с именем familia и со значением - символьной строкой – своей фамилией в латинской транскрипции. +2) Создать переменную со значением, совпадающим с первой буквой из familia. +3) Создать переменную с именем sp_kw со значением – списком всей ключевых слов языка Python. +4) Удалите из списка sp_kw значение 'nonlocal'. Выводом списка в командном окне IDLE убедитесь, что это значение удалено из списка. +5) Создайте кортеж kort_nam с именами: вашим и еще 3-х студентов из вашей группы. Напишите инструкцию, позволяющую убедиться, что тип переменной – это tuple. +6) Напишите инструкцию, добавляющую в kort_nam имена еще двух студентов. +7) Напишите инструкцию, позволяющую определить, сколько раз в кортеже присутствуют студенты с именем «Дима». +8) Создайте словарь dict_bas, в котором ключами являются русские названия типов переменных, использованных в предыдущих операторах, а значениями – ранее созданные переменные, соответствующие этим типам. + +## Решение + +```py +>>> familia = 'Savin' +>>> familia +'Savin' +>>> bukva = familia[0] +>>> bukva +'S' +>>> sp_kv = keyword.kwlist +>>> sp_kv +['False', 'None', 'True', '__peg_parser__', 'and', 'as', 'assert', 'async', 'await', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'nonlocal', 'not', 'or', 'pass', 'raise', 'return', 'try', 'while', 'with', 'yield'] +>>> sp_kv.remove('nonlocal') +>>> sp_kv +['False', 'None', 'True', '__peg_parser__', 'and', 'as', 'assert', 'async', 'await', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'not', 'or', 'pass', 'raise', 'return', 'try', 'while', 'with', 'yield'] +>>> kort_nam = ('Семён', 'Ярослав', 'Миша') +>>> type(kort_nam) + +>>> kort_nam.count('Дима') +0 +>>> dict_bas = {'Строка': [familia,bukva], 'Список': sp_kv, 'Кортеж': kort_nam} +>>> dict_bas +{'Строка': ['Savin', 'S'], 'Список': ['False', 'None', 'True', '__peg_parser__', 'and', 'as', 'assert', 'async', 'await', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'not', 'or', 'pass', 'raise', 'return', 'try', 'while', 'with', 'yield'], 'Кортеж': ('Семён', 'Ярослав', 'Миша')} + +``` + +Для работы со строкой использовал ссылку по индексу, отпечатал первую букву. +Для работы со списком присвоил значению sp_kv keyword.kwlist - это уже список, поэтому без [] +В кортеж не записано имен "Дима", kort_nam.count('Дима') выводит 0 +Внес в словарь две строки, перед эти объединив их в список - одному ключу одно значение. From 69140eab847bd0cc0d223529863397c8f2aa96e3 Mon Sep 17 00:00:00 2001 From: SavinSA Date: Mon, 15 Sep 2025 00:05:38 +0300 Subject: [PATCH 08/24] TEMA2 report v2 --- TEMA2/report.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/TEMA2/report.md b/TEMA2/report.md index 983067a..396481e 100644 --- a/TEMA2/report.md +++ b/TEMA2/report.md @@ -66,9 +66,11 @@ SyntaxError: invalid syntax Получен список встроенных идентификаторов +```py >>> import builtins >>> dir(builtins) ['ArithmeticError', 'AssertionError', 'AttributeError', 'BaseException', 'BlockingIOError', 'BrokenPipeError', 'BufferError', 'BytesWarning', 'ChildProcessError', 'ConnectionAbortedError', 'ConnectionError', 'ConnectionRefusedError', 'ConnectionResetError', 'DeprecationWarning', 'EOFError', 'Ellipsis', 'EnvironmentError', 'Exception', 'False', 'FileExistsError', 'FileNotFoundError', 'FloatingPointError', 'FutureWarning', 'GeneratorExit', 'IOError', 'ImportError', 'ImportWarning', 'IndentationError', 'IndexError', 'InterruptedError', 'IsADirectoryError', 'KeyError', 'KeyboardInterrupt', 'LookupError', 'MemoryError', 'ModuleNotFoundError', 'NameError', 'None', 'NotADirectoryError', 'NotImplemented', 'NotImplementedError', 'OSError', 'OverflowError', 'PendingDeprecationWarning', 'PermissionError', 'ProcessLookupError', 'RecursionError', 'ReferenceError', 'ResourceWarning', 'RuntimeError', 'RuntimeWarning', 'StopAsyncIteration', 'StopIteration', 'SyntaxError', 'SyntaxWarning', 'SystemError', 'SystemExit', 'TabError', 'TimeoutError', 'True', 'TypeError', 'UnboundLocalError', 'UnicodeDecodeError', 'UnicodeEncodeError', 'UnicodeError', 'UnicodeTranslateError', 'UnicodeWarning', 'UserWarning', 'ValueError', 'Warning', 'WindowsError', 'ZeroDivisionError', '_', '__build_class__', '__debug__', '__doc__', '__import__', '__loader__', '__name__', '__package__', '__spec__', 'abs', 'all', 'any', 'ascii', 'bin', 'bool', 'breakpoint', 'bytearray', 'bytes', 'callable', 'chr', 'classmethod', 'compile', 'complex', 'copyright', 'credits', 'delattr', 'dict', 'dir', 'divmod', 'enumerate', 'eval', 'exec', 'exit', 'filter', 'float', 'format', 'frozenset', 'getattr', 'globals', 'hasattr', 'hash', 'help', 'hex', 'id', 'input', 'int', 'isinstance', 'issubclass', 'iter', 'len', 'license', 'list', 'locals', 'map', 'max', 'memoryview', 'min', 'next', 'object', 'oct', 'open', 'ord', 'pow', 'print', 'property', 'quit', 'range', 'repr', 'reversed', 'round', 'set', 'setattr', 'slice', 'sorted', 'staticmethod', 'str', 'sum', 'super', 'tuple', 'type', 'vars', 'zip'] +``` Получена помощь по нескольким из них. Также были опробованы несколько функций abs - модуль от числа @@ -486,7 +488,7 @@ TypeError: unhashable type: 'list' Савин Семён, А-02-23 -##Задание +## Задание 1) Создать переменную с именем familia и со значением - символьной строкой – своей фамилией в латинской транскрипции. 2) Создать переменную со значением, совпадающим с первой буквой из familia. From 1d82fffef65bc74db6d2aa681052600fe60c7455 Mon Sep 17 00:00:00 2001 From: SavinSA Date: Sat, 27 Sep 2025 21:19:41 +0300 Subject: [PATCH 09/24] added report --- TEMA3/report.md | 0 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 TEMA3/report.md diff --git a/TEMA3/report.md b/TEMA3/report.md new file mode 100644 index 0000000..e69de29 From 40da83b9057a0eff45996e56739ef64393d2221d Mon Sep 17 00:00:00 2001 From: SavinSA Date: Sat, 27 Sep 2025 23:41:33 +0300 Subject: [PATCH 10/24] report first half --- TEMA3/report.md | 268 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 268 insertions(+) diff --git a/TEMA3/report.md b/TEMA3/report.md index e69de29..dc1787e 100644 --- a/TEMA3/report.md +++ b/TEMA3/report.md @@ -0,0 +1,268 @@ +# Отчет по Теме 3 + +Савин Семён, А-02-23 + +## Пункт 2. Преобразование простых типов объектов. + +## 2.1 Преобразование в логический тип + +```py +logiz1 = bool(56) +>>> logiz2 = bool(0) +>>> logiz3 = bool("Beta") +>>> logiz4 = bool("") +>>> logiz1 +True +>>> logiz2 +False +>>> logiz3 +True +>>> logiz4 +False +``` + +## 2.2 Преобразование в целое число + +```py +tt1 = int(198.6) +>>> tt2 = int("-76") +>>> tt3 = int("B",16) +>>> tt4 = int("71",8) +>>> tt5 = int("98.76") +Traceback (most recent call last): + File "", line 1, in + tt5 = int("98.76") +ValueError: invalid literal for int() with base 10: '98.76' +>>> tt1 +198 +>>> tt2 +-76 +>>> tt3 +11 +>>> tt4 +57 +``` + +## 2.3 Преобразование в вещественное число + +```py +flt1 = float(789) +>>> flt2 = float(-6.78e2) +>>> flt3 = float ("Infinity") +>>> flt4 = float("-inf") +>>> flt1 +789.0 +>>> flt2 +-678.0 +>>> flt3 +inf +>>> flt4 +-inf +``` + +## Пункт 3. Преобразование более сложных базовых типов объектов. + +## 3.1. Преобразование в строку + +```py +>>> strk1 = str(23.6) +>>> strk2 = str(logiz3) +>>> strk3 = str(["A","B","C"]) +>>> strk4 = str(("A","B","C")) +>>> strk5=str({"A":1,"B":2,"C":9}) +>>> strk1 +'23.6' +>>> strk2 +'True' +>>> strk3 +"['A', 'B', 'C']" +>>> strk4 +"('A', 'B', 'C')" +>>> strk5 +"{'A': 1, 'B': 2, 'C': 9}" +``` + +## 3.2. Преобразование в список + +```py +>>> spis1 = list("Строка символов") +>>> spis2 = list((124,236,-15,908)) +>>> spis3 = list({"A":1,"B":2,"C":9}) +>>> spis1 +['С', 'т', 'р', 'о', 'к', 'а', ' ', 'с', 'и', 'м', 'в', 'о', 'л', 'о', 'в'] +>>> spis2 +[124, 236, -15, 908] +>>> spis3 +['A', 'B', 'C'] +``` + +## 3.3. Преобразование в кортеж + +```py +>>> kort7=tuple('Строка символов') +>>> kort8 = tuple(spis2) +>>> kort9 = tuple({"A":1, "B":2, "C":9}) +>>> kort7 +('С', 'т', 'р', 'о', 'к', 'а', ' ', 'с', 'и', 'м', 'в', 'о', 'л', 'о', 'в') +>>> kort8 +(124, 236, -15, 908) +>>> kort9 +('A', 'B', 'C') +``` + +## 3.4 Удаление объектов + +```py +>>> del strk5,kort8 +>>> strk5 +Traceback (most recent call last): + File "", line 1, in + strk5 +NameError: name 'strk5' is not defined +>>> kort8 +Traceback (most recent call last): + File "", line 1, in + kort8 +NameError: name 'kort8' is not defined +``` + +## Пункт 4. Арифметические операции. + +## 4.1. Сложение и вычитание +```py +>>> 12+7+90 +109 +>>> 5.689e-1 - 0.456 +0.11289999999999994 +>>> 23.6+54 +77.6 +>>> 14-56.7+89 +46.3 +``` + +## 4.2. Умножение +```py +>>> -6.7*12 +-80.4 +``` + +## 4.3. Деление +```py +>>> -234.5/6 +-39.083333333333336 +>>> a=178/45 +>>> a +3.9555555555555557 +``` + +## 4.4. Деление с округлением вниз +```py +>>> b=178//45 +>>> c=-24.6//12.1 +>>> b +3 +>>> c +-3.0 +``` + +## 4.5. Получение остатка от деления +```py +>>> 146%33 +14 +>>> 148%33 +16 +>>> 12.6%3.8 +1.2000000000000002 +>>> 11%3.8 +3.4000000000000004 +>>> 4.0%1.0 +0.0 +``` + +## 4.6. Возведение в степень +```py +>>> 14**3 +2744 +>>> e=2.7**3.6 +>>> e +35.719843790663525 +>>> 2**4.5 +22.627416997969522 +>>> g = 14 - 8j +>>> g**2 +(132-224j) +>>> g%2 +Traceback (most recent call last): + File "", line 1, in + g%2 +TypeError: can't mod complex numbers. +>>> g//2 +Traceback (most recent call last): + File "", line 1, in + g//2 +TypeError: can't take floor of complex number. +>>> g/2 +(7-4j) +>>> g*5 +(70-40j) +``` + +## Пункт 5. Операции с двоичными представлениями целых чисел. + +## 5.1. Двоичная инверсия + +```py +>>> dv1 = 9 +>>> dv2 = ~dv1 +>>> bin(dv2) +'-0b1010' +``` + +## 5.2. Двоичное "И" + +```py +>>> bin(7&9) +'0b1' +>>> bin(7&8) +'0b0' +``` + +## 5.3. Двоичное "ИЛИ" + +```py +>>> a = bin(7|9) +>>> b = bin(7|8) +>>> a +'0b1111' +>>> b +'0b1111' +``` + +## 5.4. Двоичное "исключающее ИЛИ" + +```py +>>> c = bin(14^5) +>>> c +'0b1011' +``` + +## 5.5. Сдвиг двоичного представления + +```py +>>> h = 14 +>>> bin(h) +'0b1110' +>>> g = h<<2 +>>> g +56 +>>> bin(g) +'0b111000' +>>> g1 = h>>1 +>>> g2 = h>>2 +>>> bin(g1), bin(g2) +('0b111', '0b11') +``` + + + + From e2752e97c9b00ce9946479f304ec9fbf796bc718 Mon Sep 17 00:00:00 2001 From: SavinSA Date: Mon, 29 Sep 2025 02:18:41 +0300 Subject: [PATCH 11/24] report+task --- TEMA3/otask.md | 61 +++++++++ TEMA3/report.md | 330 ++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 391 insertions(+) create mode 100644 TEMA3/otask.md diff --git a/TEMA3/otask.md b/TEMA3/otask.md new file mode 100644 index 0000000..6e0bb54 --- /dev/null +++ b/TEMA3/otask.md @@ -0,0 +1,61 @@ +# Общее контрольное задание по Теме 3 + +Савин Семён, А-02-23 + +## Задание + +Реализовать, записать в текстовый файл и проанализировать результаты последовательности инструкций, выполняющих следующие действия: + +Преобразовать восьмеричное значение 45 в целое число. + +Создать объект-словарь D со значениями {"усиление":23, "запаздывание":12, "постоянная времени":78} и затем осуществить его преобразование в два списка: ключей и значений, а затем – эти два списка преобразовать в один кортеж. Чем отличается кортеж от списка? + +Напишите и выполните единое выражение, осуществляющее деление числа 1768 на 24.8 с округлением вниз, с определением после этого остатка от деления получившегося значения на 3 и затем возведения результата в степень 2.4. + +Напишите и выполните единое выражение, последовательно осуществляющее следующие операции: двоичное И для чисел 13 и 27, инверсия полученного значения, двоичное исключающее ИЛИ для полученного значения и числа 14, сдвиг полученного значения на два разряда влево. + +Создать список с 4 одинаковыми элементами 'колебат' и написать оператор проверки наличия комбинации символов 'аткол' в результате конкатенации второго и третьего элементов этого списка. + +Определить список методов, доступных у ранее созданного словаря D. Поочередно использовать его методы keys и values, определить, что можно получить с применением этих методов. + +Создать объект - символьную строку с текстом данного предложения. Из символьной строки создать список, элементами которого будут отдельные слова из созданной строки. Заменить в списке элемент «-» на «,». Удалить из списка элемент со значением «данного». Отобразить получившийся список. + +## Решение + +```py +>>> x = "45" +>>> x = int(x,8) +>>> x +37 +>>> D = {"усиление":23, "запаздывание":12, "постоянная времени":78} +>>> Dk = list(D.keys()) +>>> Dk +['усиление', 'запаздывание', 'постоянная времени'] +>>> Dv = list(D.values()) +>>> Dv +[23, 12, 78] +>>> kort = tuple(Dk+Dv) +>>> kort +('усиление', 'запаздывание', 'постоянная времени', 23, 12, 78) +>>> ((1768//24.8)%3)**2.4 +5.278031643091577 +>>> ((~(13&27))^14)<<2 +-32 +>>> spis = ["колебат","колебат","колебат","колебат"] +>>> 'аткол' in (spis[1] + spis[2]) +True +>>> dir(D) +['__class__', '__class_getitem__', '__contains__', '__delattr__', '__delitem__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__ior__', '__iter__', '__le__', '__len__', '__lt__', '__ne__', '__new__', '__or__', '__reduce__', '__reduce_ex__', '__repr__', '__reversed__', '__ror__', '__setattr__', '__setitem__', '__sizeof__', '__str__', '__subclasshook__', 'clear', 'copy', 'fromkeys', 'get', 'items', 'keys', 'pop', 'popitem', 'setdefault', 'update', 'values'] +>>> type(D.keys()) + +>>> type(D.values()) + +>>> stroka = 'Создать объект - символьную строку с текстом данного предложения' +>>> stroka1 = stroka.split() +>>> stroka1 +['Создать', 'объект', '-', 'символьную', 'строку', 'с', 'текстом', 'данного', 'предложения'] +>>> stroka1[2] = ',' +>>> del stroka1[7] +>>> stroka1 +['Создать', 'объект', ',', 'символьную', 'строку', 'с', 'текстом', 'предложения'] +``` diff --git a/TEMA3/report.md b/TEMA3/report.md index dc1787e..22bfc75 100644 --- a/TEMA3/report.md +++ b/TEMA3/report.md @@ -263,6 +263,336 @@ TypeError: can't take floor of complex number. ('0b111', '0b11') ``` +## Пункт 6. Операции при работе с последовательностями. + +## 6.1. Объединние последовательностей. + +```py +'Система '+'регулирования' +'Система регулирования' +>>> ['abc','de','fg']+['hi','jkl'] +['abc', 'de', 'fg', 'hi', 'jkl'] +>>> ('abc','de','fg')+('hi','jkl') +('abc', 'de', 'fg', 'hi', 'jkl') +``` + +## 6.2. Повторение последовательностей + +```py +>>> 'ля-'*5 +'ля-ля-ля-ля-ля-' +>>> ['ку','-']*3 +['ку', '-', 'ку', '-', 'ку', '-'] +>>> ('кис','-')*4 +('кис', '-', 'кис', '-', 'кис', '-', 'кис', '-') +>>> signal1=[0]*3+[1]*99 +>>> signal2=(0,)*3+(1,)*5+(0,)*7 +>>> signal1 +[0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1] +>>> signal2 +(0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0) +``` + +## 6.3. Проверка наличия заданного элемента. + +```py +stroka='Система автоматического управления' +>>> 'автомат' in stroka +True +>>> 'ку' in ['ку','-']*3 +True +>>> 'ля-' in ('abc', 'de', 'fg', 'hi', 'jkl') +False +``` + +## 6.4. Подстановка значений в строку + +```py +>>> stroka='Температура = %g %s %g' +>>> stroka +'Температура = %g %s %g' +>>> stroka % (16, "меньше", 25) +'Температура = 16 меньше 25' +stroka='Температура = %(zn1)g %(sravn)s %(zn2)g' +>>> stroka % {'zn1':16,'sravn':' меньше ','zn2':25} +'Температура = 16 меньше 25' +``` + +## Пункт 7. Оператор присваивания + +## 7.1. Обычное присваивание значения. + +```py + zz = -12 +``` + +## 7.2. Увеличение/уменьшение на заданную величину. + +```py +>>> zz+=5 +>>> zz +-7 +>>> zz-=3 +>>> zz +-10 +>>> stroka = "система" +>>> stroka += " регулирования" +>>> stroka +'система регулирования' +``` + +## 7.3. Умножение/деление на заданную величину. + +```py +>>> zz +-10 +>>> zz/=2 +>>> zz +-5.0 +>>> zz*=5 +>>> zz +-25.0 +``` + +## 7.4. Деление с округлением, вычисление остатка и возведение в степень. + +```py +>> zz+=2.7 +>>> zz +-2.3 +>>> zz//=2 +>>> zz +-2.0 +>>> zz+=8.5 +>>> zz +6.5 +>>> zz%=4 +>>> zz +2.5 +>>> zz**=2 +>>> zz +6.25 +``` + +## 7.5. Множественное присваивание + +```py +>>> w=v=10 +>>> n1,n2,n3=(11,-3,'all') +>>> w +10 +>>> v +10 +>>> n1 +11 +>>> n2 +-3 +>>> n3 +'all' +>>> n1,n2,n3 = [11,-3,'all'] +>>> n1 +11 +>>> n2 +-3 +>>> n3 +'all' +>>> n1,n2,n3 = {11,-4,'al'} +>>> n1 +11 +>>> n2 +-4 +>>> n3 +'al' +>>> testdict +{'a': 'test1', 'b': 14, 'c': 'test3'} +>>> n1,n2,n3 = testdict["a"], testdict["b"], testdict["c"] +>>> n1 +'test1' +>>> n2 +14 +>>> n3 +'test3' +>>> strka = "ФБВГД" +>>> n1,n2,n3 = strka[1],strka[3], strka[4] +>>> n1 +'Б' +>>> n2 +'Г' +>>> n3 +'Д' +``` + +## Пункт 8. Логические операции. + +## 8.1. Операции сравнения. + +```py +>>> w==v +True +>>> w<=v +True +>>> w>=v +True +>>> w>v +False +>>> w>> w +10 +>>> v +10 +``` +## 8.2. Проверка наличия заданного элемента в последовательности, множестве. Наличие ключа в словаре + +```py +>>> mnoz1={'pen','book','pen','iPhone','table','book'} +>>> 'book' in mnoz1 +True +>>> 'cap' in mnoz1 +False +>>> dic1={'Saratov':145, 'Orel':56, 'Vologda':45} +>>> 'Vologda' in dic1 +True +>>> 'Pskov' in dic1 +False +>>> 56 in dic1.values() +True +>>> dct1={'Institut':['AVTI','IEE','IBB'],'Depart':['UII','PM','VMSS','MM'],'gruppa': ['A-01-15','A-02-15']} +>>> 'UII' in dct1['Depart'] +True +>>> dct1['Depart'][1] == 'MM' +False +``` + +## 8.3. Создание больших логических выражений с использованием соединительных слов. + +```py +>>> a = 17 +>>> b=-6 +>>> (a>=b) and ('book' in mnoz1) and not ('Pskov' in dic1) +True +>>> (a==b) or ("AVTI" in dct1["Institut"]) +True +>>> not ("book" in mnoz1) and("Moskow" in dic1) +False +``` + +## 8.4. Проверка ссылок переменных на один и тот же объект + +```py +>>> w=v=10 +>>> w is v +True +>>> w1=['A','B'] +>>> v1=['A','B'] +>>> w1 is v1 +False +>>> w1=v1=['A','B'] +>>> w1 is v1 +True +``` + +## Пункт 9. Операции с объектами, выполняемые с помощью методов. + +## 9.1. Методы для работы со строками. + +```py +>>> stroka='Микропроцессорная система управления' +>>> dir(stroka) +['__add__', '__class__', '__contains__', '__delattr__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__getnewargs__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__iter__', '__le__', '__len__', '__lt__', '__mod__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__rmod__', '__rmul__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', 'capitalize', 'casefold', 'center', 'count', 'encode', 'endswith', 'expandtabs', 'find', 'format', 'format_map', 'index', 'isalnum', 'isalpha', 'isascii', 'isdecimal', 'isdigit', 'isidentifier', 'islower', 'isnumeric', 'isprintable', 'isspace', 'istitle', 'isupper', 'join', 'ljust', 'lower', 'lstrip', 'maketrans', 'partition', 'removeprefix', 'removesuffix', 'replace', 'rfind', 'rindex', 'rjust', 'rpartition', 'rsplit', 'rstrip', 'split', 'splitlines', 'startswith', 'strip', 'swapcase', 'title', 'translate', 'upper', 'zfill'] +>>> stroka.find('пр') +5 +>>> stroka.count("с") +4 +>>> stroka.replace(' у',' автоматического у') +'Микропроцессорная система автоматического управления' +>>> spis22=stroka.split(' ') +>>> spis22 +['Микропроцессорная', 'система', 'управления'] +>>> stroka.upper() +'МИКРОПРОЦЕССОРНАЯ СИСТЕМА УПРАВЛЕНИЯ' +>>> stroka3 = "".join(spis22) +>>> stroka3 +'Микропроцессорнаясистемауправления' +>>> stroka3.partition("c") +('Микропроцессорнаясистемауправления', '', '') +>>> stroka3.partition("с") +('Микропроце', 'с', 'сорнаясистемауправления') +>>> stroka3.rpartition("с") +('Микропроцессорнаяси', 'с', 'темауправления') +>>> help(format) +Help on built-in function format in module builtins: + +format(value, format_spec='', /) + Return value.__format__(format_spec) + + format_spec defaults to the empty string. + See the Format Specification Mini-Language section of help('FORMATTING') for + details. + +>>> strk1='Момент времени {}, значение = {}' +>>> strk1.format(1,89.7) +'Момент времени 1, значение = 89.7' +>>> strk2='Момент времени {1}, значение = {0}:{2}' +>>> strk2.format(36.7,2,'норма!') +'Момент времени 2, значение = 36.7:норма!' +>>> strk3='Момент времени {num}, значение = {znch}' +>>> strk3.format(znch=89.7,num=2) +'Момент времени 2, значение = 89.7' +``` + +## 9.2. Методы работы со списками. + +```py +>>> spsk = [1,2,3,4,5,'a','b','c'] +>>> spsk.pop(2) +3 +>>> spsk.append('c') +>>> spsk +[1, 2, 4, 5, 'a', 'b', 'c', 'c'] +>>> spsk.insert(2,'a') +>>> spsk +[1, 2, 'a', 4, 5, 'a', 'b', 'c', 'c'] +>>> spsk.count('a') +2 +>>> spsk +[1, 2, 'a', 4, 5, 'a', 'b', 'c', 'c'] +>>> dir(spsk) +['__add__', '__class__', '__class_getitem__', '__contains__', '__delattr__', '__delitem__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__gt__', '__hash__', '__iadd__', '__imul__', '__init__', '__init_subclass__', '__iter__', '__le__', '__len__', '__lt__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__reversed__', '__rmul__', '__setattr__', '__setitem__', '__sizeof__', '__str__', '__subclasshook__', 'append', 'clear', 'copy', 'count', 'extend', 'index', 'insert', 'pop', 'remove', 'reverse', 'sort'] +``` + +## 9.3. Методы работы с кортежами + +```py +>>> kort = (1,2,3,4,5,'a','c') +>>> dir(kort) +['__add__', '__class__', '__class_getitem__', '__contains__', '__delattr__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__getnewargs__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__iter__', '__le__', '__len__', '__lt__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__rmul__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', 'count', 'index'] +>>> kort.count(a) +0 +>>> kort.count('a') +1 +>>> len(kort) +7 +``` + +## 9.4. Методы работы с множествами и словарями + +```py +>>> slova = {"A": 123, "B":456} +>>> dir(slova) +['__class__', '__class_getitem__', '__contains__', '__delattr__', '__delitem__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__ior__', '__iter__', '__le__', '__len__', '__lt__', '__ne__', '__new__', '__or__', '__reduce__', '__reduce_ex__', '__repr__', '__reversed__', '__ror__', '__setattr__', '__setitem__', '__sizeof__', '__str__', '__subclasshook__', 'clear', 'copy', 'fromkeys', 'get', 'items', 'keys', 'pop', 'popitem', 'setdefault', 'update', 'values'] +>>> slova.keys() +dict_keys(['A', 'B']) +>>> slova.items + +>>> mnoz = {1,2,3,4,5,6} +>>> dir(mnoz) +['__and__', '__class__', '__class_getitem__', '__contains__', '__delattr__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__iand__', '__init__', '__init_subclass__', '__ior__', '__isub__', '__iter__', '__ixor__', '__le__', '__len__', '__lt__', '__ne__', '__new__', '__or__', '__rand__', '__reduce__', '__reduce_ex__', '__repr__', '__ror__', '__rsub__', '__rxor__', '__setattr__', '__sizeof__', '__str__', '__sub__', '__subclasshook__', '__xor__', 'add', 'clear', 'copy', 'difference', 'difference_update', 'discard', 'intersection', 'intersection_update', 'isdisjoint', 'issubset', 'issuperset', 'pop', 'remove', 'symmetric_difference', 'symmetric_difference_update', 'union', 'update'] +>>> mnoz.pop() +1 +>>> mnoz +{2, 3, 4, 5, 6} +``` From 5e199363b2bae87f0132cfd811fc6df5671f1a0f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=9F=D0=BE=D0=BB=D1=8C=D0=B7=D0=BE=D0=B2=D0=B0=D1=82?= =?UTF-8?q?=D0=B5=D0=BB=D1=8C=20=E2=84=96=209=20=D0=B0=D1=83=D0=B4=D0=B8?= =?UTF-8?q?=D1=82=D0=BE=D1=80=D0=B8=D0=B8=20=D0=96-206?= Date: Mon, 29 Sep 2025 14:36:05 +0300 Subject: [PATCH 12/24] module 1 full test --- TEMA3/testmodule.md | 94 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 94 insertions(+) create mode 100644 TEMA3/testmodule.md diff --git a/TEMA3/testmodule.md b/TEMA3/testmodule.md new file mode 100644 index 0000000..6970992 --- /dev/null +++ b/TEMA3/testmodule.md @@ -0,0 +1,94 @@ +# Тест по теме 3 + +Савин Семён, А-02-23 + +## Вариант 26. + +## Вопрос 1. Можно ли с помощью оболочки IDLE создавать загрузочные (ЕХЕ,СОМ) программы? +В самом IDLE нельзя создавать загрузочные файлы, только скрипты, после чего можно преобразовать в сторонних программах. + +## Вопрос 2. + +Задание: Создайте объект-множество с 8 элементами - статистическими терминами ("среднее значение",:). Напишите инструкцию, доказывающую, что создан объект именно требуемого типа. Напишите инструкцию отображения списка атрибутов созданного объекта. + +## Решение + +```py +mnozstat = {"среднее значение", "медиана", "дисперсия", "корелляция", "стандартное отклонение", "выборка", "математическое ожидание"} +mnozstat +{'медиана', 'выборка', 'стандартное отклонение', 'корелляция', 'дисперсия', 'математическое ожидание', 'среднее значение'} +type(mnozstat) + +dir(mnozstat) +['__and__', '__class__', '__class_getitem__', '__contains__', '__delattr__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getstate__', '__gt__', '__hash__', '__iand__', '__init__', '__init_subclass__', '__ior__', '__isub__', '__iter__', '__ixor__', '__le__', '__len__', '__lt__', '__ne__', '__new__', '__or__', '__rand__', '__reduce__', '__reduce_ex__', '__repr__', '__ror__', '__rsub__', '__rxor__', '__setattr__', '__sizeof__', '__str__', '__sub__', '__subclasshook__', '__xor__', 'add', 'clear', 'copy', 'difference', 'difference_update', 'discard', 'intersection', 'intersection_update', 'isdisjoint', 'issubset', 'issuperset', 'pop', 'remove', 'symmetric_difference', 'symmetric_difference_update', 'union', 'update'] +``` + +## Вопрос 3. + +Задание: Напишите инструкцию удаления из множества одного из терминов, например, "среднее значение". Добавьте вместо него термин "математическое ожидание". Отобразите на экране получившийся объект. + +## Решение + +```py +mnozstat +{'медиана', 'выборка', 'стандартное отклонение', 'корелляция', 'дисперсия', 'математическое ожидание', 'среднее значение'} +mnozstat.remove("медиана") +mnozstat +{'выборка', 'стандартное отклонение', 'корелляция', 'дисперсия', 'математическое ожидание', 'среднее значение'} +mnozstat.add("математическое ожидание") +mnozstat +{'выборка', 'стандартное отклонение', 'корелляция', 'дисперсия', 'математическое ожидание', 'среднее значение'} +mnozstat.add("матожидание") +mnozstat +{'матожидание', 'выборка', 'стандартное отклонение', 'корелляция', 'дисперсия', 'математическое ожидание', 'среднее значение'} +``` + +При добавлении "Математическое ожидание" множество не изменилось, т.к. множество содержит неповторяющиеся объекты. +Доавил вместо этого "матожидание". + +## Вопрос 4. + +Задание: Преобразуйте множество в список. Отобразите полученный объект. Добавьте в конец списка значение "гетероскедастичность". Напишите инструкцию вывода из этого значения в списке символов, начиная с 7-го и до 13-го. + +## Решение + +```py +liststat = list(mnozstat) +liststat +['матожидание', 'выборка', 'стандартное отклонение', 'корелляция', 'дисперсия', 'математическое ожидание', 'среднее значение'] +liststat.append("гетероскедастичность") +liststat +['матожидание', 'выборка', 'стандартное отклонение', 'корелляция', 'дисперсия', 'математическое ожидание', 'среднее значение', 'гетероскедастичность'] +liststat[-1] +'гетероскедастичность' +stringtest=liststat[-1] +stringtest +'гетероскедастичность' +stringtest[6:13] +'скедаст' +``` + +Два способа - первый не использует дополнительную переменную. + +## Вопрос 5. + +Задание: Создайте на основе множества словарь, в котором ключи - термины из множества, а значения - код термина (например, число - порядковый номер). + +## Решение + +```py +slovtest1 = dict(zip(liststat,["M1","M2","M3","M4","M5","M6","M7","M8"])) +slovtest1 +{'матожидание': 'M1', 'выборка': 'M2', 'стандартное отклонение': 'M3', 'корелляция': 'M4', 'дисперсия': 'M5', 'математическое ожидание': 'M6', 'среднее значение': 'M7', 'гетероскедастичность': 'M8'} +slovtest.keys() +dict_keys(['матожидание']) +slovtest1.keys() +dict_keys(['матожидание', 'выборка', 'стандартное отклонение', 'корелляция', 'дисперсия', 'математическое ожидание', 'среднее значение', 'гетероскедастичность']) +slovtest1.values() +dict_values(['M1', 'M2', 'M3', 'M4', 'M5', 'M6', 'M7', 'M8']) +slovtest2 = dict(zip(mnozstat,[1,2,3,4,5,6,7,8])) +slovtest2 +{'матожидание': 1, 'выборка': 2, 'стандартное отклонение': 3, 'корелляция': 4, 'дисперсия': 5, 'математическое ожидание': 6, 'среднее значение': 7} +``` + +Через dict(zip()) можно "сшить" и два списка, и список со множеством, чтобысоздать словарь. \ No newline at end of file From 15578754ba026a17547978c41e8e6796edd54f65 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=9F=D0=BE=D0=BB=D1=8C=D0=B7=D0=BE=D0=B2=D0=B0=D1=82?= =?UTF-8?q?=D0=B5=D0=BB=D1=8C=20=E2=84=96=209=20=D0=B0=D1=83=D0=B4=D0=B8?= =?UTF-8?q?=D1=82=D0=BE=D1=80=D0=B8=D0=B8=20=D0=96-206?= Date: Mon, 13 Oct 2025 14:30:41 +0300 Subject: [PATCH 13/24] personal task 13 --- TEMA4/taskind.md | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 TEMA4/taskind.md diff --git a/TEMA4/taskind.md b/TEMA4/taskind.md new file mode 100644 index 0000000..cc8d9d2 --- /dev/null +++ b/TEMA4/taskind.md @@ -0,0 +1,27 @@ +## Индивидуальное задание по Теме 4. + +Савин Семён, А-02-23 + +## Вариант 13. Задание + +Зафиксируйте текущее Московское время и запишите его в переменную. Создайте список с элементами, равномерно размещенными в диапазоне от 0 до 240 с шагом, равным значению часа в текущем времени. Подсчитайте число элементов в списке. Сделайте задержку исполнения программы на 7 сек. Выведите на экран сообщение: «Число элементов =<значение>». + +## Решение + +```py +data1 = time.localtime() +data1 +time.struct_time(tm_year=2025, tm_mon=10, tm_mday=13, tm_hour=14, tm_min=5, tm_sec=20, tm_wday=0, tm_yday=286, tm_isdst=0) +data1 +hour = data1.tm_hour +hour +14 +rangetest = range(0,241,hour) +rangetest +range(0, 241, 14) +rangelist = list(rangetest) +rangelist +[0, 14, 28, 42, 56, 70, 84, 98, 112, 126, 140, 154, 168, 182, 196, 210, 224, 238] +time.sleep(7); print('число элементов = ', len(rangelist)) +число элементов = 18 +``` \ No newline at end of file From 180ca3e2d77bdcecaa1230dadf7528af1cdd25e6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=9F=D0=BE=D0=BB=D1=8C=D0=B7=D0=BE=D0=B2=D0=B0=D1=82?= =?UTF-8?q?=D0=B5=D0=BB=D1=8C=20=E2=84=96=209=20=D0=B0=D1=83=D0=B4=D0=B8?= =?UTF-8?q?=D1=82=D0=BE=D1=80=D0=B8=D0=B8=20=D0=96-206?= Date: Mon, 27 Oct 2025 14:03:22 +0300 Subject: [PATCH 14/24] individual task 24 --- TEMA5/indtask.md | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 TEMA5/indtask.md diff --git a/TEMA5/indtask.md b/TEMA5/indtask.md new file mode 100644 index 0000000..c47dd62 --- /dev/null +++ b/TEMA5/indtask.md @@ -0,0 +1,32 @@ +# Индивидуальное задание по теме 5 + +Савин Семён, А-02-23 + +## Задание + +Создайте словарь с 30 элементами, состоящими из ключей – целых чисел от 0 до 29, и значений – случайных, равномерно распределенных чисел в интервале значений от -10 до +7. Рассчитайте сумму неотрицательных значений из словаря и отобразите её в виде строки: «Сумма неотрицательных значений словаря= XXX» + +## Решение + +```py +>>> import random +>>> dic = {} +>>> for i in range(30): +... dic[i] = random.uniform(-10,7) +... +... +>>> dic +{0: 2.702699921460894, 1: -9.313799222713357, 2: 1.745150913860483, 3: 2.2713258625881334, 4: -4.204720276118, 5: -9.86298962222136, 6: 1.6909669546619206, 7: 6.653028615635439, 8: -0.602447489888629, 9: -0.22554068075154987, 10: 6.635735241625408, 11: 6.9674957633743055, 12: 1.302255015488445, 13: -7.544626666322164, 14: 4.920064297002757, 15: -1.1750801046722401, 16: 0.533269283762408, 17: 1.3690999434519036, 18: -9.961061355462801, 19: -7.606628471809557, 20: -9.407647840692164, 21: -9.48331386837302, 22: 0.4328807007084503, 23: -5.682208298228706, 24: -3.3609835072871173, 25: 6.440617938001598, 26: 1.4526538850069457, 27: 1.5744886145201402, 28: -1.6853041418731678, 29: -5.310800997844408} + +>>> summap = 0 +>>> for key in dic: +... if dic[key] >= 0: +... summap += dic[key] +... +... +>>> summap +46.691732951149234 + +>>> print('Сумма неотрицательных значений словаря = ' , summap) +Сумма неотрицательных значений словаря = 46.691732951149234 +``` From af01755cc98783fc5130402b5e887f456139d22e Mon Sep 17 00:00:00 2001 From: SavinSA Date: Fri, 7 Nov 2025 23:34:35 +0300 Subject: [PATCH 15/24] changed screenshot --- TEMA6/report.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/TEMA6/report.md b/TEMA6/report.md index 2f828cb..8242de8 100644 --- a/TEMA6/report.md +++ b/TEMA6/report.md @@ -278,5 +278,5 @@ False >>> sys.stdin=tmp_in ``` -![Скриншот содержания файла Stroka](img5.txt) +![Скриншот содержания файла Stroka](img5.png) From 116920e3c50ba276f16983506cff69418490045b Mon Sep 17 00:00:00 2001 From: SavinSA Date: Mon, 10 Nov 2025 02:15:57 +0300 Subject: [PATCH 16/24] indtask added --- TEMA6/indbin.mnz | Bin 0 -> 722 bytes TEMA6/indtask.md | 55 +++++++++++++++++++++++++++++++++++++++++++++++ TEMA6/task.py | 20 +++++++++++++++++ 3 files changed, 75 insertions(+) create mode 100644 TEMA6/indbin.mnz create mode 100644 TEMA6/indtask.md create mode 100644 TEMA6/task.py diff --git a/TEMA6/indbin.mnz b/TEMA6/indbin.mnz new file mode 100644 index 0000000000000000000000000000000000000000..8e770f658e30d6bfc55f302b057b5bd83f159904 GIT binary patch literal 722 zcmX|LV#r8y#YWT7Ex6JV8Mw>hf7@{ zL4U^->IJS7y990eFIDD8CeJiRp<{B=4Yom}4PwxQ4DcBPOG7qEh3~~E$r2+PpkAXP zTrike<$mthlL2MztZ5!(Ikj&3s%zWftN^Xy%2p6HsQ^l>A+kO3Vy!TYvkWr$1;CKt zZM`hPvm!BU1ELhOh4Nl@!}{>t{TkW+H Date: Mon, 10 Nov 2025 02:15:57 +0300 Subject: [PATCH 17/24] indtask added --- TEMA6/indbin.mnz | Bin 0 -> 722 bytes TEMA6/indtask.md | 55 +++++++++++++++++++++++++++++++++++++++++++++++ TEMA6/task.py | 20 +++++++++++++++++ 3 files changed, 75 insertions(+) create mode 100644 TEMA6/indbin.mnz create mode 100644 TEMA6/indtask.md create mode 100644 TEMA6/task.py diff --git a/TEMA6/indbin.mnz b/TEMA6/indbin.mnz new file mode 100644 index 0000000000000000000000000000000000000000..8e770f658e30d6bfc55f302b057b5bd83f159904 GIT binary patch literal 722 zcmX|LV#r8y#YWT7Ex6JV8Mw>hf7@{ zL4U^->IJS7y990eFIDD8CeJiRp<{B=4Yom}4PwxQ4DcBPOG7qEh3~~E$r2+PpkAXP zTrike<$mthlL2MztZ5!(Ikj&3s%zWftN^Xy%2p6HsQ^l>A+kO3Vy!TYvkWr$1;CKt zZM`hPvm!BU1ELhOh4Nl@!}{>t{TkW+H Date: Mon, 10 Nov 2025 14:28:59 +0300 Subject: [PATCH 18/24] module test --- TEMA6/img6.png | Bin 0 -> 32248 bytes TEMA6/moduletest.md | 80 +++++++++++++++++++++++++++++++++++++++++++ TEMA6/modultest2.txt | 15 ++++++++ 3 files changed, 95 insertions(+) create mode 100644 TEMA6/img6.png create mode 100644 TEMA6/moduletest.md create mode 100644 TEMA6/modultest2.txt diff --git a/TEMA6/img6.png b/TEMA6/img6.png new file mode 100644 index 0000000000000000000000000000000000000000..6be251505ac3c87a9fd7fa288247e737ed1c3a33 GIT binary patch literal 32248 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 low): + k+=1 + print('Кол-во эл-тов в диапазоне ', low, ', ', up, ' - ', k) + k = 0 + + +Кол-во эл-тов в диапазоне 15.0 , 21.6 - 11 +Кол-во эл-тов в диапазоне 21.6 , 28.2 - 9 +Кол-во эл-тов в диапазоне 28.2 , 34.8 - 13 +Кол-во эл-тов в диапазоне 34.8 , 41.4 - 12 +Кол-во эл-тов в диапазоне 41.4 , 48.0 - 14 +count = 0 +for i in rannum: + count+=1 + + +print('Кол-во элементов в списке - ', count) +Кол-во элементов в списке - 59 + +fp = open('modultest2.txt', 'w') + +for i in range (0, len(rannum), 4): + ch = rannum[i:i+4] + line = ', '.join(map(str, ch)) + fp.write(line + '\n') + + +77 +77 +77 +77 +71 +77 +78 +78 +79 +77 +75 +77 +76 +76 +58 +fp.close() +``` +![Результат записи в файл](img6.png) + diff --git a/TEMA6/modultest2.txt b/TEMA6/modultest2.txt new file mode 100644 index 0000000..a364daf --- /dev/null +++ b/TEMA6/modultest2.txt @@ -0,0 +1,15 @@ +44.33429235528566, 31.820431363385882, 20.71109812778893, 18.375167238126423 +29.507081962303058, 28.39746206639243, 42.445363903985545, 38.45520256573554 +33.29746000380693, 32.04861929535236, 38.776674170573614, 24.526054455786053 +19.042823522968227, 46.19636662677563, 32.322393521553494, 36.72731850346737 +42.19758701932, 47.17300510987348, 35.40764757467959, 44.0228687502407 +37.42128632267817, 40.73000894105289, 36.188263215335496, 19.228399965731327 +32.509044599774654, 33.063795297569655, 16.51622853734086, 27.043696679512326 +38.76688110687924, 41.694563548299456, 18.090256790951102, 24.146622589551626 +46.022240775849156, 27.337873436434855, 25.818198487764242, 17.620887117317903 +41.7772634578061, 28.955963377133557, 20.732440239488263, 43.836130799227604 +36.38313005309695, 23.39900028180741, 18.487299665381805, 44.1365158534337 +28.29061567973843, 46.554219745084914, 27.41669047229879, 18.585108121517557 +33.24982188391494, 44.60821739112903, 18.526684849434446, 45.13480541690015 +26.40627485198803, 38.58591180454186, 21.99657237743291, 36.134907564652366 +33.973323777969625, 35.21691704933769, 29.653627985382343 From dfb63b28951afe6251b371a6733d6a6c9c64b793 Mon Sep 17 00:00:00 2001 From: SavinSA Date: Wed, 19 Nov 2025 18:02:00 +0300 Subject: [PATCH 19/24] report first half --- TEMA7/pic1.png | Bin 0 -> 21249 bytes TEMA7/report.md | 324 ++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 324 insertions(+) create mode 100644 TEMA7/pic1.png create mode 100644 TEMA7/report.md diff --git a/TEMA7/pic1.png b/TEMA7/pic1.png new file mode 100644 index 0000000000000000000000000000000000000000..c6f4a198da88f789e51287bb39790e14530b8407 GIT binary patch literal 21249 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 import os +>>> os.chdir('C:\\Users\\somas\\python-labs\\TEMA7') +>>> +``` + +## 2.1 Создание пользовательской функции без аргументов + +```py +>>> def uspeh(): + """Подтверждение успеха операции""" + print('Выполнено успешно!') + + +>>> uspeh() +Выполнено успешно! +>>> dir() +['__annotations__', '__builtins__', '__doc__', '__loader__', '__name__', '__package__', '__spec__', 'os', 'uspeh'] +>>> help(uspeh) +Help on function uspeh in module __main__: + +uspeh() + Подтверждение успеха операции +``` + +## 2.2. Функция с аргументами + + +```py +>>> def sravnenie(a,b): + """Сравнение a и b""" + if a>b: + print(a, 'больше', b) + elif a>> +>>> n,m = 16,5; sravnenie(n,m) +16 больше 5 +>>> help(sravnenie) +Help on function sravnenie in module __main__: + +sravnenie(a, b) + Сравнение a и b +``` + +## 2.3. Функция с return + +```py +>>> def logistfun(b,a): + """Вычисление логистической функции""" + import math + return a/(1+math.exp(-b)) + +>>> v,w = 1,0.7; z=logistfun(w,v) +>>> z +0.6681877721681662 +>>> +``` + +## 2.4. Сложение для разных типов аргументов + +```py +>>> def slozh(a1,a2,a3,a4): + """Сложение значений четырех аргументов""" + return a1+a2+a3+a4 + +>>> slozh(1,2,3,4) +10 +>>> slozh('1', '2', '3', '4') +'1234' +>>> b1=[1,2]; b2=[-1,-2]; b3=[0,2]; b4=[-1,-1] +>>> q = slozh(b1,b2,b3,b4) +>>> q +[1, 2, -1, -2, 0, 2, -1, -1] +>>> b1 = (1,2); b2 = (3,4); b3=(5,6); b4=(7,8) +>>> c = slozh(b1,b2,b3,b4) +>>> c +(1, 2, 3, 4, 5, 6, 7, 8) +>>> b1 = {a:1}; b2 = {b:2}; b3 ={c:3}; b4 ={d:4} +Traceback (most recent call last): + File "", line 1, in + b1 = {a:1}; b2 = {b:2}; b3 ={c:3}; b4 ={d:4} +NameError: name 'a' is not defined +>>> b1 = {'a':1}; b2 = {'b':2}; b3 ={'c':3}; b4 ={'d':4} +>>> s = slozh(b1,b2,b3,b4) +Traceback (most recent call last): + File "", line 1, in + s = slozh(b1,b2,b3,b4) + File "", line 3, in slozh + return a1+a2+a3+a4 +TypeError: unsupported operand type(s) for +: 'dict' and 'dict' +>>> b1 = {1,2}; b2 ={3,4}; b3={5,6}; b4={7,8} +>>> m = slozh(b1,b2,b3,b4) +Traceback (most recent call last): + File "", line 1, in + m = slozh(b1,b2,b3,b4) + File "", line 3, in slozh + return a1+a2+a3+a4 +TypeError: unsupported operand type(s) for +: 'set' and 'set' +``` + +## 2.5. + +```py +>>> def inerz(x,T, ypred): + """Модель устройства с памятью: + x - текущее значение вх. сигнала + T - пост. времени + ypred - предыдущее значение выхода устройства""" + y = (x+T*ypred)/(T+1) + return y + +>>> sps=[0]+[1]*100 +>>> spsy=[] +>>> TT = 20 +>>> yy = 0 +>>> for xx in sps: + yy=inerz(xx,TT,yy) + spsy.append(yy) + + +>>> spsy +[0.0, 0.047619047619047616, 0.09297052154195011, 0.13616240146852393, 0.177297525208118, 0.21647383353154095, 0.25378460336337233, 0.2893186698698784, 0.3231606379713128, 0.35539108378220263, 0.38608674645924057, 0.4153207109135625, 0.4431625818224405, 0.46967864935470527, 0.4949320470044812, 0.5189829019090297, 0.5418884780085997, 0.5637033123891426, 0.5844793451325168, 0.6042660429833493, 0.6231105171269993, 0.6410576353590469, 0.6581501289133781, 0.6744286942032173, 0.6899320897173498, 0.7046972283022379, 0.7187592650497504, 0.7321516809997624, 0.7449063628569166, 0.7570536789113491, 0.768622551344142, 0.7796405250896592, 0.7901338334187231, 0.800127460398784, 0.8096452003797943, 0.8187097146474231, 0.8273425853784983, 0.8355643670271411, 0.8433946352639439, 0.8508520335847084, 0.8579543176997223, 0.8647183978092594, 0.8711603788659613, 0.8772955989199631, 0.88313866563806, 0.8887034910838667, 0.8940033248417778, 0.899050785563598, 0.9038578910129503, 0.9084360866790003, 0.9127962730276193, 0.9169488314548756, 0.9209036490046435, 0.9246701419091843, 0.9282572780087468, 0.9316735981035684, 0.9349272362891128, 0.9380259393229645, 0.94097708506949, 0.9437877000661808, 0.9464644762535056, 0.9490137869081006, 0.9514417018172386, 0.9537540017307035, 0.9559561921244795, 0.958053516309028, 0.96005096791336, 0.9619533027746285, 0.963765050261551, 0.9654905240586201, 0.9671338324367811, 0.9686988880350297, 0.9701894171762188, 0.971608968739256, 0.9729609226088152, 0.9742484977226811, 0.9754747597358867, 0.976642628319892, 0.9777548841141828, 0.9788141753468407, 0.9798230241398483, 0.9807838325141413, 0.981698888108706, 0.982570369627339, 0.9834003520260372, 0.9841908114533686, 0.9849436299555892, 0.9856605999577039, 0.9863434285311466, 0.9869937414582349, 0.9876130871030808, 0.9882029400981722, 0.988764704855402, 0.9892997189099068, 0.9898092561046732, 0.9902945296234982, 0.9907566948795221, 0.9911968522662116, 0.9916160497773444, 0.9920152855022327, 0.9923955100021263] +>>> import pylab +>>> pylab.plot(spsy) +[] +>>> pylab.show + +>>> pylab.show() +``` +![Скриншот полученного графика](pic1.png) + +## 3.1. Получение списка атрибутов объекта-функции. + +```py +>>> dir(inerz) +['__annotations__', '__call__', '__class__', '__closure__', '__code__', '__defaults__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__get__', '__getattribute__', '__globals__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__kwdefaults__', '__le__', '__lt__', '__module__', '__name__', '__ne__', '__new__', '__qualname__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__'] +>>> inerz.__doc__ +'Модель устройства с памятью:\n\tx - текущее значение вх. сигнала\n\tT - пост. времени\n\typred - предыдущее значение выхода устройства' +>>> help(inerz) +Help on function inerz in module __main__: + +inerz(x, T, ypred) + Модель устройства с памятью: + x - текущее значение вх. сигнала + T - пост. времени + ypred - предыдущее значение выхода устройства +``` + +## 3.2. Сохранение ссылки на объект-функцию в другой переменной + +```py +>>> fnkt=sravnenie +>>> v=16 +>>> fnkt(v,23) +16 меньше 23 +``` + +## 3.3. Возможность альтернативного определения функции в программе + +```py +>>> typ_fun = 8 +>>> if typ_fun==1: + def func(): + print('Функция 1') +else: + def func(): + print('Функция 2') + + +>>> func() +Функция 2 +``` + +## 4.1. Использование функции как аргумента другой функции + +```py +>>> def fun_arg(fff,a,b,c): + """fff-имя функции, используемой + в качестве аргумента функции fun_arg""" + return a+fff(c,b) + +>>> zz = fun_arg(logistfun, -3,1,0.7) +>>> zz +-2.3318122278318336 +``` + +## 4.2. Обязательные и необязательные аргументы + +```py +>>> def logistfun(a,b=1): + """Вычисление логистической функции""" + import math + return b/(1+math.exp(-a)) + +>>> logistfun(0.7) +0.6681877721681662 +>>> logistfun(0.7,2) +1.3363755443363323 +``` + +## 4.3. Возможность обращения к функции с произвольным расположением аргументов + +```py +>>> logistfun(b=0.5,a=0.8) +0.34498724056380625 +``` + +## 4.4. Пример со значениями аргументов функции, содержащимися в списке или кортеже. + +```py +>>> b1=[1,2]; b2=[-1,-2]; b3=[0,2]; b4=[-1,-1] +>>> b1234 = [b1,b2,b3,b4] +>>> qq = slozh(*b1234) +>>> qq +[1, 2, -1, -2, 0, 2, -1, -1] +``` + +## 4.5. Пример со значениями аргументов функции, содержащимися в словаре + +```py +>>> dic4={"a1":1, "a2":2, "a3":3, "a4":4} +>>> qqq=slozh(**dic4) +>>> qqq +10 +``` + +## 4.6. Смешанные ссылки + +```py +>>> el=(-1,6);dd2={'a3':3,'a4':9} +>>> qqqq=slozh(*el,**dd2) +>>> qqqq +17 +``` + +## 4.7. Переменное число аргументов у функции + +```py +>>> def func4(*kort7): + """Произвольное число аргументов в составе кортежа""" + smm=0 + for elt in kort7: + smm+=elt + return smm + +>>> func4(-1,2) +1 +>>> func4(-1,2,0,3,6) +10 +>>> +``` + +## 4.8. Комбинация аргументов + +```py +>>> def func4(a,b=7, *kort7): + """Кортеж - сборка аргументов - должен быть последним""" + smm=0 + for elt in kort7: + smm+=elt + return a*smm+b + +>>> func4(-1,2,0,3,6) +-7 +>>> func4(-1, 2, 1,2,3) +-4 +>>> def func5(a,b=7, **slov7): + """Словарь - сборка аргументов - должен быть последним""" + smm=0 + for elt in slov7.values(): + smm+=elt + return a*smm+b + +>>> func5(-1,2, aslov=0,bslov=3,cslov=6) +-7 +``` + +## 4.9. Изменение значений объектов, используемых в качестве аргументов функции + +```py +>>> a=90 +>>> def func3(b): + b=5*b+67 + + +>>> func3(a) +>>> a +90 +>>> sps1=[1,2,3,4] +>>> def func2(sps): + sps[1]=99 + + +>>> func2(sps1) +>>> print(sps1) +[1, 99, 3, 4] +>>> kort1 = (1,2,3,4) +>>> def func3(kort): + kort[1]=99 + + +>>> func3(kort1) +Traceback (most recent call last): + File "", line 1, in + func3(kort1) + File "", line 2, in func3 + kort[1]=99 +TypeError: 'tuple' object does not support item assignment +>>> kort1 +(1, 2, 3, 4) +``` + + From 92a96b6b461968dfb5e3a1eb1b6d971757766c29 Mon Sep 17 00:00:00 2001 From: SavinSA Date: Mon, 24 Nov 2025 02:24:41 +0300 Subject: [PATCH 20/24] report full --- TEMA7/pic2.png | Bin 0 -> 16995 bytes TEMA7/report.md | 213 ++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 213 insertions(+) create mode 100644 TEMA7/pic2.png diff --git a/TEMA7/pic2.png b/TEMA7/pic2.png new file mode 100644 index 0000000000000000000000000000000000000000..076dcd5ab7eb0923c703d735b53116fdd5f81466 GIT binary patch literal 16995 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 literal 0 HcmV?d00001 diff --git a/TEMA7/report.md b/TEMA7/report.md index 145580c..fc27c86 100644 --- a/TEMA7/report.md +++ b/TEMA7/report.md @@ -321,4 +321,217 @@ TypeError: 'tuple' object does not support item assignment (1, 2, 3, 4) ``` +## 5.1. Специальные типы пользовательских функций. Анонимные функции + +```py +>>> import math +>>> anfun1 = lambda: 1.5+math.log10(17.23) +>>> anfun1() +2.7362852774480286 +>>> anfun2 = lambda a,b: a+math.log10(b) +>>> anfun2(17,234) +19.369215857410143 +>>> anfun3=lambda a,b=234: a+math.log10(b) +>>> anfun3(100) +102.36921585741014 +>>> +``` + +## 5.2. Функции-генераторы + +```py +>>> def func5(diap,shag): + """Итератор, возвращающий значения + из диапазона от 1 до diap с шагом shag""" + for j in range(1,diap+1, shag): + yield j + + +>>> for mm in func5(7,3): + print(mm) + + +1 +4 +7 +>>> alp = func5(7,3) +>>> print(alp,__next__()) +>>> print(alp.__next__()) +1 +>>> print(alp.__next__()) +4 +>>> print(alp.__next__()) +7 +>>> print(alp.__next__()) +Traceback (most recent call last): + File "", line 1, in + print(alp.__next__()) +StopIteration +``` + +## 6.1. Примеры на локализацию объектов + +### Пример 1. +```py +>>> glb=10 +>>> def func7(arg): + loc1=15 + glb=8 + return loc1*arg + +>>> res=func7(glb) +>>> res +150 +>>> glb +10 +``` + +### Пример 2. + +```py +>>> def func8(arg): + loc1 = 15 + print(glb) + glb=8 + return(loc1*arg) + +>>> res=func8(glb) +Traceback (most recent call last): + File "", line 1, in + res=func8(glb) + File "", line 3, in func8 + print(glb) +UnboundLocalError: local variable 'glb' referenced before assignment +>>> def func8(arg): + loc1 = 15 + glb=8 + print(glb) + return(loc1*arg) + +>>> res = func8(glb) +8 +>>> res +150 +>>> +``` + +### Пример 3. + +```py +>>> glb = 11 +>>> def func7(arg): + loc1=15 + global glb + print(glb) + glb = 8 + return loc1*arg + +>>> res = func7(glb) +11 +>>> glb +8 +``` + +## 6.2. Выявление локализации + +```py +>>> globals().keys() +dict_keys(['__name__', '__doc__', '__package__', '__loader__', '__spec__', '__annotations__', '__builtins__', 'os', 'anfun1', 'math', 'anfun2', 'anfun3', 'func5', 'mm', 'alp', 'glb', 'func7', 'res', 'func8']) +>>> locals().keys() +dict_keys(['__name__', '__doc__', '__package__', '__loader__', '__spec__', '__annotations__', '__builtins__', 'os', 'anfun1', 'math', 'anfun2', 'anfun3', 'func5', 'mm', 'alp', 'glb', 'func7', 'res', 'func8']) +>>> def func8(arg): + loc1 = 15 + glb=8 + print(globals().keys()) + print(locals().keys()) + return loc1*arg + +>>> hh=func8(glb) +dict_keys(['__name__', '__doc__', '__package__', '__loader__', '__spec__', '__annotations__', '__builtins__', 'os', 'anfun1', 'math', 'anfun2', 'anfun3', 'func5', 'mm', 'alp', 'glb', 'func7', 'res', 'func8']) +dict_keys(['arg', 'loc1', 'glb']) +>>> 'glb' in globals().keys() +True +``` +## 6.3. Локализация объектов при работе с вложенными функциями + +```py +>>> def func9(arg2,arg3): + def func9_1(arg1): + loc1=15 + glb1=8 + print('glob_func9_1:', globals().keys()) + print('loc1_func9_1:', locals().keys()) + return loc1*arg1 + loc1=5 + glb=func9_1(loc1) + print('loc_func9:',locals().keys()) + print('glob_func9:',globals().keys()) + return arg2+arg3*glb + +>>> kk=func9(10,1) +glob_func9_1: dict_keys(['__name__', '__doc__', '__package__', '__loader__', '__spec__', '__annotations__', '__builtins__', 'os', 'anfun1', 'math', 'anfun2', 'anfun3', 'func5', 'mm', 'alp', 'glb', 'func7', 'res', 'func8', 'hh', 'func9']) +loc1_func9_1: dict_keys(['arg1', 'loc1', 'glb1']) +loc_func9: dict_keys(['arg2', 'arg3', 'func9_1', 'loc1', 'glb']) +glob_func9: dict_keys(['__name__', '__doc__', '__package__', '__loader__', '__spec__', '__annotations__', '__builtins__', 'os', 'anfun1', 'math', 'anfun2', 'anfun3', 'func5', 'mm', 'alp', 'glb', 'func7', 'res', 'func8', 'hh', 'func9']) +>>> kk +85 +``` + +## 6.4. + +```py +>>> znach=input('k1,T,k2,Xm,A,F,N=').split(',') +k1,T,k2,Xm,A,F,N=5,20,2,1,10,0.02,50 +>>> T=float(znach[1]) +>>> k2 = float(znach[2]) +>>> k1=float(znach[0]) +>>> Xm = float(znach[3]) +>>> A=float(znach[4]) +>>> F=float(znach[5]) +>>> N=int(znach[6]) +>>> vhod=[] +>>> for i in range(N): + vhod.append(A*math.sin((2*i*math.pi)*F)) + + +>>> vhod +[0.0, 1.2533323356430426, 2.486898871648548, 3.6812455268467796, 4.817536741017153, 5.877852522924732, 6.845471059286887, 7.705132427757892, 8.443279255020151, 9.048270524660197, 9.510565162951535, 9.822872507286887, 9.980267284282716, 9.980267284282716, 9.822872507286887, 9.510565162951536, 9.048270524660195, 8.44327925502015, 7.705132427757892, 6.845471059286888, 5.877852522924733, 4.817536741017152, 3.6812455268467814, 2.486898871648548, 1.2533323356430408, 1.2246467991473533e-15, -1.2533323356430428, -2.486898871648546, -3.681245526846779, -4.817536741017154, -5.87785252292473, -6.845471059286884, -7.705132427757894, -8.443279255020153, -9.048270524660198, -9.510565162951535, -9.822872507286887, -9.980267284282716, -9.980267284282716, -9.822872507286887, -9.510565162951536, -9.048270524660198, -8.44327925502015, -7.705132427757896, -6.84547105928689, -5.877852522924734, -4.817536741017153, -3.6812455268467787, -2.486898871648545, -1.2533323356430466] +>>> def realdvig(xtt,kk1,TT,yti1,ytin1): + yp=kk1*xtt + yti1=yp+yti1 + ytin1=(yti1+TT*ytin1)/(TT+1) + return [yti1,ytin1] + +>>> def tahogen(xtt,kk2,yti2): + yp=kk2*xtt + yti2=yp+yti2 + return yti2 + +>>> def nechus(xtt,gran): + if xtt(-gran): + ytt=0 + elif xtt>=gran: + ytt=xtt-gran + elif xtt<=(-gran): + ytt=xtt+gran + return ytt + +>>> yi1=0;yin1=0;yi2=0 +>>> vyhod=[] +>>> for xt in vhod: + xt1=xt-yi2 + [yi1,yin1]=realdvig(xt1,k1,T,yi1,yin1) + yi2=tahogen(yin1,k2,yi2) + yt=nechus(yin1,Xm) + vyhod.append(yt) + + +>>> print('y=',vyhod) +y= [0, 0, 0.03263241167294595, 0.9745456461939759, 1.4445477037255587, 0.5534963485187296, -0.14317115231403954, -3.810424583957446, -5.935617950854518, -3.1454619295767294, 4.410078865544928, 17.906974115100144, 26.191694213352932, 16.564012161149634, -16.52439077227259, -67.59051021156763, -101.3214249457787, -69.9621783842152, 55.00346225455457, 246.14981490076363, 380.49988175932214, 278.83918136760593, -179.12097686946288, -894.831188510742, -1427.8203056594884, -1106.6971235336005, 553.0427518851675, 3227.436842271835, 5328.628272818676, 4345.723637601036, -1642.536200959916, -11619.299856185102, -19859.46237228057, -16988.531756411103, 4552.501490270824, 41710.04551030272, 73876.07518877511, 66108.68459616054, -11169.337014708513, -149332.61878005945, -274368.6364383781, -256250.17990633397, 20228.386522231223, 533135.2397813796, 1017335.790045514, 989751.144011423, 3441.7330011494814, -1897576.0088700322, -3766140.0629690504, -3810393.13835538] +>>> import pylab +>>> pylab.plot(vyhod) +[] +>>> pylab.show() +``` +![Скриншот полученного графика](pic2.png) From 9cf6b160e174b5329a69c03a78178636406b6ef6 Mon Sep 17 00:00:00 2001 From: SavinSA Date: Mon, 24 Nov 2025 02:46:24 +0300 Subject: [PATCH 21/24] task added --- TEMA7/task.md | 57 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 57 insertions(+) create mode 100644 TEMA7/task.md diff --git a/TEMA7/task.md b/TEMA7/task.md new file mode 100644 index 0000000..b6866d1 --- /dev/null +++ b/TEMA7/task.md @@ -0,0 +1,57 @@ +# Общее контрольное задание по теме 7 + +Савин Семён, А-02-23 + +## Задание + +• Разработайте и проверьте функцию, реализующую для момента времени t расчет выхода y(t) для устройства задержки: на вход поступает сигнал, а на выходе повторяется этот сигнал с за-держкой на заданное время Т. + +• Разработайте и проверьте функцию, реализующую расчет гистограммы по выборке случайной величины с каким-то распределением. Гистограмма при выводе на экран представляется в ви-де таблицы: границы интервала, число элементов выборки в интервале. Аргументы функции: выборка, число интервалов разбиения диапазона изменения случайной величины. Возвращае-мый результат функции: список с числами элементов выборки в интервалах разбиения. + +• Разработайте и проверьте анонимную функцию, вычисляющую значение оценки отклика Y линейной регрессии при значении переменной Х +Y=b1+b2*X и имеющую аргументы b1, b2 и X. + +## Решение + +```py +>>> def delay(vhod, t): + """Функция задержки + Входной сигнал - vhod + Задержка - t""" + return [0]*T + vhod + +>>> sign = [1,2,3,4,5] +>>> T = 9 +>>> t = 9 +>>> delay(sign,t) +[0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 4, 5] +>>> def hist(x, bins): + low = min(x) + high = max(x) + inter = ((high-low)/bins) + binsdata=[] + for i in range(bins): + lo = low+i*inter + up = low + (i+1)*inter + binsdata.append(len(list(filter(lambda j: lo<= j and up > j, x)))) + if i == bins-1: + binsdata[i]+=1 + print("Интервал ", {i+1}, ' - от ', lo, ' до ', up, 'кол-во элементов - ', binsdata[i]) + return binsdata + +>>> x = [random.gauss(150, 10) for i in range(100)] +>>> analiz = hist(x,7) +Интервал {1} - от 127.66589446294806 до 134.22890486557336 кол-во элементов - 2 +Интервал {2} - от 134.22890486557336 до 140.79191526819864 кол-во элементов - 9 +Интервал {3} - от 140.79191526819864 до 147.35492567082395 кол-во элементов - 10 +Интервал {4} - от 147.35492567082395 до 153.91793607344923 кол-во элементов - 37 +Интервал {5} - от 153.91793607344923 до 160.4809464760745 кол-во элементов - 23 +Интервал {6} - от 160.4809464760745 до 167.04395687869982 кол-во элементов - 14 +Интервал {7} - от 167.04395687869982 до 173.6069672813251 кол-во элементов - 5 +>>> print(analiz) +[2, 9, 10, 37, 23, 14, 5] + +>>> regr = lambda x, b1,b2: b1+b2*x +>>> regr(12, 50, 1) +62 +``` \ No newline at end of file From c3ca705250b62cdd432aba1e131c5f96f577276d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=9F=D0=BE=D0=BB=D1=8C=D0=B7=D0=BE=D0=B2=D0=B0=D1=82?= =?UTF-8?q?=D0=B5=D0=BB=D1=8C=20=E2=84=96=209=20=D0=B0=D1=83=D0=B4=D0=B8?= =?UTF-8?q?=D1=82=D0=BE=D1=80=D0=B8=D0=B8=20=D0=96-206?= Date: Mon, 24 Nov 2025 14:22:32 +0300 Subject: [PATCH 22/24] indtask addded --- TEMA7/indtask.md | 62 +++++++++++++++++++++++++ TEMA7/resultindtask.txt | 100 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 162 insertions(+) create mode 100644 TEMA7/indtask.md create mode 100644 TEMA7/resultindtask.txt diff --git a/TEMA7/indtask.md b/TEMA7/indtask.md new file mode 100644 index 0000000..095340f --- /dev/null +++ b/TEMA7/indtask.md @@ -0,0 +1,62 @@ +# Индивидуальное задание к теме 7 + +Савин Семён, А-02-23 + +## Вариант 9 + +## Задание + +Разработайте функцию с 3 параметрами: х, yT и T, реализующую расчет по значениям последовательности значений входного сигнала х значений выходного сигнала по формуле: y= (x+T*yТ)/(T+1). Здесь х- одно текущее значение входного сигнала, yT – значение выходного сигнала в предыдущий момент времени, Т – постоянная времени инерционного звена. Создайте список с последовательностью из 100 значений входного синусоидального сигнала с амплитудой 2, периодом 7 и фазой 0.35. Рассчитайте последовательность значений выходных сигналов, принимая Т=3 и yT равным предыдущему в последовательности вычисленных значений y (для первого значения х принять yT=0). Записать результаты в текстовый файл в виде двух столбцов: хi, yi. + +## Решение + +```py +import math +def rasch(x,yT,T): + """Расчет выходного значения""" + return (x + T*yT)/(T+1) + +def generator(n, A, tau, phi): + sign = [] + for i in range(n): + t = i + x = A*math.sin(2*math.pi*t/tau + phi) + sign.append(x) + return sign + +def output(inputsign, T): + outputsign = [] + yT = 0 + for x in inputsign: + y = rasch(x,yT,T) + outputsign.append(y) + yT=y + return outputsign + +saving(inputsign,outputsign,'resultindtask.txt') +def saving(inputsign, outputsign, filename): + with open(filename, 'w', encoding = 'utf-8') as file: + for i in range(len(inputsign)): + file.write(f'{inputsign[i]:.6f}, {outputsign[i]:.6f}\n' + +n = 100 +A = 2 +tau = 7 +phi = 0.35 +T=3 + +inputsign = generator(n,A,tau,phi) +inputsign +[0.6857956149109027, 1.8964488934073493, 1.6790374746606227, 0.19727659137173062, -1.4330375889291693, -1.9842452361268608, -1.0412757492945761, 0.6857956149109016, 1.896448893407349, 1.6790374746606234, 0.197276591371732, -1.4330375889291658, -1.984245236126861, -1.0412757492945734, 0.6857956149109011, 1.8964488934073476, 1.6790374746606236, 0.19727659137172895, -1.4330375889291704, -1.9842452361268605, -1.041275749294574, 0.685795614910904, 1.8964488934073476, 1.679037474660622, 0.19727659137172943, -1.43303758892917, -1.9842452361268597, -1.0412757492945743, 0.6857956149109036, 1.8964488934073496, 1.679037474660626, 0.19727659137172993, -1.4330375889291698, -1.9842452361268605, -1.0412757492945688, 0.685795614910903, 1.8964488934073493, 1.6790374746606225, 0.19727659137173043, -1.4330375889291695, -1.9842452361268608, -1.0412757492945752, 0.6857956149109026, 1.8964488934073493, 1.6790374746606305, 0.1972765913717309, -1.433037588929169, -1.9842452361268608, -1.0412757492945757, 0.6857956149109021, 1.8964488934073491, 1.6790374746606231, 0.19727659137171724, -1.4330375889291689, -1.9842452361268608, -1.0412757492945761, 0.6857956149109017, 1.896448893407349, 1.6790374746606234, 0.19727659137173187, -1.4330375889291584, -1.9842452361268608, -1.0412757492945766, 0.6857956149109012, 1.8964488934073487, 1.6790374746606236, 0.19727659137173237, -1.4330375889291682, -1.9842452361268592, -1.041275749294577, 0.6857956149109008, 1.8964488934073487, 1.6790374746606316, 0.19727659137176112, -1.4330375889291578, -1.9842452361268645, -1.0412757492945894, 0.6857956149109004, 1.896448893407344, 1.6790374746606243, 0.19727659137174747, -1.4330375889291476, -1.9842452361268628, -1.0412757492945777, 0.6857956149108865, 1.8964488934073482, 1.679037474660632, 0.19727659137176212, -1.4330375889291374, -1.9842452361268612, -1.0412757492945903, 0.6857956149108727, 1.8964488934073436, 1.67903747466064, 0.19727659137174847, -1.4330375889291667, -1.984245236126863, -1.0412757492946028, 0.6857956149108856, 1.896448893407348] + +outputsign = output(inputsign,T) +outputsign +[0.17144890372772567, 0.6026989011476316, 0.8717835445258794, 0.7031568062373422, 0.16910820744571436, -0.36923015344742943, -0.5372415524092161, -0.23148226057918672, 0.3005005279174472, 0.6451347646032413, 0.533170221295364, 0.04161826873923152, -0.4648476074772916, -0.6089546429316121, -0.28526707847098376, 0.26016191449859905, 0.6148808045391052, 0.5104797512472612, 0.024600416203153286, -0.47761099687935016, -0.6185271849831562, -0.2924464850096411, 0.25477735959460607, 0.61084238836111, 0.5074509391137649, 0.0223288071030312, -0.4793147037044415, -0.6198049651019748, -0.29340482009875524, 0.25405860827777094, 0.6103033248734847, 0.507046641498046, 0.02202558389124204, -0.4795421211132836, -0.6199755281586049, -0.2935327423912279, 0.25396266655841643, 0.610231368583968, 0.5069926742809086, 0.021985108478389026, -0.47957247767292344, -0.6199982955783363, -0.2935498179560266, 0.2539498598848174, 0.6102217635787707, 0.5069854705270107, 0.021979705662965754, -0.4795765297844909, -0.6200013346620121, -0.29355209726878356, 0.2539481504002496, 0.6102204814653429, 0.5069845089419365, 0.021978984474160135, -0.4795770706760951, -0.6200017403307154, -0.29355240152031115, 0.2539479222116039, 0.6102203103238588, 0.5069843805858271, 0.021978888207080716, -0.4795771428764046, -0.6200017944809476, -0.2935524421329854, 0.2539478917520981, 0.6102202874792295, 0.5069843634523552, 0.021978875356974348, -0.47957715251398403, -0.6200018017091322, -0.29355244755412396, 0.2539478876862442, 0.610220284429841, 0.5069843611653211, 0.02197887364170137, -0.4795771538004401, -0.6200018026739774, -0.293552448277758, 0.2539478871435175, 0.6102202840227942, 0.5069843608600325, 0.021978873412737465, -0.4795771539721626, -0.6200018028027664, -0.29355244837435324, 0.25394788707107213, 0.6102202839684621, 0.5069843608192871, 0.02197887338218102, -0.47957715399507955, -0.6200018028199572, -0.2935524483872497, 0.2539478870613986, 0.610220283961209, 0.5069843608138438, 0.02197887337809118, -0.4795771539981474, -0.6200018028222611, -0.29355244838897443, 0.2539478870601062] + +import os +os.chdir('C:\\Users\\u206-09\\Desktop\\python-labs\\TEMA7') + +saving(inputsign,outputsign,'resultindtask.txt') +``` + +Был создан файл содержащий два столбца с входным и выходным сигналом в папке. \ No newline at end of file diff --git a/TEMA7/resultindtask.txt b/TEMA7/resultindtask.txt new file mode 100644 index 0000000..83e5e77 --- /dev/null +++ b/TEMA7/resultindtask.txt @@ -0,0 +1,100 @@ +0.685796, 0.171449 +1.896449, 0.602699 +1.679037, 0.871784 +0.197277, 0.703157 +-1.433038, 0.169108 +-1.984245, -0.369230 +-1.041276, -0.537242 +0.685796, -0.231482 +1.896449, 0.300501 +1.679037, 0.645135 +0.197277, 0.533170 +-1.433038, 0.041618 +-1.984245, -0.464848 +-1.041276, -0.608955 +0.685796, -0.285267 +1.896449, 0.260162 +1.679037, 0.614881 +0.197277, 0.510480 +-1.433038, 0.024600 +-1.984245, -0.477611 +-1.041276, -0.618527 +0.685796, -0.292446 +1.896449, 0.254777 +1.679037, 0.610842 +0.197277, 0.507451 +-1.433038, 0.022329 +-1.984245, -0.479315 +-1.041276, -0.619805 +0.685796, -0.293405 +1.896449, 0.254059 +1.679037, 0.610303 +0.197277, 0.507047 +-1.433038, 0.022026 +-1.984245, -0.479542 +-1.041276, -0.619976 +0.685796, -0.293533 +1.896449, 0.253963 +1.679037, 0.610231 +0.197277, 0.506993 +-1.433038, 0.021985 +-1.984245, -0.479572 +-1.041276, -0.619998 +0.685796, -0.293550 +1.896449, 0.253950 +1.679037, 0.610222 +0.197277, 0.506985 +-1.433038, 0.021980 +-1.984245, -0.479577 +-1.041276, -0.620001 +0.685796, -0.293552 +1.896449, 0.253948 +1.679037, 0.610220 +0.197277, 0.506985 +-1.433038, 0.021979 +-1.984245, -0.479577 +-1.041276, -0.620002 +0.685796, -0.293552 +1.896449, 0.253948 +1.679037, 0.610220 +0.197277, 0.506984 +-1.433038, 0.021979 +-1.984245, -0.479577 +-1.041276, -0.620002 +0.685796, -0.293552 +1.896449, 0.253948 +1.679037, 0.610220 +0.197277, 0.506984 +-1.433038, 0.021979 +-1.984245, -0.479577 +-1.041276, -0.620002 +0.685796, -0.293552 +1.896449, 0.253948 +1.679037, 0.610220 +0.197277, 0.506984 +-1.433038, 0.021979 +-1.984245, -0.479577 +-1.041276, -0.620002 +0.685796, -0.293552 +1.896449, 0.253948 +1.679037, 0.610220 +0.197277, 0.506984 +-1.433038, 0.021979 +-1.984245, -0.479577 +-1.041276, -0.620002 +0.685796, -0.293552 +1.896449, 0.253948 +1.679037, 0.610220 +0.197277, 0.506984 +-1.433038, 0.021979 +-1.984245, -0.479577 +-1.041276, -0.620002 +0.685796, -0.293552 +1.896449, 0.253948 +1.679037, 0.610220 +0.197277, 0.506984 +-1.433038, 0.021979 +-1.984245, -0.479577 +-1.041276, -0.620002 +0.685796, -0.293552 +1.896449, 0.253948 From 719b887029c67f1a507032ac5c53a07893d8d682 Mon Sep 17 00:00:00 2001 From: SavinSA Date: Sun, 7 Dec 2025 02:23:04 +0300 Subject: [PATCH 23/24] full module8 --- TEMA1/report_BACKUP_1231.md | 140 +++++++++++++++++ TEMA1/report_BASE_1231.md | 0 TEMA1/report_LOCAL_1231.md | 127 ++++++++++++++++ TEMA1/report_REMOTE_1231.md | 124 +++++++++++++++ TEMA8/MM0.py | 2 + TEMA8/MM1.py | 19 +++ TEMA8/MM2.py | 23 +++ TEMA8/Mod0.py | 2 +- TEMA8/correlate.py | 25 +++ TEMA8/img1.png | Bin 0 -> 5198 bytes TEMA8/img2.png | Bin 0 -> 9241 bytes TEMA8/img3.png | Bin 0 -> 8819 bytes TEMA8/img4.png | Bin 0 -> 13201 bytes TEMA8/mainfile.py | 17 +++ TEMA8/num1.txt | 3 + TEMA8/num2.txt | 3 + TEMA8/readerfile.py | 9 ++ TEMA8/report.md | 294 ++++++++++++++++++++++++++++++++++++ TEMA8/task.md | 93 ++++++++++++ 19 files changed, 880 insertions(+), 1 deletion(-) create mode 100644 TEMA1/report_BACKUP_1231.md create mode 100644 TEMA1/report_BASE_1231.md create mode 100644 TEMA1/report_LOCAL_1231.md create mode 100644 TEMA1/report_REMOTE_1231.md create mode 100644 TEMA8/MM0.py create mode 100644 TEMA8/MM1.py create mode 100644 TEMA8/MM2.py create mode 100644 TEMA8/correlate.py create mode 100644 TEMA8/img1.png create mode 100644 TEMA8/img2.png create mode 100644 TEMA8/img3.png create mode 100644 TEMA8/img4.png create mode 100644 TEMA8/mainfile.py create mode 100644 TEMA8/num1.txt create mode 100644 TEMA8/num2.txt create mode 100644 TEMA8/readerfile.py create mode 100644 TEMA8/report.md create mode 100644 TEMA8/task.md diff --git a/TEMA1/report_BACKUP_1231.md b/TEMA1/report_BACKUP_1231.md new file mode 100644 index 0000000..8f0080a --- /dev/null +++ b/TEMA1/report_BACKUP_1231.md @@ -0,0 +1,140 @@ +<<<<<<< HEAD +# Отчет по теме 1 + +Савин Семён, А-02-23 + +# Основы языка программирования Python +======= +# Отчет по ЛР1 Савин С.А. + + +>>>>>>> e91ec08 (Task_2: report v1) + +## Пункты3-5 +Через командную строку вы +```py +print('Hello') +h=input('Your name is -') +Hello +Your name is -sam +exit() +``` +Программа закрыта (Вся командная строка) + +## Пункт 8: +```py +import os +os.chdir(r'C:\Users\u207-05\python-labs\TEMA1') +``` + +## Пункт 9: +Были изменены параметры текста в редакторе при помощи меню "Options" + +## Пункт 10: +Создан новый файл в редакторе написано: +```py +#This is a very profound comment +#Программа по Теме 1 Савин С.А. +print('Hello') +h = input('Your name is -') +import os +os.chdir(r'C:\Users\u207-05\python-labs\TEMA1') +``` +Модуль запущен +### Вывод: +```py += RESTART: C:/Users/u207-05/python-labs/TEMA1/Pr0.py +Hello +Your name is -sam +``` +Последняя команда выбора рабочей папки выполнена без ошибок. + +Также файл был выполнен следующим образом: +```py +import Pr0 +Hello +Your name is -sam +``` +И аналогично через клавишу F5 в открытом редакторе. + +## Пункт 11: +При помощи повторного вызова команды import вставили имя файла - "prb1" +```py +import prb1 +Как Вас зовут? Семён +Привет, Семён +``` + +## Пункт 12: +В папке __pycache__ нашел файл +pr0.cpython-311, открыл при помощи notepad++ +Содержимое: +§ + + №йєhВ г  уZ —  e d ¦ «   ed¦ « ZddlZ ej d¦ «  dS )ЪHellozYour name is -й Nz"C:\Users\u207-05\python-labs\TEMA1)ЪprintЪinputЪhЪosЪchdir© у ъ)C:\Users/u207-05/python-labs/TEMA1\Pr0.pyъr  sF рр ЂЂgЃ„ЂШ ЂEР +СФЂШ Ђ Ђ Ђ Ш Ђ„Р .С /Ф /Р /Р /Р /r + +Это резльтат компиляции, который выглядит так по причине того, что в данной папке хранятся байт-коды, используемые при запуске программы для увеличения оптимизации. + +## Пункт 13: +Пропущен по причине уже созданного файла report.md. + +## Пункт 14: +Вызвана команда help по нескольким функциям. +help(print) +Help on built-in function print in module builtins: + +print(*args, sep=' ', end='\n', file=None, flush=False) + Prints the values to a stream, or to sys.stdout by default. + + sep + string inserted between values, default a space. + end + string appended after the last value, default a newline. + file + a file-like object (stream); defaults to the current sys.stdout. + flush + whether to forcibly flush the stream. + +help(print),help(input) +Help on built-in function print in module builtins: + +print(*args, sep=' ', end='\n', file=None, flush=False) + Prints the values to a stream, or to sys.stdout by default. + + sep + string inserted between values, default a space. + end + string appended after the last value, default a newline. + file + a file-like object (stream); defaults to the current sys.stdout. + flush + whether to forcibly flush the stream. + +Help on built-in function input in module builtins: + +input(prompt='', /) + Read a string from standard input. The trailing newline is stripped. + + The prompt string, if given, is printed to standard output without a + trailing newline before reading input. + + If the user hits EOF (*nix: Ctrl-D, Windows: Ctrl-Z+Return), raise EOFError. + On *nix systems, readline is used if available. +Также была найдена запись о функции print() через f1 +## Пункт 15: +Были снова выполнены файлы из рабочей папки, проведена работа с окнами. +Результат работы tdemo_chaos: + +<<<<<<< HEAD +![Демонстрация хаоса](pic1.png) + +Результат работы часов clock из примеров для демо: + +![Часы](pic2.png) +======= +![C:\Users\u207-05\python-labs\TEMA1](pic1.png) + +Результат работы часов clock из примеров для демо: + +>>>>>>> e91ec08 (Task_2: report v1) diff --git a/TEMA1/report_BASE_1231.md b/TEMA1/report_BASE_1231.md new file mode 100644 index 0000000..e69de29 diff --git a/TEMA1/report_LOCAL_1231.md b/TEMA1/report_LOCAL_1231.md new file mode 100644 index 0000000..7033e83 --- /dev/null +++ b/TEMA1/report_LOCAL_1231.md @@ -0,0 +1,127 @@ +# Отчет по теме 1 + +Савин Семён, А-02-23 + +# Основы языка программирования Python + +## Пункты3-5 +Через командную строку вы +```py +print('Hello') +h=input('Your name is -') +Hello +Your name is -sam +exit() +``` +Программа закрыта (Вся командная строка) + +## Пункт 8: +```py +import os +os.chdir(r'C:\Users\u207-05\python-labs\TEMA1') +``` + +## Пункт 9: +Были изменены параметры текста в редакторе при помощи меню "Options" + +## Пункт 10: +Создан новый файл в редакторе написано: +```py +#This is a very profound comment +#Программа по Теме 1 Савин С.А. +print('Hello') +h = input('Your name is -') +import os +os.chdir(r'C:\Users\u207-05\python-labs\TEMA1') +``` +Модуль запущен +### Вывод: +```py += RESTART: C:/Users/u207-05/python-labs/TEMA1/Pr0.py +Hello +Your name is -sam +``` +Последняя команда выбора рабочей папки выполнена без ошибок. + +Также файл был выполнен следующим образом: +```py +import Pr0 +Hello +Your name is -sam +``` +И аналогично через клавишу F5 в открытом редакторе. + +## Пункт 11: +При помощи повторного вызова команды import вставили имя файла - "prb1" +```py +import prb1 +Как Вас зовут? Семён +Привет, Семён +``` + +## Пункт 12: +В папке __pycache__ нашел файл +pr0.cpython-311, открыл при помощи notepad++ +Содержимое: +§ + + №йєhВ г  уZ —  e d ¦ «   ed¦ « ZddlZ ej d¦ «  dS )ЪHellozYour name is -й Nz"C:\Users\u207-05\python-labs\TEMA1)ЪprintЪinputЪhЪosЪchdir© у ъ)C:\Users/u207-05/python-labs/TEMA1\Pr0.pyъr  sF рр ЂЂgЃ„ЂШ ЂEР +СФЂШ Ђ Ђ Ђ Ш Ђ„Р .С /Ф /Р /Р /Р /r + +Это резльтат компиляции, который выглядит так по причине того, что в данной папке хранятся байт-коды, используемые при запуске программы для увеличения оптимизации. + +## Пункт 13: +Пропущен по причине уже созданного файла report.md. + +## Пункт 14: +Вызвана команда help по нескольким функциям. +help(print) +Help on built-in function print in module builtins: + +print(*args, sep=' ', end='\n', file=None, flush=False) + Prints the values to a stream, or to sys.stdout by default. + + sep + string inserted between values, default a space. + end + string appended after the last value, default a newline. + file + a file-like object (stream); defaults to the current sys.stdout. + flush + whether to forcibly flush the stream. + +help(print),help(input) +Help on built-in function print in module builtins: + +print(*args, sep=' ', end='\n', file=None, flush=False) + Prints the values to a stream, or to sys.stdout by default. + + sep + string inserted between values, default a space. + end + string appended after the last value, default a newline. + file + a file-like object (stream); defaults to the current sys.stdout. + flush + whether to forcibly flush the stream. + +Help on built-in function input in module builtins: + +input(prompt='', /) + Read a string from standard input. The trailing newline is stripped. + + The prompt string, if given, is printed to standard output without a + trailing newline before reading input. + + If the user hits EOF (*nix: Ctrl-D, Windows: Ctrl-Z+Return), raise EOFError. + On *nix systems, readline is used if available. +Также была найдена запись о функции print() через f1 +## Пункт 15: +Были снова выполнены файлы из рабочей папки, проведена работа с окнами. +Результат работы tdemo_chaos: + +![Демонстрация хаоса](pic1.png) + +Результат работы часов clock из примеров для демо: + +![Часы](pic2.png) \ No newline at end of file diff --git a/TEMA1/report_REMOTE_1231.md b/TEMA1/report_REMOTE_1231.md new file mode 100644 index 0000000..269f46f --- /dev/null +++ b/TEMA1/report_REMOTE_1231.md @@ -0,0 +1,124 @@ +# Отчет по ЛР1 Савин С.А. + + + +## Пункты3-5 +Через командную строку вы +```py +print('Hello') +h=input('Your name is -') +Hello +Your name is -sam +exit() +``` +Программа закрыта (Вся командная строка) + +## Пункт 8: +```py +import os +os.chdir(r'C:\Users\u207-05\python-labs\TEMA1') +``` + +## Пункт 9: +Были изменены параметры текста в редакторе при помощи меню "Options" + +## Пункт 10: +Создан новый файл в редакторе написано: +```py +#This is a very profound comment +#Программа по Теме 1 Савин С.А. +print('Hello') +h = input('Your name is -') +import os +os.chdir(r'C:\Users\u207-05\python-labs\TEMA1') +``` +Модуль запущен +### Вывод: +```py += RESTART: C:/Users/u207-05/python-labs/TEMA1/Pr0.py +Hello +Your name is -sam +``` +Последняя команда выбора рабочей папки выполнена без ошибок. + +Также файл был выполнен следующим образом: +```py +import Pr0 +Hello +Your name is -sam +``` +И аналогично через клавишу F5 в открытом редакторе. + +## Пункт 11: +При помощи повторного вызова команды import вставили имя файла - "prb1" +```py +import prb1 +Как Вас зовут? Семён +Привет, Семён +``` + +## Пункт 12: +В папке __pycache__ нашел файл +pr0.cpython-311, открыл при помощи notepad++ +Содержимое: +§ + + №йєhВ г  уZ —  e d ¦ «   ed¦ « ZddlZ ej d¦ «  dS )ЪHellozYour name is -й Nz"C:\Users\u207-05\python-labs\TEMA1)ЪprintЪinputЪhЪosЪchdir© у ъ)C:\Users/u207-05/python-labs/TEMA1\Pr0.pyъr  sF рр ЂЂgЃ„ЂШ ЂEР +СФЂШ Ђ Ђ Ђ Ш Ђ„Р .С /Ф /Р /Р /Р /r + +Это резльтат компиляции, который выглядит так по причине того, что в данной папке хранятся байт-коды, используемые при запуске программы для увеличения оптимизации. + +## Пункт 13: +Пропущен по причине уже созданного файла report.md. + +## Пункт 14: +Вызвана команда help по нескольким функциям. +help(print) +Help on built-in function print in module builtins: + +print(*args, sep=' ', end='\n', file=None, flush=False) + Prints the values to a stream, or to sys.stdout by default. + + sep + string inserted between values, default a space. + end + string appended after the last value, default a newline. + file + a file-like object (stream); defaults to the current sys.stdout. + flush + whether to forcibly flush the stream. + +help(print),help(input) +Help on built-in function print in module builtins: + +print(*args, sep=' ', end='\n', file=None, flush=False) + Prints the values to a stream, or to sys.stdout by default. + + sep + string inserted between values, default a space. + end + string appended after the last value, default a newline. + file + a file-like object (stream); defaults to the current sys.stdout. + flush + whether to forcibly flush the stream. + +Help on built-in function input in module builtins: + +input(prompt='', /) + Read a string from standard input. The trailing newline is stripped. + + The prompt string, if given, is printed to standard output without a + trailing newline before reading input. + + If the user hits EOF (*nix: Ctrl-D, Windows: Ctrl-Z+Return), raise EOFError. + On *nix systems, readline is used if available. +Также была найдена запись о функции print() через f1 +## Пункт 15: +Были снова выполнены файлы из рабочей папки, проведена работа с окнами. +Результат работы tdemo_chaos: + +![C:\Users\u207-05\python-labs\TEMA1](pic1.png) + +Результат работы часов clock из примеров для демо: + diff --git a/TEMA8/MM0.py b/TEMA8/MM0.py new file mode 100644 index 0000000..1219d5d --- /dev/null +++ b/TEMA8/MM0.py @@ -0,0 +1,2 @@ +import MM2 +print('y=', MM2.vyhod) diff --git a/TEMA8/MM1.py b/TEMA8/MM1.py new file mode 100644 index 0000000..489fa63 --- /dev/null +++ b/TEMA8/MM1.py @@ -0,0 +1,19 @@ +def realdvig(xtt,kk1,TT,yti1,ytin1): + yp=kk1*xtt + yti1=yp+yti1 + ytin1=(yti1+TT*ytin1)/(TT+1) + return [yti1,ytin1] + +def tahogen(xtt,kk2,yti2): + yp=kk2*xtt + yti2=yp+yti2 + return yti2 + +def nechus(xtt,gran): + if xtt(-gran): + ytt=0 + elif xtt>=gran: + ytt=xtt-gran + elif xtt<=(-gran): + ytt=xtt+gran + return ytt diff --git a/TEMA8/MM2.py b/TEMA8/MM2.py new file mode 100644 index 0000000..cbba0a3 --- /dev/null +++ b/TEMA8/MM2.py @@ -0,0 +1,23 @@ +znach=input('k1,T,k2,Xm,A,F,N=').split(',') +k1=float(znach[0]) +T=float(znach[1]) +k2=float(znach[2]) +Xm=float(znach[3]) +A=float(znach[4]) +F=float(znach[5]) +N=int(znach[6]) + +import math +vhod=[] +for i in range(N): + vhod.append(A*math.sin((2*i*math.pi)/F)) + +import MM1 as mod +yi1=0;yin1=0;yi2=0 +vyhod=[] +for xt in vhod: + xt1=xt-yi2 #отрицательная обратная связь + [yi1,yin1]=mod.realdvig(xt1,k1,T,yi1,yin1) + yi2=mod.tahogen(yin1,k2,yi2) + yt=mod.nechus(yin1,Xm) + vyhod.append(yt) diff --git a/TEMA8/Mod0.py b/TEMA8/Mod0.py index 6337fc3..1087a18 100644 --- a/TEMA8/Mod0.py +++ b/TEMA8/Mod0.py @@ -1,4 +1,3 @@ -#Модуль Mod0 import Mod1 print('perm1=',Mod1.perm1) from Mod2 import alpha as al @@ -7,3 +6,4 @@ print('tt=',tt) from Mod2 import beta qq=beta(float(tt)) print('qq=',qq) +perm1 = Mod1.perm1 diff --git a/TEMA8/correlate.py b/TEMA8/correlate.py new file mode 100644 index 0000000..17f6d57 --- /dev/null +++ b/TEMA8/correlate.py @@ -0,0 +1,25 @@ +import math +def correlation(numbers1, numbers2): + if not numbers1 or not numbers2: + print('пусто') + return(0) + + n = min(len(numbers1), len(numbers2)) + + x = numbers1[:n] + y = numbers2[:n] + + meanx = sum(x)/n + meany = sum(y)/n + + sum1 = 0 + sum2 = 0 + sum3 = 0 + + for i in range (n): + sum1 += ((x[i] - meanx)*(y[i] - meany)) + sum2 += ((x[i] - meanx)**2) + sum3 += ((y[i] - meany)**2) + print(sum1,sum2,sum3) + return (sum1/math.sqrt(sum2*sum3)) + diff --git a/TEMA8/img1.png b/TEMA8/img1.png new file mode 100644 index 0000000000000000000000000000000000000000..751fc6a6689446a484c9d3d431df517b0942ea29 GIT binary patch literal 5198 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 literal 0 HcmV?d00001 diff --git a/TEMA8/img2.png b/TEMA8/img2.png new file mode 100644 index 0000000000000000000000000000000000000000..604f5bd5d8157396ba4f56cc432ca39194ae4266 GIT binary patch literal 9241 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 ZTGW`ZEV}XGssBWP?p;HzGL47P{{g48khuT= literal 0 HcmV?d00001 diff --git a/TEMA8/img4.png b/TEMA8/img4.png new file mode 100644 index 0000000000000000000000000000000000000000..5d3463fc73da76d6682398b87843ebb5c0d1d289 GIT binary patch literal 13201 zcmc(GXIN8Pw{F-LP&T4l0TBTO6#)?|NJ~Tnq>J<#6_H-06M~{5MTmfafDom3r1#L2 z7BTbyAp|6$g_=M@5|Z4w_bK0Z?mp)`KkoC~ADLNmuC?Y`b3Pekyze_kqVF4O^Bq2Q z7ytn9>D;^f007{Eb3V>I2RS2A{*;@XFRo_~wC@1Qf1Fj;Sl`!7DM+Z3l zL*DnSo&f+yx_*7Qdb|ps007r7=-gE|4YFUuwt3B)H*Ie9Y_K;C-_2xcUdZ}}(JH4r zesTMUpows3Z1Z~Vu;HU~uj^xC0S7NUa0&b&r|M03tlg<_J^7=;#MZ5e1p34LrUo_u zw|JIcTKA_sQ#o;ML+arr(tZ3{!dzFEB-}~z{%?Ti+Uy?Yen7iO1V5l%XV{}j~hVxtwL57sy@NHSvzGSSHK9H`$Uv7_`qYots z%EDj{L3h@C3|dr+8GpbELgg00YdU_+SQOYYdzifL@3tG|zTN|S8Qwc4&lh}kCL6mK zyBa3I{k89z(3&Fg01DlJ& z2kBXX;Js2uC+iGn7DoIo)KJXdqZe00*~+N^KM17nT(37!i6o2rW$3A95rzJkKJ6Ns zb2tp=)dbbbbfSz2RT1pt>5db(@4;2nP^2}S%*P}WN{VdRR6trI$E&af#C8Oy-h)(O zFpYh2k=bqT;{?sF1LnMYaYE}<2iuv(%XB6Rw2+|vya^Ww)*x&XPgu zHz}wwj0mL}$Rn)~x_0~~i=IDK7YjFOPsC!?WK?i=6QY5>L-n`Gd;D`(mo9hmh7aSC zqzj;$ZEVe+k0JXfTA@;*;katurM+x1W+P6T>UA!Cb)o$b(VRfP(&ZEv>U1a!$hVvu zPFp}|guhxH`dZ#Vo=AmnAMtnD7N?>>tv0uL{k7)iYoF;*``&c+_-xG=`s^EWqmY)A z8i$^-tLyaEB$TKl7XybjT=PUO%eb>N<@ef{U0&fvB%Uv_=#82K=JmmRdjaKLf@wBh zMft73OSJ0l{!0qG?kx2zViZ9J!W%eLu8z~Y{2a82cTFeJHYq^8-Q>Z_zc*xZ=M)y0a5E_;Np_?WJUJPu~w zonP34DDZpbRwS^oEe6e-+3d2_m9yvLPM2V4^&}6^=W_SA8Q`Gr8IP}StayQXn_JtK zJ`S`c5l3*Be$$eRbM*C>Z3BMaw3?r>@A99v!3%jH!T~5YgdIp#$n(7phEzFi&~ppfS?`+MZohw5jLZZt@o>6y9HvCLHor4 z&n-lpoSgnVc(mzqBZZZE8UQ%w+qU*JeD(mK{o1CP8|TJf=l^O<_QT72sUi|v4*nq2Um#zdx*s{LUXjKFyXOj8*8nFu6VC+>k5rzq<_})>1TM zr%P%KkJebP`)i8(GtIjON(&I?mF8PtPTiz-)*DK`i_Bt6*ShjCMtzf$Q(eYf)k`*> zUVESXW_!XlPd09)-nB1OneWg~lj9o|r4Zu+ zx@4eL)8nQVB@d#5J7akWH{UdQqRzGEQdYfk9KaB)^UD(axnbi2rFb1X6+mLU^|#USJ*S0?lGSw z>rS(bCFIx~UCJEDo1qlg08<_0(qSR7&y>br@z?+bG6byrlFS8KU+~fcp5>YBnpo{< zt=IeIUp3DQvdd9)P78b#EGOsK%SKQVmSEj zt%@bq+d%e&mt%1L(~ zdVRnj4o1= zO?}H@Y;T#Er<#ANEqcWGS;fG@i(ZOZL&kl^-6uxqqOU6zpd*Qwz;yaVtC-^M8S|ZJ zeYW)rd$y&goR8&)8>LdL>J(h>7%Oshru7{!^WE^G>;rQ|_x3(qv$7})=x;>O1O5pH{3zzsq3nR6r4#Hw6n9*i`tnO#q*&8c+xL>#ryqV;7RWN|t(Fsh{KiK|hXkV) zU|F%vP*zu*)w)y?elB;cb&Qv!Sl)PL&^0T+1gyo6vc8EO-Ldt$ zv~vg4Zw<<3FBQ1%oNU#yyreHyOEki0G}R+mHQB27_?3tHA`9#Z-}13j8a; zMdj1jrH%Hx)oNOBRF2uiqC?m%IVLUBp!Q6|Sa4|O_S|+3^wXE=6e1BhnuNi(7D?OL zXMZl?$H)!cV67q?m{)unchZ(1dqIz~(bW_-w72+byMx26nIwcix;Tzv^9nV;6Q}SRxpVg`d3kXoEL3bGr2vlW>F+OVySwk+ z!gYq9)wXi_Po{;ect*G3?GTaU4|+};I4}=75{kVUmEJ0oVSmsTQFP^>%>076fCV6H z;*S*z0<}b!xhAe{kV>!sm1_qux4Z?o#e>XFKsv+s<`V*!OZSD|_&}>&Wm-%l?Ak4S zkBqlM372jMvunS#-rlsj>UL?WsIJf2Ni+4GCOb~IXj8;bwnfs8!qTe)g*a`{rZYHu zmo{w9FIGMM{xIdE6%xyF-m%vi^;iJlgR$r4=dpbNOF?TO0I;Rl9`8`FMwBxGdx7l}^{-b?}~E57u!nd;lU{j!qgI(1&-=lkS+w*@1N zvJxTE9v&XA9Or_pC{rnlQs{vXRo2pyL??W+v@EL13iQsaj_w=cFS#gHk=N#bhI{Mi zx4x}1ZQvOIjJHDymM6P(BX_*%o>uXUYQtd4Jq=~G)+lPJnXjZpAPS%DrO`R-3bx#-<_FH^VNSB?4?w1tjnr>*-%Xbr?& z`k269aPNkU&y7<)A+LT01?{;K985e7BaIOxF0R`t)5c{9!(%FRe(mEhBqwr82$jDS z1KbyeVGrL8#}|#PH%^~khwW7sgpJWR7qpJl*QhF{Dgw^%%KZw?HJngCbL?*$)h`w9 zPVrCdu8O0=s1q>p_Hz-akHz@v$`(~CNvl-C{8l$BDxf=-{qh#{*Bqqxcyct7mppk+ z$v3~PT3%G3ITz|ki_|UK-Q`mCe!FJg-YusW_e^j<^ONIzYNOJ1ApBdmu?Y6ZhiIm$ z>4P?Ng9z&!f$b!-3quO&ocRxP{7p;gRBcN)h;LC@dB&6?z2fy1nPfEkX9BG%M- zZg0@gqKUec3LMslavC{wYKxTM(vTTU+Irht1SUW<9K$XXp?iRJQLWl?2`M;g$}#}) z*&hT2P>*nS^#p-z#f|)-ShL>4Kg-G{>;r7Zr~EB*-Ml^VPXG7W7)HeGyt+Lw<67*G zK!hET)RaLm=e%_yVSotS7&=-PtKf92IFZ1 z)f4kw8XB8vBdRp_{!2G-2KCZ!Fg+&hj-phE8b!NQSg0VVr7<4SIuzZV={9EjSw>de z4>P>pjS+o2U{O7c3MAi-ujeP!+?hRHV}!5sKi62>ySulj))xH{<(1I$hC6D`-*?-_ zbK-;bQJAVj5!d#6O^x<*gq$Rnr0C%{dC@5_e(-UxlJS!wS>4I7-jl2gMS9&g5apHI zhb8@ONLz8eh3u$AUy(?sCv6Tf{fschmUm(!y@Pk$ShNeJV%G4zY6tg=Ia+hd$Km1q zs*8#@P>VLpyPHRcNPP}DKw?{yHBq9`W}0K!Ds7Q|A>78nK~jZex(Ukh7N7Pj^POt% zH2bLOh_fQKQz^LVnA6l8YCxSAmS>ny92X)=?8h27_}v~lFOHiE3X@nI9%h&0U)r3o zCZiN9X{L2v<#_)NjINEE6`b8v=nV<_zys7&#aFwWhU;MMZm!7J

GjK}o0}1aS9E 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 z z$^d(NU6Kd$12|spyFP~dS9p>m;v2@y6GMe5n72Dfh_C47joR}&I1_xV)q4TX6q`X; zzc^p!lfi8?p{3b*Wf}5Vx90DNDIwa}`9qABd@h}gKPXX`DE2Q6PMZSJ>vykbUtZaLSHb<o2*^j0Xs_WL|oACaNH7aFc76_iq*b jzf<}DKaQpKvbmQr`Kg^$#W~L3XaG8zhIh;FJdF519WG$c literal 0 HcmV?d00001 diff --git a/TEMA8/mainfile.py b/TEMA8/mainfile.py new file mode 100644 index 0000000..94fb722 --- /dev/null +++ b/TEMA8/mainfile.py @@ -0,0 +1,17 @@ +from readerfile import reader +from correlate import correlation + +def main(): + print("_________Калькулятор корреляции_________") + file1 = input("Первый файл: ").strip() + file2 = input("Второй файл: ").strip() + + numbers1 = reader(file1) + numbers2 = reader(file2) + + print(numbers1) + print(numbers2) + + cor = correlation(numbers1, numbers2) + + print("Коэффициент корреляции - ", cor) diff --git a/TEMA8/num1.txt b/TEMA8/num1.txt new file mode 100644 index 0000000..648b033 --- /dev/null +++ b/TEMA8/num1.txt @@ -0,0 +1,3 @@ +44 50 43 30 24 +10 9 1 5 +29 19 14 21 \ No newline at end of file diff --git a/TEMA8/num2.txt b/TEMA8/num2.txt new file mode 100644 index 0000000..397be62 --- /dev/null +++ b/TEMA8/num2.txt @@ -0,0 +1,3 @@ +30 60 58 40 34 +20 19 16 15 +39 28 24 31 \ No newline at end of file diff --git a/TEMA8/readerfile.py b/TEMA8/readerfile.py new file mode 100644 index 0000000..eedd2f8 --- /dev/null +++ b/TEMA8/readerfile.py @@ -0,0 +1,9 @@ +def reader(filename): + num = [] + with open(filename, 'r', encoding = 'utf-8') as file: + for line in file: + elements = line.strip().split() + for elem in elements: + number = float(elem) + num.append(number) + return num diff --git a/TEMA8/report.md b/TEMA8/report.md new file mode 100644 index 0000000..8881b88 --- /dev/null +++ b/TEMA8/report.md @@ -0,0 +1,294 @@ +# Тема 8 + +Савин Семён, А-02-23 + +## Пункт 1. Подготовка к работе. + +```py +>>> import os,sys +>>> import importlib as imp +>>> os.chdir('C:\\Users\\somas\\python-labs\\TEMA8') +>>> os.getcwd() +'C:\\Users\\somas\\python-labs\\TEMA8' +``` + +## Пункт 2.1. Запуск модуля на выполнение путем его импорта + +![Скриншот содержимого файла Mod1.py](img1.png) + +```py +>>> import Mod1 +Mod1:Введите значение = 5 +Mod1:Значение perm1= 5 +>>> type(Mod1) + +>>> dir(Mod1) +['__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', 'perm1'] +>>> Mod1.perm1 +'5' +>>> import Mod1 +>>> imp.reload(Mod1) +Mod1:Введите значение = 3 +Mod1:Значение perm1= 3 + +>>> Mod1.perm1 +'3' +``` + +## 2.2. Удаление модуля из словаря + +```py +>>> print(sorted(sys.modules.keys())) +['Mod1', '__main__', '_abc', '_ast', '_bisect', '_bootlocale', '_bz2', '_codecs', '_collections', '_collections_abc', '_compat_pickle', '_compression', '_datetime', '_frozen_importlib', '_frozen_importlib_external', '_functools', '_heapq', '_imp', '_io', '_locale', '_lzma', '_opcode', '_operator', '_pickle', '_queue', '_random', '_sha512', '_signal', '_sitebuiltins', '_socket', '_sre', '_stat', '_string', '_struct', '_thread', '_tkinter', '_warnings', '_weakref', '_weakrefset', '_winapi', 'abc', 'ast', 'bdb', 'binascii', 'bisect', 'builtins', 'bz2', 'codecs', 'collections', 'collections.abc', 'configparser', 'contextlib', 'copyreg', 'datetime', 'dis', 'encodings', 'encodings.aliases', 'encodings.cp1251', 'encodings.latin_1', 'encodings.utf_8', 'enum', 'errno', 'fnmatch', 'functools', 'genericpath', 'heapq', 'idlelib', 'idlelib.autocomplete', 'idlelib.autocomplete_w', 'idlelib.calltip', 'idlelib.calltip_w', 'idlelib.config', 'idlelib.debugger', 'idlelib.debugger_r', 'idlelib.debugobj', 'idlelib.debugobj_r', 'idlelib.hyperparser', 'idlelib.iomenu', 'idlelib.macosx', 'idlelib.multicall', 'idlelib.pyparse', 'idlelib.rpc', 'idlelib.run', 'idlelib.scrolledlist', 'idlelib.stackviewer', 'idlelib.tooltip', 'idlelib.tree', 'idlelib.util', 'idlelib.window', 'idlelib.zoomheight', 'importlib', 'importlib._bootstrap', 'importlib._bootstrap_external', 'importlib.abc', 'importlib.machinery', 'importlib.util', 'inspect', 'io', 'itertools', 'keyword', 'linecache', 'lzma', 'marshal', 'math', 'msvcrt', 'nt', 'ntpath', 'opcode', 'operator', 'os', 'os.path', 'pickle', 'pkgutil', 'platform', 'plistlib', 'posixpath', 'pydoc', 'pyexpat', 'pyexpat.errors', 'pyexpat.model', 'queue', 'random', 're', 'reprlib', 'select', 'selectors', 'shlex', 'shutil', 'signal', 'site', 'socket', 'socketserver', 'sre_compile', 'sre_constants', 'sre_parse', 'stat', 'string', 'struct', 'subprocess', 'sys', 'sysconfig', 'tempfile', 'textwrap', 'threading', 'time', 'tkinter', 'tkinter.constants', 'token', 'tokenize', 'traceback', 'types', 'typing', 'typing.io', 'typing.re', 'urllib', 'urllib.parse', 'warnings', 'weakref', 'winreg', 'xml', 'xml.parsers', 'xml.parsers.expat', 'xml.parsers.expat.errors', 'xml.parsers.expat.model', 'zipimport', 'zlib'] +>>> sys.modules.pop('Mod1') + +>>> print(sorted(sys.modules.keys())) +['__main__', '_abc', '_ast', '_bisect', '_bootlocale', '_bz2', '_codecs', '_collections', '_collections_abc', '_compat_pickle', '_compression', '_datetime', '_frozen_importlib', '_frozen_importlib_external', '_functools', '_heapq', '_imp', '_io', '_locale', '_lzma', '_opcode', '_operator', '_pickle', '_queue', '_random', '_sha512', '_signal', '_sitebuiltins', '_socket', '_sre', '_stat', '_string', '_struct', '_thread', '_tkinter', '_warnings', '_weakref', '_weakrefset', '_winapi', 'abc', 'ast', 'bdb', 'binascii', 'bisect', 'builtins', 'bz2', 'codecs', 'collections', 'collections.abc', 'configparser', 'contextlib', 'copyreg', 'datetime', 'dis', 'encodings', 'encodings.aliases', 'encodings.cp1251', 'encodings.latin_1', 'encodings.utf_8', 'enum', 'errno', 'fnmatch', 'functools', 'genericpath', 'heapq', 'idlelib', 'idlelib.autocomplete', 'idlelib.autocomplete_w', 'idlelib.calltip', 'idlelib.calltip_w', 'idlelib.config', 'idlelib.debugger', 'idlelib.debugger_r', 'idlelib.debugobj', 'idlelib.debugobj_r', 'idlelib.hyperparser', 'idlelib.iomenu', 'idlelib.macosx', 'idlelib.multicall', 'idlelib.pyparse', 'idlelib.rpc', 'idlelib.run', 'idlelib.scrolledlist', 'idlelib.stackviewer', 'idlelib.tooltip', 'idlelib.tree', 'idlelib.util', 'idlelib.window', 'idlelib.zoomheight', 'importlib', 'importlib._bootstrap', 'importlib._bootstrap_external', 'importlib.abc', 'importlib.machinery', 'importlib.util', 'inspect', 'io', 'itertools', 'keyword', 'linecache', 'lzma', 'marshal', 'math', 'msvcrt', 'nt', 'ntpath', 'opcode', 'operator', 'os', 'os.path', 'pickle', 'pkgutil', 'platform', 'plistlib', 'posixpath', 'pydoc', 'pyexpat', 'pyexpat.errors', 'pyexpat.model', 'queue', 'random', 're', 'reprlib', 'select', 'selectors', 'shlex', 'shutil', 'signal', 'site', 'socket', 'socketserver', 'sre_compile', 'sre_constants', 'sre_parse', 'stat', 'string', 'struct', 'subprocess', 'sys', 'sysconfig', 'tempfile', 'textwrap', 'threading', 'time', 'tkinter', 'tkinter.constants', 'token', 'tokenize', 'traceback', 'types', 'typing', 'typing.io', 'typing.re', 'urllib', 'urllib.parse', 'warnings', 'weakref', 'winreg', 'xml', 'xml.parsers', 'xml.parsers.expat', 'xml.parsers.expat.errors', 'xml.parsers.expat.model', 'zipimport', 'zlib'] +>>> import Mod1 +Mod1:Введите значение = 4 +Mod1:Значение perm1= 4 +>>> sys.modules.pop('Mod1') + +``` + +## 2.3. Запуск модуля с помощью exec + +```py +>>> exec(open('Mod1.py').read()) +Mod1:Введите значение = 8 +Mod1:Значение perm1= 8 +>>> exec(open('Mod1.py', encoding= 'utf-8').read()) +Mod1:Введите значение = 4 +Mod1:Значение perm1= 4 +>>> exec(open('Mod1.py', encoding= 'utf-8').read()) +Mod1:Введите значение = 50 +Mod1:Значение perm1= 50 +>>> exec(open('Mod1.py', encoding= 'utf-8').read()) +Mod1:Введите значение = 10 +Mod1:Значение perm1= 10 +``` + +## 2.4. Запуск модуля с помощью from - import + +```py +>>> from Mod1 import perm1 +Mod1:Введите значение = 1 +Mod1:Значение perm1= 1 +>>> dir() +['Mod1', '__annotations__', '__builtins__', '__doc__', '__loader__', '__name__', '__package__', '__spec__', '__warningregistry__', 'imp', 'os', 'perm1', 'sys'] +>>> perm1 +'1' +``` +![Скриншот содержания файла Mod2.py](img2.png) + +```py +>>> from Mod2 import beta +>>> g=beta(2) +****BETA**** +>>> g +535.4916555247646 +>>> alpha() +Traceback (most recent call last): + File "", line 1, in + alpha() +NameError: name 'alpha' is not defined +>>> from Mod2 import alpha +>>> from Mod2 import alpha as al +>>> al() +****ALPHA**** +Значение t=5 +'5' +>>> del al,beta +>>> from Mod2 import alpha as al, beta as bt +>>> from Mod2 import * +>>> tt=alpha() +****ALPHA**** +Значение t=0.12 +>>> uu=beta(float(tt)) +****BETA**** +>>> uu +1.4578913609506803 +>>> +``` + +## 3.1. Создание многомодульных программ + +![Скриншот содержимого файла Mod0.py](img3.png) + +```py +>>> sys.modules.pop('Mod1') + +>>> sys.modules.pop('Mod2') + +>>> import Mod0 +Mod1:Введите значение = 10 +Mod1:Значение perm1= 10 +perm1= 10 +****ALPHA**** +Значение t=6 +tt= 6 +****BETA**** +qq= 153552935.39544657 +>>> Mod0.tt; Mod0.qq; Mod0.Mod1.perm1 +'6' +153552935.39544657 +'10' +``` + +## 3.2. Создание модулей и реализация программы модели САУ + +![Скриншот содержания файла MM1.py](img4.png) + +```py +>>> import MM2 +k1,T,k2,Xm,A,F,N=0.4, 30, 0.6, 6, 1000, 7, 16 +>>> print('y=', MM2.vyhod) +y= [0, 4.088148160877804, 26.352485391214998, 53.16854540749361, 72.7344196620431, 77.69321318122259, 70.35974149591577, 60.62750525878967, 58.14620628522886, 64.67689441760423, 72.40046930133941, 69.47447962424967, 48.67692603876396, 12.652572207611655, -16.163653614270103, -51.357437173804996] +``` + +## 3.3. Области действия объектов в модулях + +Была изменена функция alpha в файле Mod2.py + +```py +def alpha(): + print('****ALPHA****') + t=input('Значение t=') + n=beta(6) + print(n) + return t +``` + +После запуска модуля + +```py +>>> alpha() +****ALPHA**** +Значение t=10 +****BETA**** +153552935.39544657 +'10' +``` + +Убрали изменения из alpha, изменили beta + +```py +def beta(q): + print('****BETA****') + import math + expi=q*math.pi + alpha() + return math.exp(expi) +``` + +результат + +```py +>>> beta(6) +****BETA**** +****ALPHA**** +Значение t=10 +153552935.39544657 +``` + +Добавили функцию печати в Mod0 + +```py +import Mod1 +print('perm1=',Mod1.perm1) +from Mod2 import alpha as al +tt=al() +print('tt=',tt) +from Mod2 import beta +qq=beta(float(tt)) +print('qq=',qq) +print(t,expi) +``` + +получено + +```py +Mod1:Введите значение = 10 +Mod1:Значение perm1= 10 +perm1= 10 +****ALPHA**** +Значение t=10 +tt= 10 +****BETA**** +****ALPHA**** +Значение t=10 +qq= 44031505860631.98 +Traceback (most recent call last): + File "C:\Users\somas\python-labs\TEMA8\Mod0.py", line 9, in + print(t,expi) +NameError: name 't' is not defined +``` + +В модуле Mod0 perm1 была увеличена в 3 раза + +```py +Mod1:Введите значение = 10 +Mod1:Значение perm1= 10 +perm1= 10 +****ALPHA**** +Значение t=8 +tt= 8 +****BETA**** +qq= 82226315585.59491 +perm1*3= 101010 +``` + +так получилось, так как perm1 - строка + +изменим qq,tt,perm1 в командной строке + +```py +Mod1:Введите значение = 5 +Mod1:Значение perm1= 5 +perm1= 5 +****ALPHA**** +Значение t=8 +tt= 8 +****BETA**** +qq= 82226315585.59491 +>>> perm1 = perm1*2 +Traceback (most recent call last): + File "", line 1, in + perm1 = perm1*2 +NameError: name 'perm1' is not defined +>>> tt = tt*2 +>>> tt +'88' +>>> qq = qq*2; qq +164452631171.18982 +``` + +теперь изменим Mod0.py так, чтобы perm1 можно было изменить + +```py +import Mod1 +print('perm1=',Mod1.perm1) +from Mod2 import alpha as al +tt=al() +print('tt=',tt) +from Mod2 import beta +qq=beta(float(tt)) +print('qq=',qq) +perm1 = Mod1.perm1 +``` + +результат: + +```py +Mod1:Введите значение = 5 +Mod1:Значение perm1= 5 +perm1= 5 +****ALPHA**** +Значение t=10 +tt= 10 +****BETA**** +qq= 44031505860631.98 +>>> perm1 = perm1*2 +>>> perm1 +'55' +``` diff --git a/TEMA8/task.md b/TEMA8/task.md new file mode 100644 index 0000000..a923b19 --- /dev/null +++ b/TEMA8/task.md @@ -0,0 +1,93 @@ +#Тема 8 общее задание + +## Задание + +Разработайте программу, состоящую из трех модулей: +- Модуль 1 содержит функцию считывания числового списка из текстового файла с заданным именем (аргумент функции – имя файла). Элементы в файле могут располагаться по несколько на строке с разделением пробелом. Числа элементов в строках могут быть разными. Получен-ный список должен возвращаться в вызывающую программу. +- Модуль 2 содержит функцию расчета коэффициента корреляции по двум числовым спискам (аргументы функции – имена двух списков). Числа элементов в списках могут различаться. Значение коэффициента должно возвращаться в вызывающую программу. +- Модуль 3 запрашивает у пользователя и вводит имена двух файлов с исходными данными, дважды вызывает функцию из модуля 1 и считывает два списка из двух текстовых файлов. За-тем вызывает функцию расчета коэффициента корреляции с помощью функции из модуля 2 и отображает рассчитанное значение на экране с округлением до трех цифр после точки. +Подготовьте два текстовых файла с числовыми данными и проверьте по ним работу программы. + +## Решение + +Модуль чтения readerfile.py + +```py +def reader(filename): + num = [] + with open(filename, 'r', encoding = 'utf-8') as file: + for line in file: + elements = line.strip().split() + for elem in elements: + number = float(elem) + num.append(number) + return num +``` + +Модуль калькулятора корреляции correlate.py + +```py +import math +def correlation(numbers1, numbers2): + if not numbers1 or not numbers2: + print('пусто') + return(0) + + n = min(len(numbers1), len(numbers2)) + + x = numbers1[:n] + y = numbers2[:n] + + meanx = sum(x)/n + meany = sum(y)/n + + sum1 = 0 + sum2 = 0 + sum3 = 0 + + for i in range (n): + sum1 += ((x[i] - meanx)*(y[i] - meany)) + sum2 += ((x[i] - meanx)**2) + sum3 += ((y[i] - meany)**2) + print(sum1,sum2,sum3) + return (sum1/math.sqrt(sum2*sum3)) +``` + +Главный модуль mainfile.py + +```py +from readerfile import reader +from correlate import correlation + +def main(): + print("_________Калькулятор корреляции_________") + file1 = input("Первый файл: ").strip() + file2 = input("Второй файл: ").strip() + + numbers1 = reader(file1) + numbers2 = reader(file2) + + print(numbers1) + print(numbers2) + + cor = correlation(numbers1, numbers2) + + print("Коэффициент корреляции - ", cor) +``` + +Результат работы программы: + + +```py +>>> import mainfile +>>> mainfile.main() +_________Калькулятор корреляции_________ +Первый файл: num1.txt +Второй файл: num2.txt +[44.0, 50.0, 43.0, 30.0, 24.0, 10.0, 9.0, 1.0, 5.0, 29.0, 19.0, 14.0, 21.0] +[30.0, 60.0, 58.0, 40.0, 34.0, 20.0, 19.0, 16.0, 15.0, 39.0, 28.0, 24.0, 31.0] +2420.0 2930.0 2519.6923076923076 +Коэффициент корреляции - 0.8906514939994264 +``` + +Выводится содержимое файлов, а также суммы, полученные в correlate.py, для проверки достоверности работы расчетов \ No newline at end of file From 020d5eee1304e04931651973a53df9c1530efaae Mon Sep 17 00:00:00 2001 From: SavinSA Date: Mon, 8 Dec 2025 02:24:01 +0300 Subject: [PATCH 24/24] module9 full --- TEMA9/EMPLOYEES.py | 49 ++++++++++ TEMA9/MAIN.py | 13 +++ TEMA9/Mod3.py | 11 +++ TEMA9/SAU.py | 22 +++++ TEMA9/png1.png | Bin 0 -> 11367 bytes TEMA9/png2.png | Bin 0 -> 18857 bytes TEMA9/report.md | 230 +++++++++++++++++++++++++++++++++++++++++++++ TEMA9/task.md | 131 ++++++++++++++++++++++++++ 8 files changed, 456 insertions(+) create mode 100644 TEMA9/EMPLOYEES.py create mode 100644 TEMA9/MAIN.py create mode 100644 TEMA9/Mod3.py create mode 100644 TEMA9/SAU.py create mode 100644 TEMA9/png1.png create mode 100644 TEMA9/png2.png create mode 100644 TEMA9/report.md create mode 100644 TEMA9/task.md diff --git a/TEMA9/EMPLOYEES.py b/TEMA9/EMPLOYEES.py new file mode 100644 index 0000000..c9d8b3d --- /dev/null +++ b/TEMA9/EMPLOYEES.py @@ -0,0 +1,49 @@ +class Employee: + def __init__(self, fio="null", otdel = "null", dolz = "null", oklad = 0): + self.fio = fio + self.otdel = otdel + self.dolz = dolz + self.oklad = oklad + self.__bonus = [] + + def increase_oklad(self,summa): + self.oklad += summa + print(f'Оклад {self.fio} был повышен на {summa}, новый оклад равен {self.oklad}') + + def move_otdel(self,new_otdel): + old_otdel = self.otdel + self.otdel = new_otdel + + print(f'Сотрудник {self.fio} был переведен из {old_otdel} в {new_otdel}') + + def change_dolz(self,new_dolz): + old_dolz = self.dolz + self.dolz = new_dolz + + print(f'Должность сотрудника {self.fio} была изменена с {old_dolz} на {new_dolz}') + + def give_bonus(self,bonus): + self.__bonus.append(bonus) + print(f'Сотруднику {self.fio} была выражена благодарность: {bonus}') + + @property + def bonuses(self): + return self.__bonus.copy() + + def info_out(self): + print('Информация о сотруднике:') + print(f'\n ФИО: {self.fio}') + print(f'\n Отдел: {self.otdel}') + print(f'\n Должность: {self.dolz}') + print(f'\n Оклад: {self.oklad:.2f}') + + if self.__bonus: + print('Поощрения: ') + for i, poosh in enumerate(self.__bonus, 1): + print(f" {i}. {poosh}") + + else: + print('no bonuses') + + + diff --git a/TEMA9/MAIN.py b/TEMA9/MAIN.py new file mode 100644 index 0000000..acc3868 --- /dev/null +++ b/TEMA9/MAIN.py @@ -0,0 +1,13 @@ +prm=[2.5,4,1.3,0.8] +from SAU import * +xx=[0]+[1]*20 +SAUe=SAU(prm) +yt=[] +for xt in xx: + SAUe.zdn_zn(xt) + SAUe.model() + SAUe.otobraz() + yt.append(SAUe.ypr[1]) +import pylab +pylab.plot(yt) +pylab.show() diff --git a/TEMA9/Mod3.py b/TEMA9/Mod3.py new file mode 100644 index 0000000..98c860e --- /dev/null +++ b/TEMA9/Mod3.py @@ -0,0 +1,11 @@ +class Class1: + def zad_zn(self,znach): + self.data = znach + def otobrazh(self): + print(self.data) +class Class2(Class1): + def otobrazh(self): + print('значение= ', self.data) +def otobrazh(objekt): + print('значение объекта= ', objekt) + diff --git a/TEMA9/SAU.py b/TEMA9/SAU.py new file mode 100644 index 0000000..39cc0e4 --- /dev/null +++ b/TEMA9/SAU.py @@ -0,0 +1,22 @@ +class SAU: + def __init__(self,zn_param): + self.param=zn_param + self.ypr=[0,0] + + def zdn_zn(self,upr): + self.x=upr + + def model(self): + def inerz(x,T,yy): + return (x+T*yy)/(T+1) + + y0=self.x-self.ypr[1]*self.param[3] + y1=self.param[0]*y0 + y2=inerz(y1,self.param[1],self.ypr[0]) + y3=inerz(y2,self.param[2],self.ypr[1]) + self.ypr[0]=y2 + self.ypr[1]=y3 + + def otobraz(self): + print('y=',self.ypr[1]) + diff --git a/TEMA9/png1.png b/TEMA9/png1.png new file mode 100644 index 0000000000000000000000000000000000000000..9f3292104660850a3f3c3a312cc4812f2ef59e0a GIT binary patch literal 11367 zcma)?cUTkM*7mW|K}Dn!0TmVLy+(Qm0Ra&Ry-4pRln4qa2%-0m6sgi{Km_SXl}YF_IAx5mBnDDCiOqT?x3{ z9woVX`Mwd~8Gre4#Zy;Vj;Qh{^Y-P=bvs#2St6opDEYa?jmv#fHx(mKA|k4;Kd&pj zt|it)L|o^p3bHT#Kzmsuu1to>C@5Tp@0Jzw^#rWJXQsIIXM(qy(|dC59^2(1Z?E&%V42_%$RcGcb2d@hh^Gi@)Cxc@oYX!KFU63J&pd$UDu%{nlE)00OgK zpUm_GntAQL-d^y8ZXbVV5Q%u^nGtrn8F76iSf_nQB7a;woob4lJhZSljR1 z_J=h!hft$x@CVD7t}wwubX{2u?4>*^e!NUOn+Fg$i$att26sX z$_-dwf1Zf(Gj)hFtOJNbykKC=l;kK3;%LNnW@hbHr66H%V%&*J)n+dGLR--=&e#!0JwRFz4hq z+DGe^5*DqW;ulW5RU4KS7kTsHbt`xC&~qufa4CoScyTIQP*!jdYQS{x!uy1}1cb+( z!WW90vVUef@m7AYb3I?(OeP9II8Ec&QmVU*U>z#RuTKZZxEj85*3@j}yuAs{5_MVN z|2PC(zxZfIuJydINo4c+G#mFJv;W9f$nSpFwS5e$ZLZgPZ&&M4Mu=685RmWWm^!>% zoLM(gT+51Eh$FB0$1Jg6RR}g+Bl5bHYrD$EH%bfHol^W z=6k7njrIxrUHqyLh~@P7Y&_0)e&e?t3CknhSi}N)`brno1VJ^AeNf+%eS*f>dp1xe zpF(m8L9qQ`;?ag!6SBT-{CmrJvjbDfkG^&Bv)^;{ z`l4QzNy_q1I;oQ}DK_z`=%v9rdcQQI=aPhP+E33te{&3(Ge;#~RL3lSb7z$c$8!2` zGlFM9>8Z*L^hUzFzL3?*EAma@A|IxE1+0TFhx}RCn62<9+|%gvI8y5>E`jV}+DPJQ zjGwA@&rM$!qunlXxMO@8Y0qxicmra$T6&Z@Kcz+8GRDfVJ(O5P_`v4utZb8}>8d2B zOOvhfE`rZ=;UES8|1eH7)3+UBNoTJs5rJeDV6Za#9la0+knrxxTV;l)a34S1{RPa4 z$7X~Yxtf=le+D9AJ_4a?SY`1Od8W!SPtW3TaJcU~_4WL~CVPL~o#^!8?H93Vpfc*_ zk=$)J$BKh+Z{oqPVvt0BM9%lK5HI(lAesHbC`W75;GN{VVuuoqdpHls7Abeg=Ml(C zI(hzP>J$K&vdNWWu8qwZgik@iJ%>`;Z!9;GT>w81K?y?|eYI686VcVQnj}}>I5j?I zCO+Y*;E(y}?+6DR>PJ$q+B;3w+3gk9!73{etdXhILK2)$pzx>v|?&*QJ>cU1r<9a=E`#uLbj;bnDrHKjZq7e@#3$ z@S6~P#Gi~@DegIJoACG6r`bO_n7)ZgnK1hNGIN7Fjd}k$H@nGL5%M1$&1R;w1N0c& z)V%l(2N`m1#RGrZ?V^Mf+uaoKFlzx@a^VwR zQH2v34o%!l@T@?X+K)lh)G+>r-eYqz$JFVf{`>D^p9pr(bfE(&8Yi%DCO06{48%Ed z!Y>c4IX^PGk1NT1^BJ-@#ea2tfaduGv7b?G((zYV1Me(AFk*X(?=$LR+A`clp^|x0 zy-}4*yO>j0D0}BPkd&>N4L$<|(KffP`lHhEZpLeNddXpu*wLQ4i>n40FH%k-y`n%U z9`Vi?iG}!f-lZQONEnT99SX?UyvZ3x`3%t^@Jgmy?s+cpD&jl6sa|{SGY|8D#5#}5 zwa$Je`eK`mqG6p85sKC;2pZfiK0N!_$7AvuAqW&cl_8MH+;sxhU(ED;zNrQNU?6)%b;h2$}cZ_GLy{A3cU0=8TsPXRR z5$@iTx_1QmDPeAbb-}L8ffQQuHOa*4Cgd6ip0Yf@)yy+vphDPhrT1W8 zlO;&54UD0-xbhC*XK|WseBqe7(dhG)y+SHYjRr0R8noXDw;W9Z@8GHHgcHoV#rKH% zE8eX!>eJhyyQ5wuZ&d7md}aj+AXQqBAdnti_$V@G4^t+f5?-(_+>4ZXcj)f-eaVkT zuJ1klEjc}BW`}~?a(!q^GX6^lVXM9Qzlr2pPxc}BGM>Sswf_Smf0N5MT0YE%wuzBG zud~y-hCX8Ghth6NuXV(&^hB8hDxMH_&0j zU)PSCUZ(F;pDu#GA5)m$0xHyyG!Bfcb3Uzi8uBR?IkxG{?6qSFRWMSF@N54AD-nFPR%h7D1bDv-YnC zOy^n8;cV7lQzEg0>}RrB;ldCT9ie>XV!HO7=ZN~PUnA;%sID{Or05oApo#>~qzJp< z&9+L0f;};G>1t-WDRKL<3#q?%Ewzu1i)W-rt3k6zWKiociPuW2wxinzV1j_6>uICKi1Svl7$h!^W(AC4mrtBf?<6IGdxxVGcF zjH&8%wkN1H4c|9SjGBh_v#klFNn1fE2GOQ#Ox8>;i+GwM>DYWuqOxKCP9e1|@Dh1+ zknomL_l$5)2!AK?ZS+L25+CM@d=GUNMPd^_t#A{c$k=vkI2jAF8Kl=QkO|5NHUd&g zzM;VE3xrowyKM^CzmVs=c7wBQRBDu`O=f-uIhU}RG}n>Gx|0$+yRowv?TKvY!+CSv zLlqZ&;bU_P0`WwadvQR;t{a`~_dc>XKm4NNiRd10H7#g#{r)U$zUD<~fK8rPC$-KP zKsJiI90KV^`ySxy4)9*@no;ExJxj`@>bE^uQZN6RozYqZw>lMr*&xbE);~29`xSU# zGEaKP%3k;;Dzruc7NDV>qx-A6T$Ol`VY~Xh>MAsp(WOn{M?88zGaV=!bkC$eXi#S!492I zn0Ym2Eh;quR~h1We74%Q6n-+b5j{)4n!UONANGp(w7U>nFqr5%G9##$mulu`>nn@j zH5k+k>bY6%+TT$#pf8Gg^ZWGSq;tl_k{Y1OCsmmjUDo1^j#C)_jhS&Fxzdk-Mrn12 zG47;#(b7ydA~b#Idkc|0UvTRW%O{|Rj^%S}5xT&k0xPOSU{gnMLlv8nM*bdCM z4dM`!`&2bNL3JcMmWw3%La6Bl3>ztwh3NyIM$^xN;&uN1BIsFd1(uZ+xDk0@b;Oi# z>;1X+C)gS^`tA;gK6S8I_3M*I4^7u+Om0XA$W=0fkq=1=&K}p6VJq*z8j_>Os!7pF z<(riyGC$phlTR=c3Q%J{_|VQQjYoa19YEf~S?}I!^^j@U+4Ik^+6~(8f-cU+tj$F$ z@lLKeCZDj=vk9w7lwYnBCU{kBtQ6%!BH%Q$ulGh!oz?v#1N3{G%d?J;e^9<@t|6ng zeyFsQ*D^~HBWq(+FU@^t6A=enr9E-=el_~ymER`^$vlW$<$WPcwaFD2HqT37yP4Xq z4dYO9;WH)_zm?{=^~FxR?{jW7)Z)wrcd>7f^bV%7_{ z3#LbZ`wk1fO`F$_yCPrJp<{inx%&NNm$cdP+cDd1TUitgp{?O$YBeMaV1$TxTL~dn z(F^ra4ur#ZacG-2K+Vecmyt1~a9F){2~Xzq5&y2rb-VE?NO`SRJg$eNG*$*W2r?G6 zz=id9C`bsSI#(EMEFWo6N9gnd))Dz<(3OureNAAHiwI|bp+X(Gqo0?n5p5jroNd5$ zP*-UdPi}?PczYj!VkX*cUJE)`7|ZitW^L$ zJWKP?)Y10056Iz}yN{?SSWnK_2_QTro{+sHTZtkQ(a;8!`o8f%lyu??V7K~2)f1-F zoV-JGh}ZQ}~SQ^!ecKTEmr3f9@v7+HKdP@)tJl zI{R?U9Td+r&VPDt8c}QW;;X4*c2=SHO(92$H+%IaUWgIC^*sF70+bf1x;K(-mT}Jl z=2O?m=v%#O4nV8Lo!U2J7N;GRvu5NA(&3E7;u}e?j_x=jhS4b+@EHhE=s9;uiufnlpuCCn zW4p;)Ncfq+1llxSmOj$T*p(+L6O@FZ$P*#9l)+!EOq)~AaafBR?_Ra#nA3X7QBL^= z>jio8eu3kO+Vdj#Gws_J*PkLUXyUbPM`jQq8K+(Mr2J~D43MqKvj*k@@Gd-7FS7eP zU*)$f%Ebqvd(vx*QS`&@tZj4zA78-+vj{u*@x0ZOvRC8J?WL&d#Ch^~S6v+Exp4=N zOK5~o7*_!d!V7*MB}QuVu!y*Xckx5YypmVxYdIfWZ>yY@w>sEi#;fY}yT?>l&C61> zBYzw&dJOksDrwUw=U(^ojJ(A=E#ZDL9>+B7vlmzo2;*6&S^;p->T0^7w!InpxZ-Yf zKkk%q!ZjlZ7`z9)twt|jJr4%&U0gKXYIZ=)TX6~IVO=fH;<{Xxp8Dm$i4tzJjFotd^bQb$M2H|H;iodc9z@XMX*{wpaQd4sQP^<8D+Mt}1g zUe8i$T9}&EsbW4w(g*Ydn4U~3>jucTu*$GaQ(WlLk{*}8^kp^35w{CD7+^R$JKN*g zYtT!HD49m@cn_ETFk)Fp3)W66A0y{-z91^7rkLn?lZ~b_05^Nc-fYveWW6w3`~ZTq z$&9!SXPjW*)#~G2oNHj&5t-x+kAPJxe^HX?HmkMr9oivBB^OtN zt3hYqk2GDaUfRBP4JOHw76;9e)Sd7f`^|FQA)`lU_f0uKf^}f{mjdRT}G1Sa%;AnT{#;6 zz#hDo-Ws{`8p2M`Q-Shgkn%R{%gYIw2D1i@Jl(^iR_|I!=Qo}xr}R^A#SQ+(D`{pq z^sqB6XIkX^7zEh*2C{m21=Xw8V+A?vVRDL39W`eW%=x<7(*ANhnQT3*GSgPC9v}i- zzoB1}qv!4xAIc#!8glX$v16{@{~*;#FFHx)9dYp&i1<{O^i9fM;m6Zl#201>n!5h> zJgM_A+FF*bw;-5|&~>{=VKV`}PRtyhgm6>ySAh0dmo~RHr>S=EhXyLPHIr^8TyGh> zudfu!bOPWKb?!7!2wU?_k<2TnoeaTZ#hhjLzgh_ba5XmoGk*!bQK5udp=LCza0l9M%7+46ffC zfj)Ie!M#H0S_hS-5^N9dmS(Mo^_|5J3g)r95OezrEX>i!JyQ8p-P?%2Te-n9=-GC| zu|NrzJgdEmrin9cs%y6kb~p;c(}tfDXA+$s5tQJ7Pwr^R`3-) zqqiYE=^om=@VlXPM?|0Wy2LWX>M&s{-)_Oqs#V7Vv?sfWFEzHxL;|nMgml{F5+cB6 zm~s4Lm!`9SMg3I^q^ofTI|PjEi8(}@3fd4pf&pxf(^S_!CvoN`-|m9SQwDu=56k1v z_SZ-)B)ztmYz58+wLRhcoK%K2gNG_Z!5j>=>^uyw#nQ4fo`F%M;NLuN*5Ah(arDe| zowPNwwhwLyQ#AD~?Y$V{19jZ>hsdtwe5xuv!~xjpP8kUhi?fa}F!;woc2y(QrGfGs ztw{kOm{g2GK0)>``f+fxcOUhbW6rydrB=8Z zL%a+2SpJK{K&P+4{9?q;J-L|2XJFW%9wIy;S9GaPFO z29e4)4!2iDR7Mm;26n_?T#;WmlUIdPQ<84x#O>TJHmve;*KpI4Gu9q~u~NiVD(4ho zvx_2f3@S$gDF;F&vJHZsmu3fsUZ!bl>k_ay(nJpi-sz|Ds2-g$yHc423W9=<-kS*h z{oEJ1iT+uejNbiUrI1Ts0OfZk_KzOJDstB>bf_%~Z*15*a^h;-m79%EwVs@B6vml) zYe9a3k&n;^qzoUq%y+ri&FY3RByHjPlBQe8R#f|_}bj(s|Q zelWbrCJmnd+LiT;!}a31b$_B`BzQo69_KZ7^VEffyK&(q0%sTm2>PBJvpL1T-g3K6 zF>+@Q2M>6h7yKcm$V^X!57_lKyInmp8&>vfHDK+vOgdd9p)!lBaX)>LrT-R=d@mt6SrsWtW9z|Cz&SBXXZyc9L!`|B3uNomO8H@yPM2gBc&wOkrWe7 zs*Y9br706=K@I;B;Ojy#ru|A}hI2)t z9gvATd*;%nUgnO7e>M;J=fu0ln$hUMo7=j^5x1gdk9W;>KL*xWyxF8v2zGo!;pn&F zn%rBtJ@{}fE0xUZs$q3K-|x?5HfuKEQKcRXn#CIDeb5r}a9`16RCn>Qm4o!>T$wY~ ziFsdn))K=@DQ{kGPhT__?(1~)bP$dtl0P}2LGQX7jmDs9Vn-? z{9k6k*HGDKaP6;=;%rgyVDl{t3eKu83AuJvHA7-5VnE28?^n>98f-0~BxvpWQbaX%8)<|23a8j-z@0XHZu`)4O^6e%@53(zy6l zW-G+6daPB`;s>~NgKtHj)993%kN?dRyK4yFsZ`%OZ#sqsPItTR-ydjZb*2Lgf_!@Moj!7LYLDhpypzZEZf_TF&mwUXR7oj(+Q6Qi%EqccYMs;K zFHn@d9D!2_ST#OPM>=R{nMQz72=gE*ZDL{?sIPN5ljHubCAy*ad)VIJ5)k;mi;X}< zaDBLxLmPj<1P92qoui(Rp3v;to zH{J1Qd#=^iRVZd4>(Y(Q10U0-by$e>-%VX!mE1qRs+7;JSn5L?mC(-f10*lSojH%6M%T-m7UgR_lPr(fIq*fclsbz z(Z@0d_1gr0eDw}#G{94Fv~#nIr_nopl1mvc(E~c_RU$*jO~PaGQr86D;=e?`_cth& zq%IrDtbOjcPT?PP;gjMs|7B2q5(!4PZ2Vd&k2yL^n?)9!dhd-)q6~S)>-y#0po_%j;#L;!%eoff@$gW{T1SY7NVD%}#^K$&uj`CooPh0E!R z+k1=t4`fE(D&*M#1~r>uht+LN@0H+5-v`pXIH-Dt&*B5;p8284HiS7EMY%#`f-Fvp z8u_2fpKJs@C9L$}1J6HSrN$cjMMIqX2lB@XM4bTnLs&3%qh{su9?fjc0N~v6$ZBi( zsX6jj$n3R)Nn^rW@&Xt`xA!0Lm^-6>}P6)rv50Mg;Hwag5X~g3U4!k}KyfW*A5Z zuLpfho&lXs(R%v5y${cLmfby4b5J+eB?0fPx{@H31J(RfKN4szCt*^Dr|~_PNn8-| zlX72RU|<(7CsnXhdUQ)vheew>#G`<6)po=Vk%zX<*aRvF+KGu!C-o z*uKlgU$^Jl(va%E!2QC%aQ{iqAKdS3`B%8FkqHlEXY6qK$dUJ%-@}zi^rp+vV$-Si zFY^xTl?k7$alP`cMO5$Dwep7aGj~7cg5nFA^VC*Mwn*>=(?kz+42hyFlIm06BIJ*X z32K})TMh_bMl?4kb*2Tcbn7H!gi5B&#gwLT8bNj*tgas@vv6@xJ&IskstQ1}BL~Of zgkd(XS1Rl;VV{;u&Q+{8^-lc^Dt8i6bzrA~6YqRMiBoEZ7&|4pGjQi7!zZffpzAR7 z(P)RmGwy*oe6OvYPntOFw5_0#?w+=F!pLG46*%xz>fL`T-fsZ=e=gbm-A?hh2!4Lk z3UT|?N$aya6>O*1rm7<2>&5pqGxn_XzDyp@-^5El#=9&g50y`?Y}!CUQkD73COv1B zSC_YRYdNBCN5rU0d&u!5QuMU5A1Tf|LBBb^s-L(~=dCeE*K9TL==rtHnB#Mcw(+~F z@u%4$VZw1Pi@VkqC6{MPDoO|nN*%(B@81{^P|631qx(pk-7c#{j)CM%q^$lW%-inW zNXVx)-f6{P`2IA*;Xtm1l$+*RPTn`3Z!G_X9KHVkKpYyE#PJbD760GBQL31{5rE2j zf5rw%57wOhc202!M&E{cYIwN?B|mCn1UUvpKj&JggSKpOY!zbNrYO&JT^C`mRmQl8 zx4~=jbw-!vHhIEJ+MwdnqjbN*QB}eV!7>cAO0X`>NiC+(J1qxBEp^m;`&*4~m+vK_63RC6AUh4*pSRzXzo6@_$_%V`}(tgS`7DY3qmPd|~G zz@|dqcio!-DZvw#UCeVn?I9)mFvunEYw8P8O|gY7eZdox@?<*&ITgR!r&)i^PrZmP zn+*Z4=l7BIM21_GI{P&~s;b$AQQaywq#kLer9|G9df1IWQ+tI-uWu)t@|F79{;H0k z0p2Daf1Q<3m|!#8DZ7KruzRQpZM(0TNn@wnk`h}syyd&P(87HrQ*M4M3QJRNsa4W> z_S3c0b^qZnCcrn*6Fys`)jh#Z67V)T`N1$0`{+Tn21(kZcmGH+^+OGzRp$XSgv&zC zOL`@-yk$x0uds-=fZGML(_NSq#J)=p26-?P5FGH#hE`n-oajh2$DA^n;@()lmmK7G zck&}6IQkH(kqMIKVKRsTC`?Uvo*9&*SCin>t{TR=`gqgqD;Klh zuvx+zEY6FHN|&5`9(3PU>NBjTSGX#Bw0&pO_z7bI_E@+GA%Y7&p9OFv@`YPAdgBz1 zu&XN=MhGC5vG=gb7`#!6+%qKgn&kgt0bXXaw8YF2++bdg6xM$8pc{!+3zXpx$2Eb^r=y2(-Nz=Z>pC{~<5_C2ps&G6JEaW73kA;TyaD1mfa@XVp zN(Kv;6001%Nh!@nck|Nkzibe=biMy&C)Q=^F!2X-+C0h8*!6iRSNU*yZU*Z>=|Aab zg(*^Qg9j=*5QI5B5lRpE`+v8Usv1EnRDaO1a}jW%t^k-9&*t%u&4(tYmG#xULepy# z^}fS!d*&p`S(#_@=nXCbNS9MQ>3Bjf3EKb?8CHi_-fVB|_JtJ%e!(^L{i2Tfonf^Ih?LXnSwm$v+|8dz?&>P$? z3nENGj0g-&mp7>pGcdHo-F7Eo+K;KWs?9-#d+VCB_F2M2Y$HjO81^N7*KzhaYW5~(*m95d5@$x zldY<1cxBv0(%b(7*t7~X-S#^3mktOh7!V}XQF)Pewzy*s3pupZxkz4~-p%Csj+Eq^Xz2RleW9buy9Pf$Gl>Tv%6a>X zheHjk%t3-40kwCwV06i@V5WjQ#iFh{r*z7g%~eiXKR-lr;rVoO`LoKjJJ3D(#8VJr zxuIXUEr{LN;PjoDMlgl6Uz%|h)e!63&AGGQhPxN-!WWmVZ-m=ZW!lULVnfOwbmZfp zI-zVq4DhZq#7dAk*}s^5Q1tatH#XCC(#8(nk`6Au&jer|%!aJ591nsaR0nv;IT_?R zzWNfX5%yN)SK))V%%te`6QzkqPW}TaAQ*j`^()RnP#gE@l6y$oeAmXx% zm~ULg*!4l|kGfVPK2B$7KVSXE?fxK9NNJyPspp$!JJaUH7slNbjlii&J#eIV6V7L7 z#=QR5B$O$De=B#Wd!Zg%cZfu!iUfaxcaO^ZlU~?eTYa@BjA51OUiLUGlK6@-&%O-7 zWW-Ni7im2I0p!|OWYd$tUBM2ZUU%@ux2?5hf6`N{NBX?b0jPqHOcJ!}yZ&AxdV`c9 zD_dwl@lAyn@45I5oy!C?Yw_sP(3KKP=(4;9nBho}?9woC&5q^YmX4c})feIYG3tBy zD~2%eU+t`Ze>|Rlufz2p>k|J)OYFaKKwrJ`8sVC|s-V?%)qL;E=3pXKMJNk|Bq%6|il78V5LALh$p}c0sDMaD$r;JHK@da~Bi{Mgl7Ay0Hwt5STtvd;~#XL(iYQgnuNllht&9pbOvOKfGq! z93u#l6P1&Cq~@x(K1pJ5d495a8?kXFoSgXf1nOpbDjo%S?|YSUE$c6?YWIsY%&jvA zQ0i7c^@_|g>*{le_8SlOuaxT*TrMY0_p#T0`Y8dr#CbzbmSM5s7;z9+T+NT#=tA|o zOvSmGTq^CbI*3_}e@D%2;!1Eu$x8b!eXCiuk&1`*@5LW{n&_v=9~z8457_bC9zdfn z6h>qoNh-y7poUvzsYeGZwTmERLl;6Hf_m=W64rCR4vxc4Zaxe?>`3q#Ajqek9KwSj zodAd!f@Zh~#KA8y=6ftNnx!UkYHE?A?Dy_P2skXnT7w@5DhY`iB?B+CHgPn3x?WVR zBRcNT6OA@9HIvlLBqJ(UAKxbEnvPeDEl8 zPy7o$jM5)CS0(Q-cGLt;``y59FRa>+?^&)Vw`|RRU%v|WSq*ykj@XQZ56xYmkDS_2 z&u)(2UA({oS@ahg&b7}!v$_7Uy}iBDJ$uon8ja+Ow+_S&tD%&u`!{bbac#H=NjaY= z{d)X?a?*+tSJ!`BI=H)ZX_)?_wWeprEP^*l0~MSoRWpnPze$}a!J`FJ__>&^z=tuq_ZQOQy12?dscCpL-v z?;4ox1KGgg%-G`M;!51-i3TN7DY1L8$^AMjWIm{A1X43)8tWZ|Ws%nNdiea@xpPMQ ziudMzM{Kq`O((M?p^(;Hxot;dGyLKkddp<#$~x94u$`91Ao<9%S>?g&5F?{kcB0To z{#^VvQ}~J8dnwy`6+PDW$dOnnYL8y^20wM4x&p0)08G4(VnlJj)QJ$%P`&F*+2(k| zZrAJV1P4sRMa4P@Vt8>B*cg2daW|FO0D(N#4%azuVHu4(dE+Q>PZf(AMamC_kR6yw z=7&?CNm99b)8)Cm@e~8UT>z=}n&mA$7LK-v16j=T)`hh5_4+7(9g~LcVEd&0iMkha z8rDOtC`*04VRW9bxborBG3juah@-JeCZ z8OHOXKFT^K!L&jZtqWg~QMj`CGaFd*Gw8*SQLBZ;v?Tk-hk>2#DUs?a)+kyaV&(Rt z8LQeoo+k-jm;}EB?Rvbev_QHN?d|+LEFrGKISY(mXxNup8(#~47M#0sh?uNX8MTHA)QR%4dOHAurhp!28 z!`uL$)8G@SHm@XIx#D*rZ`3^`^NcT-NXtsDnW1wh~VQR+yIxXsEcck9+I zD^>_1Hlgv_+1<_5uC%#Cz1&s9iElu;HjUJGKUgzI0m)|>t+Y+qTk8G3QGFh-n8e<} zArlz%1;QsvN)?&FI>gS;&&Qoh{L>sN|K!PgHYX~ueu?Zee+c0t_(s!wyKM=5!8KQ1 z_}_Bpam1l9lhS9lInB$m81K9{8th^$aqfN^6dV%iyDZ1mQcJqlr#JTV@pvf&?a%He zKqI#&#LeW6vY!}rZe*0$H&fVdwTBgq9v#R!O$yz1{chl)&%o1ETu-`1`2EL=H#Z@* zpNsr>#d1}?J&8(Dk*xvs%?fPOPi$w7QCJ<;dqpP)H^Rei8=_q_Mj_P@;G<8Qdsp$=UcfT~sbLAwXxx5`h z>H;5}4+47S1GCyS>R)c1cqiTFi^p-msqJS|yGYsb z$omdYm?1tAesYT)gk_1*(7lw{bu-&4p=^!7_uih2b>pvlo2I)9tIBkqZwkKpHZz_= zm&em1CAoI!o21w|!({3hb|L8N0WsuH_%C^Rdee^LCilmTq?f1MAL+-rEvJ4;$xxQL zW!oXhEYD}!uAO4s-jI=P$ypt zo+W(K=S#^iwjXx+YE0|rwB?=bgs!M17SzXBkw}*(Q`ognxzsxKyYC{=imwVNpDEMC z-=qw5e&A>DO6PF%41?>|ks@Su$%erb{kU*qYc9~_T-5fN{<-eT52Qhl=-AjQi>0D% zM2sv5r^gR66YmO$G?goPIrPr3n?ON@s+V4^Q9x$2p5ByDg8%iFN#`4)H&v5gSSMG7 zjS8t_?N{9tLZA6X{4{1JV4t*?otkv7>Z5$(7+E$%taKxuowDAy*yRqI4ByP{-!1A7 zXxSny>Gj!0-LmI8Y+83t))!SHu0XU5rRLKQj)tSZGn21K4PXhK%{gKcXV3dB?mZ!U zFK`LZpZ@P%%qfixD}L9H<|nwYMHv0qC6Ob^!d04MC0qH)Q4BxvN{I=o_X&njs3JHj zn8+ne9&ls#LIB!P5PC!Om#6kA8E1cHjk+AqQudV^zNvFue9Z&^SW{xbA3_DOr&eBmO0yi5wy52?6ZJ?VpGv(WSc^M}*Ls4A;5mkHq_*9;eo zv3Hn=yH?oNKiHE9NS$_c%~3A{>bOMOF_D2yY7SCxw~t+9xlYVa-?C5mv!C**5IVCwf?`VCH6)i+A*zX5PB@Lgj^tmW8uqNW zXRfETIebCIS1;{t+eCDC6w6RN**ogcF5R_aODn3db5ZgI1nD?_PMl=?$w!+V?=&3g z8Xw}z`Qz_BeH&(!uV^!DcX1axd5m4Gp|IZqMD5vVZy z>%^gP`$KDD=K`sJ?l zbA2tp-cx^8X!z;tc>URBuG-moPiyO2b+|8iS;&~YtLm7HC&&7CT&FENgZ>)uw<&MG z9K>enJK^Rf=R(dOCsG+!D+wWc7Y}l*{C=v`A^;(QY;S>&c zuqi<=(B=C9HJp5gzr{DXS~hqu{(F~tdU{Cx4Yy^(Qq1=v(ob;_gbCKE%-K)c<_tDi zuM^il>LrxAbKhh!iHm-LEDb}RBtFu0otW~^+8755ntoU-%z4UzM_6!i)h9FFQq$r> z3~#cw{Du9CvRL1os)5Qv_d542`>yRIeTpAz)yyq%VM0NBW()wAN}~Ms*U?P%Ztsu8gJIXWN3~2Vo7n3e|;}gABkW)awv| z=AF(Mgn(-&WD3<`fBae$7F|wsa<6%?f-W<9@ivs$FU8r$><0*X+^s!9$@U(=9 zb(@l{P_yUaQNcdq0GZp2K@Q#Mm%s>4x7m3QtFt={VKdn>EJ$-%qj+32&WR%Hhohkp z*9r02m!pe;^C62vaby0g(g&Xck+1nM6+ISv8pT5qhZg6W&%cBqY-}CbOXZY{l|lX&LeOA#q-a-AGOhiemr37 z641K7GA^oHSf21;YSVJ4VnQS9xM63A_&%}MUz^Ud=T)`(&h1A+7p2S3QQdjeaEc)o zp9t~?-t%$n{^i2*JK2rGzZJhvYXmqx=&vWoLXeF(v&RHK{YzW$!j?Ug~;p_@3G{kqj~CIj3%mH+yD8PD-;zj3#^>Oy4<{W*<=ib}L(0z9H=>65<_8&o%)8yWsLJKlc--d3Cfiztbamu{8y|cc zC!EKv?T0i?TX~0d4Dr(f>UMTky8F~hO**+kKfaFkIzAX>BtCoo`Jn}_P&7NiQ7(jk z9Blg(Y&$aYqP3$VGE+Wg?9zjqN~q=!)Q0kR@7=%8gCW3}zf&t0p%Y+d?-J(jK|C_+ zX>O?Bk1G;twElA(#|w^jg-@|j@NCDMv*(Rwzr8ilidpW@mVflfm-Z|6B$HYRK5lU$}Al)us1Ab8{-nk_oAPIhpM>f*+IzrF}KAKSRhhiBIo z$;#!jp%W+KQSss00|`FsvD@;|_j9jZ3y+FoBDzS&Grp27hRHoSY!>6QOyXM@(zfN@ zB^2HML3u#x9}I$(oj!Mc2h2LvvtuGi+&{bGKxsf;25;4XeEp)VgWVPy)3?sGnPknC z?@@AsDLn7GLj+abNSS7*J4@>FQ2iNmcfpilg)M!z;WPxP5QzJi5A)G|N~HYR$Ht_` zF81XMEVYxwKE&Gd^K_b9SoTs3J=I=REQ^f`1YJ&fN37j0Dt2E8dH>VrDziAQ_j0v( zkR3ThQIV`O`vp_`+L1%F|TdrxMea9PMwuA6cvVH{9+n>fMDg@jn~d%!sH^MS7ZA=?8sW7$O7&cs{vxzYZxPQ(>|w zUpvCGJ9iNi)x0!sK8}J|%DtrcsDO3HqIGVJM^nJjpSB3)P37%~Oo?T|Du@Tk>PPsAuv}>ccDH@Pp z1GrhTqa4+;OMgUn?A-iT_<#)Z5eFwNxmqxJ=jd@}AJRdn+SQH<=rXh-33k5A+TYx; z{$LzzeJ3pJzvhQuMcAucxFN=BzHT_b;!raV>?AocAUQEB z!9(pqE_Ey6;+&hG{%6nQlc|c!0Lgj}z57&Z@V4k+vnEW0sa!XI6tLZw5xVu+N-UD2 zT@?51)-5TUdY_;aJjjd`?A?|!J#9S{5ojX2skGj~2XN49VD#7QiR#YEuQMjc&dlKA zQhUK2QFj-N-TP@gA3iEHcpot2H5em#`!jPV<{~QII_Z!af_UfvFK08Ij+szKL3_)Q zEHM`pD}mKWeE{aV8_(0Zt(=*j3Ds^!MX=Bv6GGw<;2e8XSRUlHz zCVA;6b?}iD0iRU>mve&&UHITxj$jrWEoOB90*Q98Cg5Qf;EI{`m`g_oCguh`8>72( zF-&SMAXTf~dUx}!pP;rdqC}?1z_VDgYisV3ldLHMZW)z%=On2UzV=j{vV6qpi!8an~epVqg+J zm^804#d@@6kSry2XaR^2-vx)tsWVN%zIG11(3dOHj|6AG1depKy>c`g!Fj|DL2Log zyVR$zvJl&fkk>YO76K5T2{z~9TN7c1<@Kv>e&VFaPguGafFAa|FgeC8mm(PBz}bDS z0?zi>E#PY3H6!t$o^-JHIU)z;HV{Xj?sNt0bUATZf3Mdzcl}i-EK$_p)NhR|j!?gw zKEUkDq=0%C-pjWe&xbIYB*0uK6UJv4o2aRmnU{K+`?)+c>g8lC{IF>7_yh+uPPb)` z1I#)HX5GNxz?Ql%uRx34DI8wty|BYWS85UWvV6_bUv#;n+kcwpkEd}Bj_YIUzkmNW z>PdZ6;=29H<8r}l<90;JdJjqOdnCxDVH0mA_mUE#V$-_KZQ2z{MDMA>XEnm`J@8^o zYs8)Q+3yWwnR)MngXjC?Iif^74qDndkoQv%*y{T)ip6VOHf_4aE$x^QqLmtXj$v76eQ>M5!HO4jY9qbt6%rrzM!V|2F#0^IU+-Sdmb>CP$4$&uaJ*}2PRR+rw#rCH6`Y^5)CDkh4+wI(Lspq$`o zIqJu(ty$G-j27zFD)bk5CmkGn%=i+`@gt8uo~&pfOH9@HO}lQ$$;suufMLhb)CWWB z0?fc#_X)5nb*)8P$paaaKmX+s1KCqOJ$Bt1$FMsop3k_rxs8FR+=)mz`N2awY%-Lu z8J>`!{dH};vYYOa;r;QIRUH3I71N-eKnQ5wbBe2YoNR20>FMcnJ!z5^KV(qcTwH5< z#)3N# zp2>2!Fsig$RNMRTJAFK->$DeYl)EQ|++8NQA**J#P|&qyp?yjG>k zWNhEXF%=duwf~zwBqr?xLjEG1gx1 z7bA2!H6UZafE3sq@#*8l=y1T!jx#{%>c+IJk-GXC)@U41cxPfCGhTZ4@6);A_RH~?IQ;rg z%|e9)B=toTTb+b8wlh671Y|(VEuzPpk-9vwr#jAr&!F{lBN2bp;j_xC^jk&~(CIuj zFz;^S81ku?;FIGjGuUd55dy-#A#wCTMYX}%sv>@7XCtcr*+u|tlcm2JJc%?^znVj$SG zmIm8>Sr1fhp{mZl-KBu*YlY3d0l39dEfY)Juf5IN+Ye5U!FdZx*JQ(;075`Kk_Z^a z2ZQ+Qbf#!3SR%;t;h}pjH{i%94xM=s_BrHb@L;=GCAg0hYRD%Q81hoie&oZy_mKlG z{XQJ7IZv?$g$70TdI`a4A^8We>?%NAW6QfR&9KcU;Kyf(f6I+Vc`_piA%-Qe&S(q= z!}cZ~M)aqg0Zx@?6v&mpGnM;ad&A&R8brlV6NrVFwJV1;j``DNh=PK%U~y^+fd@^G zamEL7ydW+hp8yZ!%EnEzz%`PazTj5@`*c|#DY5Gvdaz$-xC{j1wh|8cXnCE9>A^2J z{F(u$i2z4A^-(>K;4i#Bd$=(;l^jZcT12z~ZWsZH~T-bu4^pwtGSkXHnpfWWt4 zVAT1cJ_tCUfJm1*Jj@6-$t*x^pAL;RBa`~?si$XDeFQhmc}lQ~L=p`nX}iy`-`J4+*@J$Lw3Gj*O1N2DF9to3Xi+yP(M9W|BZ74j!Ni{Nv-` ztF0Yz-1ALD^pRxO`QW|*PG`Tei`zcY2NXO9-thPDSDOFHziv<=58pa2_dT|$-+!+C2CcS-GsFU+KV1Y| zsA@t?a0XRX6sw^pI^=qCj|f__MEjYoq;iuLHXqS|TEtjKjmp88JeY zrzaf%dH(=8)s-tuffr~?;Iuz1>?KNRyxJj~`sDR|l*SWB$1=@ij|~Ag07i6F&=s|U z80a=Xf8{H7PRsZiSY0Oq@d3+8 zz3~%y*!q0~A@{zP=_0QEGi*#=0&^jlbeAiDlw~(s zFUh?N3g@n=+0_gJ3}D1(u$bS&f!Z2TP|)w^z(DD2<%Vb#WS>$L1ijNLC|8DhDH?&U zc#=a;GbG)zji!4eE>X`~;)Bd+)(?6|BhZgrnhE`Ucn$V5-+-Ut-ARFH!0sSJwkYdb z#x+BrFW?)f6c55U9}rINamF|>!>1US4&H>4Q?2v}Bv_6QH-HUL6)+PtfP_#4FoMDq z(9@5*C({b2Cjl-t=W|)U4xiBxKEtU!yo1khchsI!|6FkUZB|h&LMOQrShEuWwL#n% z_#T4>nt_;{K8&f0Qe3(hwm-#>At{jkf2R}&T?%+$4^X*$c43i9PC?C|baV97rrH7W z&SoFjo>p6exInPRa00e{$p&W)c4xt&eAIP3QgAkq_W#=c_G;95$$!)YZlRj}2oZmG zJJCjVt$$WMKF!{~QG!W=*P&btIMoRS^fKRJ0cQwLei;f8vx4$XC<@%XGzetU72`94)jOd0q`f{!!_xDO8n0(Q5sLsR>ZcJi8zKOo`Y3zGXfKjN z%cs_T;tjN9zj`1@DGnQIsFDGy837r52}(9?se@yY3-0R}h6mlpPlO(d$c6tgJQYC% zfjE@|p${i4IvWy@?CO(7Bs{gs(jpj{s^^2Seqot5uOv9-pP$)}37u zAdCsWOvUEM9S%oMcIUycKsQb#+a*ux@u{_%p#zlVE#aE~OoQK<@Kf7eg_GaYG%CQ> zW9A8gc#MGE$!DX*r0}H{Vz|HtJA4~(0_yC8&5jM$@N3s$@8weq=rc*$J<*3HaYhTQ zdu;*1atxtvK{ar{z-WAuZ3Xw~&@dQkIUYyytfuKkWI8-cgn@(&%IA1?*ps8aY-ReO z(9oFP44L+LUdy$xm8lao=Y-`*S8LX21n3ADLV%6m_AR=| zlLTK@(b2iTI$XrxSryXK0tz4H9=T_19=jv)|Mp%n2eTkp%t(A5;PW4YH?@b+@_u)%7 z5F*SCYUuNxk+lG+_YGC!wfkc~Zk#*!{)sV0Z~6qtB{0YTIZ5mUKEo1!X51FZW}4zv z!B#K|oSp&#&-B#iU7C2lDSV5`m~MIS!Be#3lQLjf8VmlL>pLX$UBbpbFtn0$LSpxe z=3|g2nfEnIq@+V`n9EyIQBj!+2BSIB8kcd|83@LI%(Y!nu{r(_tAV2p^6h!5wrDnO zBlO<#GZhsEkoj>pI~f%X%?QxB%~80)3H5Sz3ZDa!h5jR5rNoCXyNT(qU~q)6^Mt;! zz>e=H&tg}yh_>{HYc~`4thsnSx*9*_=ie7_-AWyO9x8GWOD%FzVCyAcpUh>(5!e@N#*>3XP}v@X(3SV&x$CV^oW2=Md6m6+)EJlcaJB&_JCBi5i+eHJA6xd8MT?Mzai09l_PzQHwz zcm&6_Smv-WI0=9}iG5z?zrvoTB0lu^2C;1dPj4q&JWN&>_Ew1pa2mt{2GIt!wp-00 zE6tRDw%*MTtB)i^s(M8kmwEu~lG-DPR1(IiUs^(UdSFX+I-*^&t3coQV}zx3Ey4m= zmD7ir{p8bMpN<86E9`! zE887H(wD884%>u>AE9d|Q{XH_&e89P;anKXV}t^zVSC_%CWpSu4uwgK{?ScmWHhqE zDZwE|Di=7tn{6$?P$%?q!!Oet0!sqr-GTxrPS@juQ&2J)&zHC_Qv8z=0$kZ3cBB{; z3;W8D^;gC({;}ICw0N8f`NbF<`?XL1G7><`q?BE|h&w&7G^~KV&d2~nbAiLY^S~9h zZa(gSszxFq`yYQO1Trj39Od4_(ICVN$o75TjC=|T2@t+GMEaU8RAy@0<`_qI8jR%7 z<8l757Kr80U!ancP>3`-kSmARm4kH;vyWU9a7ve`XpP~stVn>>S3(ijWlvMOYxoAl z_W(PB)DCdD4Jl?EN(#TbJOZ= z5_Vn!PM#q$K-W_kbph!Zz%4(0JtKI!5DgYag2<}6UQpKF^8;*Hi3#vHr35fIW==Ro zY9aC_j@{tfH<_PE|79o{5b2v;OVc1z zkE~ic&D48T00F-{{&DJN=kN{QvD{||{0xb+#%BQ71UzyG3n%-%7`j}NK8}JUSUAld zg7Ft$*Y}pD|H>v!D0J=CT{O7TBbX^J2yc{ZHBr6>b zN;7bo!YAt{MEC#)Bf=05(1uR{ddVVGc>o6%W=i1c<-9`raHs|Z^TS^)k7xfMGDu#J z<;)nPmQObqPD;B3<*#z+S%sE~n4)7~j=S0tgJ8yt{eKDE2Ch>_6=;<|v8kFRtll5e zHU?O${r;dvg7NM`=fQ^x^#_>qutO5(4&E{|E&cCKRR>_7tYU{v7v~y|H@JY|sVxqTt3jx&UwE2kv)Ax@GF2LC7ojWpZZEd$jL?)vTm%N>wD<;1vv|qPx zhzF(Hqu?gZvVgBlbpYfr-?fz@fJ1VqGx%vE8K>pYeO2AH`^N|Cr84ouA2U2!5nfKk zIu1%M+Q7#5cmh9}m6-{@Ja9wMu?5~6emUTuy#Wx;?R6H=#K|He*Wl6%2^87N{MWMo zYi9X>x>sYZ4Mcu62oMAY9e+j2VkNv%gC=~CIOOq>8R7zn-TQFMx|iZOiOGg1*=yJYu7-L37Q3gRjShJzjfKTHe=v| znP&vfh?JC+%*{0UnP`8c6?&eGz`D8ZwBG4V^yNUFl++!JS#nv8aC!jSBkp=G!3`S6 z-z5g{mHXj|$z_18_^kei_bL9LdVaTVe`4;T{vqVJ!~nSZM-FJaKe5*(SrEz1A8!9y z2x732f~?+Pj!_BMflcwJD`;Hq%?O-yfV*=+2HsAk?|Bp8?UyJhUdkr~?heaU4YBW_ zCFqAa%U*{Di0bM8G2d(L?vAmUtdTSNEadSWXm{k);p|DOg`WP>ADRHZjozN-RY_G& zSTFwVQ2 z|BtQTBhm~1vBVsNDAwYCwq(9OaCx7b8l&7jjuY8%`?G~$) zu{>BS?T*jRJ>)=Z`Gs9bEJByAl;_H`=!#{cOa_N@+EGZHmxr`*lQ-sh{)?M%jXrK) zA5k%^=g~>G-TT!Jh6g~o;)#UB8xUnbt+1W82^}g-+x!!)Hf(vHl{E~+oWm0y>tp5I ziwa4CgTk#j>>sO#wV!wmZwXBwDV3+}f6>R}iD=atR0r(WH{=y{YSMw`dk<-+CPxhZ zkmB=I7{#?~N=F<)Jp1TRtk#J{21_<&!s0bSQzWy&8Osod;)a}2M@wXIIPTjrE zZ^L7ILzmBX%Bq`~eX|~w>_&+=oDJOR655Qtm;#zb{KZvz zmg&P^{A<1OybJZ`<+FVstqN||?FvuvznR>11-3|d3W)}PpRDAJhjm?&7T@11EcOtc zLaK?lOu1!Gp0}CO&k`K`)O;LJ!89nc+rgb28F{&uYNC$*D%~cBMXd%>1?j!AQM-8n z+E}Jl_4I7y@1DrpVG2$_o|$*4_;i=$JI=pS18u|E?$_@FjV9@f6uwdq{$tl zHrRdEtNZ7VAFg$?-D_Xiv@2pAo)_s^%io1>UUUGeDEW&N=4LrB`Q zXC`8Hz}dUFcky9f2(3`OlQjtQZ-UF@yNEl$+D8Ch4$zT^j{QhgbWlm?hZNpKPxq6Oru^uun<-9vv z+4CNpyP1PikzTz;J>5sQ&EGuu2KU-qTPZg6Kq1xOgsI=(b<{W}ZdENpr6J%v6+4gD@`@!L+0d#+|Kb~LLi4X*&yW2+7p~4m z2Cf_z7k~mldRcei!70vcCD#cEHx$ea1YrtL|?TmDI-IeQRSMrBBdb-b+-3JVnmzU@6=F1l>k^5V~)SCLV z>-SUFWzyK2ghRVR!F_M(rTiI6N=nAXM2C>Ik+0vQ2{DsA;WZrhFV?6%%XiA}>aDIGVgPgIuAt z`?Z%_^ZWfhD>(y+W%M#8m;Netn1zF*`vXh3TYavSZ%^ zy!>@jvY(bYWzu>G8`=jGD%Nh8m1CWr;m?SNX#I<1HDjht#c}O|*Ax@}z};owHOmd|af|u3sN|(3v+jv%ht3=p+R@C6 z%sTpFAfRwHm;06@XmCpg5c2c;Z{NN>_^?v64OapdfrZ|2MF_YJ73ptQW6`T3+uPg8 zu&O3g2z!HzP8hE6K-oB0Gb<%7$$^{A7*os97YpS7;pV=-GGC3F^000-2i6%N`695T z55|rqfI`Hmvvi~A$=3G;kwf%qkp~vDiAbP`p1MfY4Y~+AUuQD1z3GjrU2qBEXK)`X&|cgQcvyOP zUD&mF5j6OH_3*8CdCHA%aJ`p5cWP-0DbcA$K<|B+Ch~h*A(pdA!F*;DXvZEY4NprV zVj<4deadrJ(c|{v5=T+|)ug*Wp6>H@#XiXRJXF)T8DU) zkW%h}+Au*hhtM9FEdjO>3f9|9A;0~@G60u6U-usP=|%=XsbnHL*T$1I8e;b9xp0f3 zT9?f!=DOoAt6mdhEAAg@APd2)VDF?1VA41BY!#jAMad{4m=$*%Hzr0;US}5lIT*Js zx;ppfh-SzoH1AHb>$iwcpA51DbLBYok@0#7?AVm^G-C~@`c1cIs;Y`T^$YQq3bK0| z`m2fS#L6Z>jV?Ehc+(ZNTZAf~@E{@G7x9 zPy%C=R##V&P$mM0buKb5J1_@zJLjV9WX~PBqaqxdqZCt`f>AK(h<#a+pbc`Ex}COr z%x0j~QsdnD^Gx7Xw=QAOa}6hCzkdY5A#e8uGG84(@GhKYrA^XhDys2t^v~vIxS`^< zpx{_E00Ac?*rBYfthTR)&2w-s?{(X{-e^7~prSoS-sT;ryWE#~AiKLVkQ+gQKu`B>@q;c?Lyqoyh4Op2xU^G~P+>^~~$}wFsQc{P-bt z^oJhDGOXk9kxgVB4ow8I+MR}VP1|f5j!aYyUDwNp+dxEX+6E{xxv6?4=Vixn>2q!V zO0kpKi#vYwC#hoy8OhXuj9(T{$WojCgaPg*n2f~#`0=9!i#cWj4YJWZAq@>;xT9|8 zZVv}3sTSiHU1kkkrzmsmph`Y(k>ybSSJOi?2-D@#V2Hv;0j_EgbgF-O-dg0nf3I}C zhaoSGlbn^6HOsAr-B;%f=DP$U8ni#fdd&I~(G|;h0!~iH&V14H+4mhT zhPVWqSG7TuDSE7KZMZelw4i0ClFVg%j@K8oC=BI5hoDKToxfq5Y&Q+DxAb(^H{0u1 zB!W%dn)f-`Q|-g?2Cv$^jmh!k!8%b;a!x((OVh$$HG|*U(o)RS;Qd~U57=q#KG(4y zYfJsvp(Na(-MO48>f?2OB|Wcwb@SoEq)`r#vcL}2ivI`bKi2F`90U21w!2m+oygsg z;mWcBgV=x^8vJqr&^2K&kP5v3?OhfgW%`LW2vqHK6dabD%zeHfw72v^DX*A^U1OEqVmlV2+a7s7LAbf7XnFUCN%9 zgBf(6jSZmuy(WFOh~sgSUT*|8<2@rIqvCFnLtVpsxIFt;{n3&#fvH*KdJlPy;y1zf z=^`~@i~)9$UwVY4YGOe$+ri`G@u91oN%Z&^y}BJCT*X7`A5f>86P^FfLz5U zf;^}E^_a#w$S3OAND}qVTVJwnX(Xpr_(R}AYg|xX>sy667+;T;1z5%r%HsaIWzHGT zz3CTJ1)4+58x@zYTrsXx>R&A!mZnQCD zNr(l-CVbBj8I6^h!@KzOTt0V+LA2Dw@2wXuW&Ov zEh{S}J5wSRXQp59*n(xzl7>t0gL*|Va#*c+O?2ro)jU>b(HIMD zp^Si4$`;~*Jk@%$kshoOwk%+Ot~J6$`+E$|fYj;t50ZY;HDaS=akBUB$$iTjCq(-L zcSJ<$Z#g!c?6fajd>ftW1>U;3fDpqhD=U&;RFjm!qskmc>V{-Sif}cX8W040Iy7#zy1c$oE5e5KR{E>i?zSLdOP_guFGSoCs#AiJ9Nww zM0imatmUJnH}@_QW($-zzzE&J7o~o!hl^EHmH;c_y_)rhbjuZY`n8n>>D+bt(iur%MOSuOM-BsL>HciVBW^1|n#`Dkq$lEdS{@`FvH z;md-q;`DchCLFcs3O?oq6S5@9tC*8zblFl7ll5Mp4J%OGBTG}P5)2pql$j+{y6m-b zW7rZ#hgA(Ji@jqltP>BG`+{uC#UcV8tp{EqUKbVvC98hnTwbHG$lMIA^6FxC8oqtY zGi3VZ1ylg6B$OCvcAL;novvI#Yfq!2%@0VW7&=4IA|Twh7%el87#+qMcl9&h0Le~% ztl`GVZgOCj&4rFV1Ug9l!TvVbvIBC6`go5~)gG{(RtZGDCK^qVO{@u)H_RE-8PUBomZ$#5uo|UrgnbSs~I_Wp)@U8l(vK4G;r@nGlTm9*xry z+u|iPd#I{DOh$sptJuu2OuCRM@J(NG2_d-{)=z#IRpj|InovoGeRXLtz+Wtrw*jl% z{}2?|jy5e>2D}rsb`Jq~694q;nCAxgdH74_9g!g@%lCz4x>GMZA=vfftinfb+bLm( z`c*CLUba}ALxKaH0%*~FBHrIPASLOeg#98fDT5x8S)|UtM__TyEF}BGz~k>JLk7<= zo0Ud~4oe7m%Oe`@i&G$lo-aaREd9QvNS-kml*u#iOg{Jnr(W|&+%ZzI)J&a*u$<3k zw8XgL^LAN)YBu`y)dDXQ!7HGJTqEO5>JYh}Lnp5Z$(}EU>?yc1@3&aSR|%@x0mzCh zJe51CLju^9^k%1l5^fTELy1&Aht;Lmrf^V|uUB95Dp^DqwB#~^79Y9HT?;Lc0NEn% zfma`tGtL-T=5P=&-@ZMIeVm6Cfgh*6i7(V*6(dO=2B7(<7)m7XkF77 zk-TdcuW>f!I~50tZa()L#h|8blZE?6$a8k3EX1Tud$G>Ey_UZbdWyl^p*O)J^u;M3 zSt82vu&_^l^-3>^?{k)kf%SXG`Jg&pVRKT9=7Ufl4{t z4ZNbZi0;QmSkGq0=yCZ;Bw}sR{-m^zb^0l}PL^Bj)-9KoM!sga4V860UfKk>SPb}g z3DX;cz^N(1Ub$AIRJ^cBk$>_w9BXtWi;R=5^bDtU_U(T(7-qG0-1^uRlN<4J)o2-g z?Gdi=0wi9X!w*?->neKn;*j;qUWkB=M!0v-r~cC74jI-u4D?`Mi%5vTs@Bi5L1_aO`ae=}gOd3aY9Ee(q;d z$G#fMlxIuAOX#Wb)eLAE8)p QkZC}2kCmhfB@EvDAAWuKFaQ7m literal 0 HcmV?d00001 diff --git a/TEMA9/report.md b/TEMA9/report.md new file mode 100644 index 0000000..cd3dcbf --- /dev/null +++ b/TEMA9/report.md @@ -0,0 +1,230 @@ +# Отчет по Теме 9 + +Савин Семён, А-02-23 + +## 2.1. Создание автономного класса + +```py +>>> class Class1: + def zad_zn(self,znach): + self.data=znach + def otobrazh(self): + print(self.data) + + +>>> z1 = Class1() +>>> z2 = Class1() +>>> z1.zad_zn('экз.класса 1') +>>> z2.zad_zn(-632.453) +>>> z1.otobrazh() +экз.класса 1 +>>> z2.otobrazh() +-632.453 +>>> z1.data = 'новое значение атрибута у экз.1' +>>> z1.otobrazh() +новое значение атрибута у экз.1 +``` + +## 2.2. Создание класса-наследника + +```py +>>> class Class2(Class1): + def otobrazh(self): + print('значение=', self.data) + + +>>> z3 = Class2() +>>> dir(z3) +['__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__module__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', 'otobrazh', 'zad_zn'] +>>> z3.zad_zn('Совсем новое') +>>> z3.otobrazh() +значение= Совсем новое +>>> z1.otobrazh() +новое значение атрибута у экз.1 +>>> del z1,z2,z3 +``` + +## 3. Использование классов, содержащихся в модулях + +![Скриншот содержания файла Mod3.py](png1.png) + +```py +>>> from Mod3 import Class1 +>>> z4 = Class1() +>>> z4.data = 'значение данного data у экз.4' +>>> z4.otobrazh() +значение данного data у экз.4 +>>> import Mod3 +>>> z4 = Mod3.Class2() +>>> z4.zad_zn('Класс из модуля') +>>> z4.otobrazh() +значение= Класс из модуля +>>> Mod3.otobrazh('Объект') +значение объекта= Объект +>>> +``` + +вызов функция выводит значение objekt, Class2 переопределяет otobrazh в Class1 + +## 4. Использование специальных методов + +```py +>>> class Class3(Class2): + def __init__(self,znach): + self.data=znach + def __add__(self,drug_zn): + return Class3(self.data + drug_zn) + def zad_dr_zn(self,povtor): + self.data*=povtor + + +>>> z5 = Class3('abc') +>>> z5.otobrazh() +значение= abc +>>> z6 = z5+'def' +>>> z6.otobrazh() +значение= abcdef +>>> z6.zad_dr_zn(3) +>>> z6.otobrazh() +значение= abcdefabcdefabcdef +``` + +## 5. Присоединение атрибутов к классу + +```py +>>> dir(Class3) +['__add__', '__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__module__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', 'otobrazh', 'zad_dr_zn', 'zad_zn'] +>>> Class3.fio = 'Иванов И.И.' +>>> dir(Class3) +['__add__', '__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__module__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', 'fio', 'otobrazh', 'zad_dr_zn', 'zad_zn'] +>>> z7 = Class3(123) +>>> dir(z7) +['__add__', '__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__module__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', 'data', 'fio', 'otobrazh', 'zad_dr_zn', 'zad_zn'] +>>> dir(z7) == dir(Class3) +False +>>> z7.rozden='1987' +>>> dir(z7) +['__add__', '__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__module__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', 'data', 'fio', 'otobrazh', 'rozden', 'zad_dr_zn', 'zad_zn'] +>>> dir(Class3) +['__add__', '__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__module__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', 'fio', 'otobrazh', 'zad_dr_zn', 'zad_zn'] +``` + +## 6. Выявление родительских классов + +```py +>>> Class3.__bases__ +(,) +>>> Class2.__bases__ +(,) +>>> Class3.__mro__ +(, , , ) +>>> ZeroDivisionError.__mro__ +(, , , , ) +``` + +## 7. Создание свойства класса + +```py +>>> class Class4: + def __init__(sam,znach): + sam.__prm = znach + def chten(sam): + return sam.__prm + def zapis(sam,znch): + sam.__prm=znch + def stiran(sam): + del sam.__prm + svojstvo=property(chten,zapis,stiran) + + +>>> exempl = Class4(12) +>>> exempl.svojstvo +12 +>>> exempl.svojstvo = 45 +>>> print(exempl.svojstvo) +45 +>>> del exempl.svojstvo +>>> exempl.svojstvo +Traceback (most recent call last): + File "", line 1, in + exempl.svojstvo + File "", line 5, in chten + return sam.__prm +AttributeError: 'Class4' object has no attribute '_Class4__prm' +``` +У экземпляра удаляется атрибут, при последующем чтении метода выходит ошибка отсутствия атрибута + +## 8. Пример представления модели САУ в виде класса + +Содержание файла SAU.py + +```py +class SAU: + def __init__(self,zn_param): + self.param=zn_param + self.ypr=[0,0] + + def zdn_zn(self,upr): + self.x=upr + + def model(self): + def inerz(x,T,yy): + return (x+T*yy)/(T+1) + + y0=self.x-self.ypr[1]*self.param[3] + y1=self.param[0]*y0 + y2=inerz(y1,self.param[1],self.ypr[0]) + y3=inerz(y2,self.param[2],self.ypr[1]) + self.ypr[0]=y2 + self.ypr[1]=y3 + + def otobraz(self): + print('y=',self.ypr[1]) +``` + +Содержание файла MAIN.py + +```py +prm=[2.5,4,1.3,0.8] +from SAU import * +xx=[0]+[1]*20 +SAUe=SAU(prm) +yt=[] +for xt in xx: + SAUe.zdn_zn(xt) + SAUe.model() + SAUe.otobraz() + yt.append(SAUe.ypr[1]) +import pylab +pylab.plot(yt) +pylab.show() +``` + +Результат + +```py +================================= RESTART: C:\Users\somas\python-labs\TEMA9\MAIN.py ================================ +y= 0.0 +y= 0.2173913043478261 +y= 0.4763705103969754 +y= 0.686594887811293 +y= 0.8199324616478645 +y= 0.8837201137353929 +y= 0.8994188484874774 +y= 0.8892777072047301 +y= 0.870097963179993 +y= 0.8518346102696789 +y= 0.8387499784485772 +y= 0.8314204114211459 +y= 0.8286051955249649 +y= 0.8285656555914835 +y= 0.8297915186846528 +y= 0.8312697736438287 +y= 0.8324765218921963 +y= 0.8332456979978418 +y= 0.8336163607592184 +y= 0.8337101315489143 +y= 0.833654237067147 +``` + +![Скриншот графика](png2.png) \ No newline at end of file diff --git a/TEMA9/task.md b/TEMA9/task.md new file mode 100644 index 0000000..7fd04cf --- /dev/null +++ b/TEMA9/task.md @@ -0,0 +1,131 @@ +# Общее задание по Теме 9 + +## Задание + +Создайте и запишите в модуль класс, содержащий следующие компоненты: +- конструктор, задающий четырем атрибутам (fio, otdel, dolzhnost, oklad), представляющим фамилии сотрудников, название отделов, названия должностей сотрудников и размеры их окладов, некоторые начальные значения; + +- метод для обеспечения операции повышения оклада сотрудника на заданное значение; + +- метод для обеспечения перевода сотрудника из одного отдела в другой; + +- метод для изменения должности сотрудника; + +- свойство, содержащее перечень (список) поощрений сотрудника. + +Создайте 2 экземпляра класса, задайте им некоторые значения атрибутов и свойства. Отобра-зите эти значения. Попробуйте с этими экземплярами операции перевода из отдела в отдел, изменения должности и оклада, объявления благодарности. + + +## Решение + +Содержание файла EMPLOYEES.py + +```py +class Employee: + def __init__(self, fio="null", otdel = "null", dolz = "null", oklad = 0): + self.fio = fio + self.otdel = otdel + self.dolz = dolz + self.oklad = oklad + self.__bonus = [] + + def increase_oklad(self,summa): + self.oklad += summa + print(f'Оклад {self.fio} был повышен на {summa}, новый оклад равен {self.oklad}') + + def move_otdel(self,new_otdel): + old_otdel = self.otdel + self.otdel = new_otdel + + print(f'Сотрудник {self.fio} был переведен из {old_otdel} в {new_otdel}') + + def change_dolz(self,new_dolz): + old_dolz = self.dolz + self.dolz = new_dolz + + print(f'Должность сотрудника {self.fio} была изменена с {old_dolz} на {new_dolz}') + + def give_bonus(self,bonus): + self.__bonus.append(bonus) + print(f'Сотруднику {self.fio} была выражена благодарность: {bonus}') + + @property + def bonuses(self): + return self.__bonus.copy() + + def info_out(self): + print('Информация о сотруднике:') + print(f'\n ФИО: {self.fio}') + print(f'\n Отдел: {self.otdel}') + print(f'\n Должность: {self.dolz}') + print(f'\n Оклад: {self.oklad:.2f}') + + if self.__bonus: + print('Поощрения: ') + for i, poosh in enumerate(self.__bonus, 1): + print(f" {i}. {poosh}") + + else: + print('no bonuses') +``` + +Работа модуля + +```py +>>> from EMPLOYEES import Employee +>>> e1 = Employee("Иванов И.И.", "IT", "Программист", 110000) +>>> e2 = Employee("Сидоров С.Е.", "Плановый", "Эконмист", 100000) +>>> e1.info_out() +Информация о сотруднике: + + ФИО: Иванов И.И. + + Отдел: IT + + Должность: Программист + + Оклад: 110000.00 +no bonuses +>>> e2.info_out() +Информация о сотруднике: + + ФИО: Сидоров С.Е. + + Отдел: Плановый + + Должность: Эконмист + + Оклад: 100000.00 +no bonuses +>>> e1.increase_oklad(70000) +Оклад Иванов И.И. был повышен на 70000, новый оклад равен 180000 +>>> e2.move_otdel('Логистика') +Сотрудник Сидоров С.Е. был переведен из Плановый в Логистика +>>> e2.change_dolz('Аналитик') +Должность сотрудника Сидоров С.Е. была изменена с Эконмист на Аналитик +>>> e1.give_bonus('За успешную работу в качестве лидера IT команды') +Сотруднику Иванов И.И. была выражена благодарность: За успешную работу в качестве лидера IT команды +>>> e1.info_out() +Информация о сотруднике: + + ФИО: Иванов И.И. + + Отдел: IT + + Должность: Программист + + Оклад: 180000.00 +Поощрения: + 1. За успешную работу в качестве лидера IT команды +>>> e2.info_out() +Информация о сотруднике: + + ФИО: Сидоров С.Е. + + Отдел: Логистика + + Должность: Аналитик + + Оклад: 100000.00 +no bonuses +``` \ No newline at end of file