From 82f210a62bd1a68c800b25ab037ef3cf83db3b4e Mon Sep 17 00:00:00 2001 From: u207-05 Date: Fri, 5 Sep 2025 06:08:45 -0700 Subject: [PATCH 01/19] 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/19] 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/19] 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/19] 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/19] 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/19] 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/19] 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/19] 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/19] 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/19] 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/19] 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/19] 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/19] 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/19] 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/19] 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/19] 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/19] 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/19] 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/19] 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) +``` + +