From 48b6c2271e558691e70bee3c5c11ee9284feaff5 Mon Sep 17 00:00:00 2001 From: TabolinIA Date: Fri, 26 Sep 2025 12:11:15 +0300 Subject: [PATCH] =?UTF-8?q?=D0=BE=D1=82=D1=87=D0=B5=D1=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- TEMA2/report2.md | 560 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 560 insertions(+) create mode 100644 TEMA2/report2.md diff --git a/TEMA2/report2.md b/TEMA2/report2.md new file mode 100644 index 0000000..30f7dc3 --- /dev/null +++ b/TEMA2/report2.md @@ -0,0 +1,560 @@ +#Отчет по Теме 2 +Таболин Иван Андреевич А-01-23 +## 1. Запуск оболочки IDLE и начальная настройка. +```py +import os +os.chdir('C:\\MPEI\\TEMA2') +``` +## 2. Изучение простых объектов. +Присваивание +```py +f1=16 +f2=3 +``` +Просмотр значения переменной +```py +f1,f2 +(16, 3) +f1;f2 +16 +3 +``` +Просмотр существующих объектов +```py +dir() +['__annotations__', '__builtins__', '__doc__', '__loader__', '__name__', '__package__', '__spec__', 'f1', 'f2', 'os'] +``` +Получение списка атрибутов любого объекта +```py +dir(f1) +['__abs__', '__add__', '__and__', '__bool__', '__ceil__', '__class__', '__delattr__', '__dir__', '__divmod__', '__doc__', '__eq__', '__float__', '__floor__', '__floordiv__', '__format__', '__ge__', '__getattribute__', '__getnewargs__', '__getstate__', '__gt__', '__hash__', '__index__', '__init__', '__init_subclass__', '__int__', '__invert__', '__le__', '__lshift__', '__lt__', '__mod__', '__mul__', '__ne__', '__neg__', '__new__', '__or__', '__pos__', '__pow__', '__radd__', '__rand__', '__rdivmod__', '__reduce__', '__reduce_ex__', '__repr__', '__rfloordiv__', '__rlshift__', '__rmod__', '__rmul__', '__ror__', '__round__', '__rpow__', '__rrshift__', '__rshift__', '__rsub__', '__rtruediv__', '__rxor__', '__setattr__', '__sizeof__', '__str__', '__sub__', '__subclasshook__', '__truediv__', '__trunc__', '__xor__', 'as_integer_ratio', 'bit_count', 'bit_length', 'conjugate', 'denominator', 'from_bytes', 'imag', 'is_integer', 'numerator', 'real', 'to_bytes'] +``` +Определение классовой принадлежности любого объекта +```py +type(f2) + +``` +Удаление объекта из оперативной памяти и проверка его отсутствия +```py +del f1,f2 +dir() +['__annotations__', '__builtins__', '__doc__', '__loader__', '__name__', '__package__', '__spec__', 'os'] +``` +## 3. Изучение правил наименований в Python. +Операции наименований переменных +```py +gg1=1.6 +hh1='Строка' +73sr=3 +SyntaxError: invalid decimal literal +and=7 +SyntaxError: invalid syntax +dir() +['__annotations__', '__builtins__', '__doc__', '__loader__', '__name__', '__package__', '__spec__', 'gg1', 'hh1', 'os'] +``` +Задать наименование переменной "73sr" не удалось, так как имя не может начинаться с цифры, а наименование "and" совпадает с ключевым словом. +Только переменные `gg1` и `hh1` получили свое название. +## 4. Изучение списка ключевых слов. +Просмотр ключевых слов. +```py +import keyword +keyword.kwlist +['False', 'None', 'True', 'and', 'as', 'assert', 'async', 'await', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'nonlocal', 'not', 'or', 'pass', 'raise', 'return', 'try', 'while', 'with', 'yield'] +``` +Сохранение в переменную `kw`. +```py +kw=keyword.kwlist +kw +['False', 'None', 'True', 'and', 'as', 'assert', 'async', 'await', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'nonlocal', 'not', 'or', 'pass', 'raise', 'return', 'try', 'while', 'with', 'yield'] +``` +## 5. Изучение списка встроенных идентификаторов. +Вывод списка встроенных идентификаторов. +```py +import builtins +dir(builtins) +['ArithmeticError', 'AssertionError', 'AttributeError', 'BaseException', 'BaseExceptionGroup', 'BlockingIOError', 'BrokenPipeError', 'BufferError', 'BytesWarning', 'ChildProcessError', 'ConnectionAbortedError', 'ConnectionError', 'ConnectionRefusedError', 'ConnectionResetError', 'DeprecationWarning', 'EOFError', 'Ellipsis', 'EncodingWarning', 'EnvironmentError', 'Exception', 'ExceptionGroup', 'False', 'FileExistsError', 'FileNotFoundError', 'FloatingPointError', 'FutureWarning', 'GeneratorExit', 'IOError', 'ImportError', 'ImportWarning', 'IndentationError', 'IndexError', 'InterruptedError', 'IsADirectoryError', 'KeyError', 'KeyboardInterrupt', 'LookupError', 'MemoryError', 'ModuleNotFoundError', 'NameError', 'None', 'NotADirectoryError', 'NotImplemented', 'NotImplementedError', 'OSError', 'OverflowError', 'PendingDeprecationWarning', 'PermissionError', 'ProcessLookupError', 'PythonFinalizationError', 'RecursionError', 'ReferenceError', 'ResourceWarning', 'RuntimeError', 'RuntimeWarning', 'StopAsyncIteration', 'StopIteration', 'SyntaxError', 'SyntaxWarning', 'SystemError', 'SystemExit', 'TabError', 'TimeoutError', 'True', 'TypeError', 'UnboundLocalError', 'UnicodeDecodeError', 'UnicodeEncodeError', 'UnicodeError', 'UnicodeTranslateError', 'UnicodeWarning', 'UserWarning', 'ValueError', 'Warning', 'WindowsError', 'ZeroDivisionError', '_', '_IncompleteInputError', '__build_class__', '__debug__', '__doc__', '__import__', '__loader__', '__name__', '__package__', '__spec__', 'abs', 'aiter', 'all', 'anext', 'any', 'ascii', 'bin', 'bool', 'breakpoint', 'bytearray', 'bytes', 'callable', 'chr', 'classmethod', 'compile', 'complex', 'copyright', 'credits', 'delattr', 'dict', 'dir', 'divmod', 'enumerate', 'eval', 'exec', 'exit', 'filter', 'float', 'format', 'frozenset', 'getattr', 'globals', 'hasattr', 'hash', 'help', 'hex', 'id', 'input', 'int', 'isinstance', 'issubclass', 'iter', 'len', 'license', 'list', 'locals', 'map', 'max', 'memoryview', 'min', 'next', 'object', 'oct', 'open', 'ord', 'pow', 'print', 'property', 'quit', 'range', 'repr', 'reversed', 'round', 'set', 'setattr', 'slice', 'sorted', 'staticmethod', 'str', 'sum', 'super', 'tuple', 'type', 'vars', 'zip'] +``` +Изучение некоторых встроенных функций с помощью команды `help()` (на примере `pow`) +```py +help(pow) +Help on built-in function pow in module builtins: + +pow(base, exp, mod=None) + Equivalent to base**exp with 2 arguments or base**exp % mod with 3 arguments + + Some types, such as ints, are able to use a more efficient algorithm when + invoked using the three argument form. +``` +abs - возвращает абсолютное значение числа (модуль) +len - возвращает длину списка +max/min -возвращает максимальное/минимальное значения +pow - возводит число в степень +round - возвращает целое округленное значение +sorted - сортировка (по умолчанию - по возрастанию) +sum - суммирует значения +zip - объединяет аргументы в кортеж +Примеры +```py +len('ruchka') +6 +pow(2,5) +32 +round(3.7676) +4 +sorted([12,3,1,0,111]) +[0, 1, 3, 12, 111] +sum([0,1,2,3,4,5]) +15 +list(zip('abcd','efg')) +[('a', 'e'), ('b', 'f'), ('c', 'g')] +``` +## 6. Разница регистров в именах переменных. +```py +Gg1=90 +gg1,Gg1 +(1.6, 90) +``` +## 7.1 Логические переменные +Задание двух логических переменных, просмотр класса переменной и простейшие операции с логическими переменными +```py +bb1=True;bb2=False +bb1;bb2 +True +False +bb1+bb2 +1 +bb1*bb2 +0 +type(bb1) + +``` +## 7.2 Другие простые типы +```py +ii1=-1234567890 +type(ii1) + +``` +Экспоненциальная форма записи вещественного числа +```py +ff1=-8.9876e-12 +ff1 +-8.9876e-12 +type(ff1) + +``` +Двоичное число +```py +dv1=0b1101010 +dv1 +106 +type(dv1) + +``` +Восьмеричное число +```py +vsm1=0o52765 +vsm1;type(vsm1) +22005 + +``` +Шестнадцатиричное число +```py +shest1=0x7109af6 +shest1;type(shest1) +118528758 + +``` +Комплексное число. Создание комплексного числа из двух вещественных +```py +cc1=2-3j +cc1;type(cc1) +(2-3j) + +a=3.76;b=-0.45 +cc2=complex(a,b) +cc2;type(cc2) +(3.76-0.45j) + +``` +## 7.3 Строка символов +Строки можно задавать как в одинарных, так и в двойных кавычках. +```py +ss1='Это -строка символов' +ss1="Это - строка символов" +ss1 +'Это - строка символов' +``` +Использование экранированных последовательностей +```py +ss1a="Это - \" строка символов \", \n \t выводимая на двух строках" +print(ss1a) +Это - " строка символов ", + выводимая на двух строках +``` +Вывод ФИО +```py +ss1b= 'Меня зовут: \n Таболин И. А.' +print(ss1b) +Меня зовут: + Таболин И. А. + ``` + Многострочные строки, задаваемые тройными кавычками + ```py +mnogo="""Нетрудно заметить, что в результате операции +над числами разных типов получается число, +имеющее более сложный тип из тех, которые учавствуют в операции""" +print(mnogo) +Нетрудно заметить, что в результате операции +над числами разных типов получается число, +имеющее более сложный тип из тех, которые учавствуют в операции + ``` + Обращение к частям строки символов с использованием индексов по их порядку, начиная с 0 + При знаке "-" отсчёт идет от конца строки. + ```py +ss1[0] # Это символ Э +'Э' +ss1[8] # Это символ р +'р' +ss1[-2] # это символ "о" +'о' + ``` + Операция «разрезания» или «создания среза», создающая новый объект +```py +ss1[0] # Это символ Э +'Э' +ss1[8] # Это символ р +'р' +ss1[-2] # это символ "о" +'о' +ss1[6:9] # часть строки с 6 по 8 символ, не включая 9-й +'стр' +ss1[13:] # символы с 13 и до конца +'символов' +ss1[:13] # символы с начала и до 12, не включая 13-й +'Это - строка ' +ss1[5:-8] # символы с 5-го по 8-й с конца +' строка ' +ss1[3:17:2] # символы с 3-го по 16 с шагом 2 +' тоасм' +``` +Символы с 3-го по 17 с шагом 2, но в обратном порядке +```py +ss1[17:3:-2] +'омсаот ' +``` +```py +ss1[-4:3:-2] +'омсаот ' +``` +Строка неизменяемый объект, его можно изменить тольк переопределением +```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 +'Это = строка символов' +``` +Самостоятельно создал срез из `ss1b` +```py +ss1b;ss1b[-13:] +'Меня зовут: \n Таболин И. А.' +'Таболин И. А.' +print(ss1b,ss1b[-13:]) +Меня зовут: + Таболин И. А. Таболин И. А. +print(ss1b,"\n",ss1b[-13:]) +Меня зовут: + Таболин И. А. + Таболин И. А. + ``` + Самостоятельно создал переменные комплексного типа + ```py + a=5.45;b=7.62 +p_plus=complex(a,b);p_minus=complex(a,-b) +p_plus;p_minus +(5.45+7.62j) +(5.45-7.62j) +type(p_plus) + +``` +## 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] +``` +Ввод списка на нескольких строках +```py +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] # это часть списка начиная с 8-го с конца элемента до конца с шагом 2 +stup +[0, 0, 1, 1, 1, 1, 1, 1, 1] +``` +Изменение списка +```py +spis1 +[111, 'Spisok', (5-9j)] +spis1[1]='Список' +spis1 +[111, 'Список', (5-9j)] +``` +Текущее число элементов в списке +```py + len(spis1) +3 +``` +Добавление элемента в конец списка + ```py + spis1.append('New item 1') +spis1 +[111, 'Список', (5-9j), 'New item 1'] + + spis1+['New item'] +[111, 'Список', (5-9j), 'New item 1', 'New item'] +``` +Добавление строки `ss1b` в конец списка `spis1` +```py +print(ss1b) +Меня зовут: + Таболин И. А. +spis1.append(ss1b) +print(spis1) +[111, 'Список', (5-9j), 'New item 1', 'Меня зовут: \n Таболин И. А.'] +``` +Удаление элемента списка с индексом 1 +```py +spis1.pop(1) +'Список' +spis1 +[111, (5-9j), 'New item 1', 'Меня зовут: \n Таболин И. А.'] +``` +Команда `.insert` добавляет элемент в список перед элементом с указанным индексом +```py +spis1 +[111, (5-9j), 'New item 1', 'Меня зовут: \n Таболин И. А.'] +spis1.insert(2, '3') +spis1 +[111, (5-9j), '3', 'New item 1', 'Меня зовут: \n Таболин И. А.'] +``` +Команда `.remove` удаляет только первый найденный элемент из списка +```py +spis1.remove(123) +Traceback (most recent call last): + File "", line 1, in + spis1.remove(123) +ValueError: list.remove(x): x not in list +spis1.append(111) +spis1.remove(111) +spis1 +[(5-9j), '3', 'New item 1', 'Меня зовут: \n Таболин И. А.', 111] +``` +Команда `.extend` расширяет список +```py +spis1 +[(5-9j), '3', 'New item 1', 'Меня зовут: \n Таболин И. А.', 111] +spis1.extend(['Hello','world','!']) +spis1 +[(5-9j), '3', 'New item 1', 'Меня зовут: \n Таболин И. А.', 111, 'Hello', 'world', '!'] +``` +Сортировка элементов в списке с помощью `.sort` и удаление всех элементов списка с помощью `.clear` +```py +spis2=[0,1,2,44,55,67,100,80,5] +spis2 +[0, 1, 2, 44, 55, 67, 100, 80, 5] +spis2.sort() +spis2 +[0, 1, 2, 5, 44, 55, 67, 80, 100] +spis2.clear() +spis2 +[] +``` +Команда `.reverse` переставляет все элементы с последнего по первый +```py +spis1.reverse() +spis1 +['!', 'world', 'Hello', 111, 'Меня зовут: \n Таболин И. А.', 'New item 1', '3', (5-9j)] +``` +Команда `.copy` копирует список +```py +spis1_copy=spis1.copy() +spis1_copy +[(5-9j), '3', 'New item 1', 'Меня зовут: \n Таболин И. А.', 111, 'Hello', 'world', '!'] +``` +Команда `.count` возвращает количество элементов, совпадающих с аргументом +```py +spis1.count('3') +1 +``` +Команда `.index` возвращает индекс первого элемента, совпадающего с указанным +```py +spis1.append(111) +spis1 +[(5-9j), '3', 'New item 1', 'Меня зовут: \n Таболин И. А.', 111, 'Hello', 'world', '!', 111] +spis1.index(111) +4 +``` +Вложенный список +```py +spis2=[spis1,'a','b'] +spis2 +[[(5-9j), '3', 'New item 1', 'Меня зовут: \n Таболин И. А.', 111, 'Hello', 'world', '!', 111], 'a', 'b'] +``` +Обращение к первому элементу первого списка +```py +spis2[0][0] +(5-9j) +``` +Изменение элемента вложенного списка +```py +spis2[0][1]=78 +spis2 +[[(5-9j), 78, 'New item 1', 'Меня зовут: \n Таболин И. А.', 111, 'Hello', 'world', '!', 111], 'a', 'b'] +``` +Создание своего списка +```py +my_spis=[(2-9j),True, 20, 'Ivan'] +my_spis +[(2-9j), True, 20, 'Ivan'] +my_spis=[my_spis, '23','02','2005'] +my_spis +[[(2-9j), True, 20, 'Ivan'], '23', '02', '2005'] +``` +## Объект - кортеж +Создание и переопределение кортежа +```py +kort1=(222,'Kortezh',77+8j) +kort1= kort1+(1,2) +kort1 +(222, 'Kortezh', (77+8j), 1, 2) +ss1b='Меня зовут: \n Таболин И. А.' +kort1= kort1+(ss1b,) +kort1 +(222, 'Kortezh', (77+8j), 1, 2, 'Меня зовут: \n Таболин И. А.') +kort2=kort1[:2]+kort1[3:] +kort2 +(222, 'Kortezh', 1, 2, 'Меня зовут: \n Таболин И. А.') +``` +Подсчёт значениё в кортеже +```py +kort1.index(2) +4 +kort1.count(222) +1 +``` +Кортежи невозможно изменять +```py +kort1[2]=90 +Traceback (most recent call last): + File "", line 1, in + kort1[2]=90 +TypeError: 'tuple' object does not support item assignment +``` +Создание своего кортежа +```py +my_kort=(123,'Python',[0,1,2,3],(456, 'stroka')) +my_kort +(123, 'Python', [0, 1, 2, 3], (456, 'stroka')) +``` +## Изучение объекта-словаря +Создание словаря и обращение к его элементу +```py +dic1={'Saratov':145, 'Orel':56, 'Vologda':45} +dic1 +{'Saratov': 145, 'Orel': 56, 'Vologda': 45} +dic1['Orel'] +56 +``` +Пополнение словаря +```py +dic1['Pskov']=78 +dic1 +{'Saratov': 145, 'Orel': 56, 'Vologda': 45, 'Pskov': 78} +``` +Сортировка словаря по ключам или по значениям +```py +sorted(dic1.keys()) +['Orel', 'Pskov', 'Saratov', 'Vologda'] +sorted(dic1.values()) +[45, 56, 78, 145] +``` +Создание словаря, два элемента которого являются словарями, и обращение к одному из элементов +```py +dic2={1:'mean',2:'standart deviation',3:'correlation'} +dic3={'statistics':dic2,'POAS':['base','elementary','programming']} +dic2;dic3 +{1: 'mean', 2: 'standart deviation', 3: 'correlation'} +{'statistics': {1: 'mean', 2: 'standart deviation', 3: 'correlation'}, 'POAS': ['base', 'elementary', 'programming']} +dic3['statistics'][2] +'standart deviation' +``` +Создание словаря с использованием dict +```py +dic4=dict([(1,['A','B','C']),(2,[4,5]),('Q','Prim'),('Stroka',ss1b)]) +dic4 +{1: ['A', 'B', 'C'], 2: [4, 5], 'Q': 'Prim', 'Stroka': 'Меня зовут: \n Таболин И. А.'} +``` +Создание словаря с использованием dict и zip +```py +dic5=dict(zip(['A','B','C','Stroka'],[16,-3,9,ss1b])) +dic5 +{'A': 16, 'B': -3, 'C': 9, 'Stroka': 'Меня зовут: \n Таболин И. А.'} +``` +Создание своего словаря +```py +my_slov_kort=('game','football','computer','university','dictionary','english','russian') +my_slov_spis=['игра','футбол','компьютер','университет','словарь'] +my_dictionary=dict(zip(my_slov_kort,my_slov_spis)) +my_dictionary +{'game': 'игра', 'football': 'футбол', 'computer': 'компьютер', 'university': 'университет', 'dictionary': 'словарь'} +``` +Словарь с обучающимися ИВТИ +```py +AVTI={'Курс I':[22,23,17,24,30,29,28,25,23,0,4,31,30,33,18,12,27],'Курс II':[18,16,12,15,29,18,21,23,13,0,4,20,31,26,16,], 'Курс III':[17,12,0,6,17,15,19,19,0,0,5,17,22,18,12], 'Курс IV':[27,16,0,13,17,15,19,20,0,0,2,15,18,16,17]} +AVTI[' Курс III '][5] +AVTI['Курс III'][5] +15 +``` +## 8.4 Изучение объектов-множеств +Создание множества, определение числа элементов, проверка наличия элемента, добавление элемента и удаление элемента +```py +mnoz1={'двигатель','датчик','линия связи','датчик','микропроцессор','двигатель'} +len(mnoz1) +4 +'датчик' in mnoz1 +True +mnoz1.add('реле') +mnoz1.remove('линия связи') +``` +Создание своего множества и работа с ним +```py +my_mnoz={1,2,3,4,5,67,8} +my_mnoz +{1, 2, 3, 4, 5, 67, 8} +67 in my_mnoz +True +my_mnoz.remove(67) +my_mnoz.remove(8) +my_mnoz.add(6) +my_mnoz.add(7) +my_mnoz.add(8) +my_mnoz +{1, 2, 3, 4, 5, 6, 7, 8} +```