From 897ffe41ee90cd41635a2db3d9fbd283fcd4b55b Mon Sep 17 00:00:00 2001 From: KhodiukMR Date: Mon, 29 Sep 2025 08:42:20 +0000 Subject: [PATCH] =?UTF-8?q?=D0=9E=D1=82=D1=87=D1=91=D1=82=20=D0=BF=D0=BE?= =?UTF-8?q?=20=D0=A2=D0=B5=D0=BC=D0=B5=203?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- TEMA3/report.md | 704 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 704 insertions(+) create mode 100644 TEMA3/report.md diff --git a/TEMA3/report.md b/TEMA3/report.md new file mode 100644 index 0000000..4b8096e --- /dev/null +++ b/TEMA3/report.md @@ -0,0 +1,704 @@ +# Отчёт по теме 3 +Ходюк Максим Романович, А-01-23 + +# 2. Преобразование простых базовых типов объектов +## 2.1. Преобразование в логический тип с помощью функции bool(<Объект>). +Создал 4 переменные логического типа из объектов других типов: +``` +logiz1=bool(56) +logiz2=bool(0) +logiz3=bool("Beta") +logiz4=bool("") +``` +Результат: +``` +logiz1 +True +logiz2 +False +logiz3 +True +logiz4 +False +``` + +## 2.2. Преобразование в целое десятичное число объекта с заданной системой счисления осуществляется с помощью функции int(<Объект>[,<Система счисления, в которой определен объект>]). +Попробовал применить примеры использования данной функции: +``` +tt1=int(198.6) +tt1 +198 +tt2=int("-76") +tt2 +-76 +tt3=int("B",16) +tt3 +11 +tt4=int("71",8) +tt4 +57 +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' +``` +При применении последней инструкции выдало диагностическое сообщение, потому что функция int при передавании в неё строки ожидает увидеть там целое число, а "98.76" содержит десятичную точку, из-за чего функция int не может её преобразовать + + +Преобразование целых чисел или строк символов в вещественное число – с помощью функции float(<Объект>). +Примеры: +flt1=float(789) +flt2=float(-6.78e2) +flt3=float("Infinity") +flt4=float("-inf") +flt1 +789.0 +flt2 +-678.0 +flt3 +inf +flt4 +-inf + +## 2.3. Преобразование десятичных чисел в другие системы счисления +``` +hh=123 +dv1=bin(hh) #Преобразование в строку с двоичным представлением +dv1 +'0b1111011' +vos1=oct(hh) #Преобразование в строку с восьмеричным представлением +vos1 +'0o173' +shs1=hex(hh) ) #Преобразование в строку с шестнадцатеричным представлением +shs1 +'0x7b' +``` +Проверил правильность преобразования путём обратного преобразования числа в десятичную систему счисления +``` +int(dv1,2) +123 +int(vos1,8) +123 +int(shs1,16) +123 +``` +# 3. Изучите преобразования более сложных базовых типов объектов +## 3.1. Преобразование в строку символов с помощью функции str(<Объект>). +``` +strk1=str(23.6) +strk1 +'23.6' +strk2=str(logiz3) +strk2 +'True' +strk3=str(["A","B","C"]) +strk3 +"['A', 'B', 'C']" +strk4=str(("A","B","C")) +strk4 +"('A', 'B', 'C')" +strk5=str({"A":1,"B":2,"C":9}) +strk5 +"{'A': 1, 'B': 2, 'C': 9}" +``` +## Преобразование элементов объекта в список с помощью функции list(<Объект>). +Примеры преобразований: +``` +spis1=list("Строка символов") +spis1 +['С', 'т', 'р', 'о', 'к', 'а', ' ', 'с', 'и', 'м', 'в', 'о', 'л', 'о', 'в'] +spis2=list((124,236,-15,908)) +spis2 +[124, 236, -15, 908] +spis3=list({"A":1,"B":2,"C":9}) +spis3 +['A', 'B', 'C'] +``` +В последней инструкции из словаря в список попали ключи, чтобы создать список значений, применил следующую инструкцию +``` +spis3=list({"A":1,"B":2,"C":9}.values()) +spis3 +[1, 2, 9] +``` + +## 3.3. Преобразование элементов объектов в кортеж с помощью функции tuple(<Объект>). +Примеры преобразований: +``` +kort7=tuple('Строка символов') +kort7 +('С', 'т', 'р', 'о', 'к', 'а', ' ', 'с', 'и', 'м', 'в', 'о', 'л', 'о', 'в') +kort8=tuple(spis2) +kort8 +(23, 12, 78) +kort9=tuple({"A":1,"B":2,"C":9}) +kort9 +('A', 'B', 'C') +``` + +## 3.4. Удаление объектов. +Удалил объекты и убедился в их отсутствии в оперативной памяти +``` +del strk5, kort8 +strk5 +Traceback (most recent call last): + File "", line 1, in + strk5 +NameError: name 'strk5' is not defined. Did you mean: 'strk1'? +kort8 +Traceback (most recent call last): + File "", line 1, in + kort8 +NameError: name 'kort8' is not defined. Did you mean: 'kort7'? +``` + +Создал строку со своей фамилией и инициалами, преобразовал её в список,затем в кортёж, а затем в строку: +``` +strr="KhoduykMR" +lstrr=list(strr) +lstrr +['K', 'h', 'o', 'd', 'u', 'y', 'k', 'M', 'R'] +klstrr=tuple(lstrr) +klstrr +('K', 'h', 'o', 'd', 'u', 'y', 'k', 'M', 'R') +strr2=str(klstrr) +strr2 +"('K', 'h', 'o', 'd', 'u', 'y', 'k', 'M', 'R')" +``` + +# 4.Арифметические операции. +## 4.1.Сложение и вычитание (+ и -) +``` +12+7+90 +109 +5.689e-1 - 0.456 +0.11289999999999994 +23.6+54 +77.6 +14-56.7+89 +46.3 +``` + +## 4.2. Умножение (*) +-6.7*12 +-80.4 + +## 4.3. Деление (/). +``` +-234.5/6 +-39.083333333333336 +a=178/45 +``` +Проверил тип объекта а +``` +type(a) + +``` + +## 4.4. Деление с округлением вниз (//). +``` +b=178//45 +b +3 +c=-24.6//12.1 +c +-3.0 +``` +Попробовал смешанные комбинации типов чисел в этой операции +``` +178//12.1 +14.0 +-24.6//15 +-2.0 +``` + +## 4.5. Получение остатка от деления (%). +``` +148%33 +16 +12.6%3.8 +1.2000000000000002 +``` +Попробовал применить в этой операции смешанные типы чисел +``` +148%3.8 +3.6000000000000068 +12.6%33 +12.6 +12.6%3 +0.5999999999999996 +``` + +## 4.6. Возведение в степень (**). +``` +14**3 +2744 +e=2.7**3.6 +e +35.719843790663525 +``` +Попробовал смешанные типы чисел и в операции возведения в степень +``` +14**3.6 +13367.830445904418 +2.7**3 +19.683000000000003 +``` + +Попробовал применить операции, представленные в пункте 4, с участием комплексных чисел +``` +14**(3+8j) +(-1751.1118980727824+2112.6152324614004j) +(3+8j)*14 +(42+112j) +(3+8j)/(15+883j) +(0.009115107563141576-0.0032426652169341747j) +(3+8j)//(15+883j) +Traceback (most recent call last): + File "", line 1, in + (3+8j)//(15+883j) +TypeError: unsupported operand type(s) for //: 'complex' and 'complex' +(3+8j)%(15+883j) +Traceback (most recent call last): + File "", line 1, in + (3+8j)%(15+883j) +TypeError: unsupported operand type(s) for %: 'complex' and 'complex' +``` +К комплексным числам можно применить все действия, кроме деления с округлением и получения остатка от деления + +# 5. Операции с двоичными представлениями целых чисел. +## 5.1. Двоичная инверсия (~). +При применении двоичной инверсии значение каждого бита в представлении числа меняется на противоположное: +``` +dv1=9 +dv2=~dv1 +dv2 +-10 +``` + +## 5.2. Двоичное «И» (&) – побитовое совпадение двоичных представлений чисел +При применении данной команды результат - это число в десятичной системе счисления, которое в двоичной системе счисления представляется как результат побитового совпадения разрядов(то есть 1 в разряде получится только если в этом разряде у обоих сравниваемых чисел стоит 1) +``` +7&9 #111 и 1001 = 0001 +1 +7&8 #111 и 1000 = 0000 +0 +``` + +## 5.3. Двоичное «ИЛИ» (|) – побитовое сравнение двоичных представлений чисел +Результат также как в предыдущем случае десятичное число, но на этот раз в двоичном представлении у числа будет 0 только если у обоих сравниваемых чисел в этом разряде 0 +``` +7|9 +15 +7|8 +15 +14|5 +15 +``` + +## 5.4. Двоичное «исключающее ИЛИ»(^) - побитовое сравнение двоичных представлений чисел +В данной операции получаем 0, если оба сравниваемых разряда имеют одинаковые значения +``` +14^5 +11 +``` + +## 5.5 Сдвиг двоичного представления на заданное число разрядов влево (<<) или вправо (>>) с дополнением нулями, соответственно справа или слева. +Применение: +``` +h=14 +g=h<<2 +g1=h>>1 +g2=h>>2 +g +56 +g1 +7 +g2 +3 +``` +Создал двоичное число с 11 знаками и попробовал к нему применить различные операции +``` +hh=1924 #11110000100 +gg=hh<<5 +gg +61568 +gg1=hh>>6 +gg1 +30 +``` + +# 6.Операции при работе с последовательностями (строками, списками, кортежами). +## 6.1. Объединение последовательностей (конкатенация)(+) +Применил конкатенацию для строк, списков и кортежей: +``` +'Система '+'регулирования' +'Система регулирования' +['abc','de','fg']+['hi','jkl'] +['abc', 'de', 'fg', 'hi', 'jkl'] +('abc','de','fg')+('hi','jkl') +('abc', 'de', 'fg', 'hi', 'jkl') +``` + +## 6.2. Повторение (*) +Использование повторения для строк, списков и кортежей: +``` +'ля-'*5 +'ля-ля-ля-ля-ля-' +['ку','-']*3 +['ку', '-', 'ку', '-', 'ку', '-'] +('кис','-')*4 +('кис', '-', 'кис', '-', 'кис', '-', 'кис', '-') +``` +Применил примеры: Создание списка со 100 отсчётами сигнала-ступеньки +``` +signal1=[0]*3+[1]*99 +signal1 +[0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1] + +``` +Создание кортежа с отсчётами сигнала-импульса +``` +signal2=(0,)*3+(1,)*5+(0,)*7 +signal2 +(0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0) +``` + +## 6.3. Проверка наличия заданного элемента в последовательности (in) +Проверил наличие подстроки в строке и наличие контекстов в созданных ранее списке и кортеже +``` +stroka='Система автоматического управления' +stroka +'Система автоматического управления' +'автомат' in stroka +True +'ку' in ['ку','-']*3 +True +'ля-' in ('abc', 'de', 'fg', 'hi', 'jkl') +False +``` + +## 6.4. Подстановка значений в строку с помощью оператора «%» +Применил пример 1: +``` +stroka='Температура = %g %s %g' +stroka +'Температура = %g %s %g' +stroka % (16,' меньше ',25) +'Температура = 16 меньше 25' +``` +Применил пример 2: +``` +stroka='Температура = %(zn1)g %(sravn)s %(zn2)g' +stroka +'Температура = %(zn1)g %(sravn)s %(zn2)g' +stroka % {'zn1':16,'sravn':' меньше ','zn2':25} +'Температура = 16 меньше 25' +``` + +# 7.Оператор присваивания +## 7.1. Обычное присваивание значения переменной (=) +``` +zz=-12 +zz +-12 +``` +## 7.2. Увеличение значения переменной на заданную величину (+=) или уменьшение (-=) +``` +zz+=5 +zz +-7 +zz-=3 +zz +-10 +``` +Проверил работу сочетания знаков (+=) на строках +``` +stroka='Система' +stroka +'Система' +stroka+=' регулирования' +stroka +'Система регулирования' +``` +Для строк эта операция означает конкатенацию текущего значения с заданным дополнением + +## 7.3. Умножение текущего значения переменной на заданную величину (*=) или деление (/=) +``` +zz/=2 +zz +-5.0 +zz*=5 +zz +-25.0 +``` +Попробовал данную операцию на строке: она означает повторение текущего значения заданное количество раз +``` +stroka*=2 +stroka +'Система регулированияСистема регулирования' +``` + +## 7.4. Самостоятельное изучение операций (//=), (%=), (**=) +``` +zz//=2 +zz +-13.0 +zz%=3 +zz +2.0 +zz**=4 +zz +16.0 +``` + +## 7.5. Множественное присваивание +``` +w=v=10 +w;v +10 +10 +n1,n2,n3=(11,-3,'all') +n1;n2;n3 +11 +-3 +'all' +``` +Самостоятельно проверил,можно ли вместо кортежа справа в последней инструкции использовать строку, список, словарь, множество +Список: +``` +k1,k2,k3=[11,-3,'gfgdg'] +k1;k2;k3 +11 +-3 +'gfgdg' +``` +Строка: +``` +s1,s2,s3='123' +s1;s2;s3 +'1' +'2' +'3' +``` +Словарь: +``` +d1,d2,d3={'Saratov':145, 'Orel':56, 'Vologda':45} +d1;d2;d3 +'Saratov' +'Orel' +'Vologda' +``` +Множество: +``` +m1,m2,m3={'двигатель','датчик','линия связи'} +m1;m2;m3 +'двигатель' +'линия связи' +'датчик' +``` +# 8. Логические операции +## 8.1. Операции сравнение +Придумал примеры использования операций сравнения и сравнил ранее созданные переменные w и v +``` +w==v +True +w>v +False +w>=v +True +12>2 +True +1<7 +True +w!=v +False +``` + +## Проверка наличия заданного элемента в последовательности или во множестве, а также проверка наличия ключа в словаре (in). +Применил операции со множеством: +``` +mnoz1={'pen','book','pen','iPhone','table','book'} +'book' in mnoz1 +True +'cap' in mnoz1 +False +``` +Применил операции со словарём: +``` +dic1={'Saratov':145, 'Orel':56, 'Vologda':45} +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. Создание больших логических выражений с использованием соединительных слов: логическое «И» (and), логическое «ИЛИ» (or), логическое «НЕ» (not). +Использовал приведённый в методичке пример сложного логического выражения и придумал 2 своих +``` +a=17 +b=-6 +(a>=b) and ('book' in mnoz1) and not ('Pskov' in dic1) +((w==v) or (18>234)) and ('pen' in mnoz1) and not (123<1) and (('M' in 'Messi') or ('M' in 'Nicolay')) +True +not (dct1['Depart'][1] == 'MM') and not (163.5>163.6) and ('Vologda' in dic1) +True +``` + +## 8.4. Проверка ссылок переменных на один и тот же объект (is). +Проверил, что при одновременном присваивании переменные ссылаются на один и тот же объект +``` +w=v=10 +w is v +True +``` +После присвоил переменным одинаковые значения, но не одновременным присваиванием,поэтому переменные просто содержат одинаковые значения, но не ссылаются на одну и ту же "ячейку" в опертивной памяти +``` +w1=['A','B'] +w1 +['A', 'B'] +v1=['A','B'] +w1 is v1 +False +``` + +# 9.Операции с объектами, выполняемые с помощью методов. +Применил функцию dir() для получения списка атрибутов объекта +``` +stroka='Микропроцессорная система управления' +dir(stroka) +['__add__', '__class__', '__contains__', '__delattr__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__getnewargs__', '__getstate__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__iter__', '__le__', '__len__', '__lt__', '__mod__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__rmod__', '__rmul__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', 'capitalize', 'casefold', 'center', 'count', 'encode', 'endswith', 'expandtabs', 'find', 'format', 'format_map', 'index', 'isalnum', 'isalpha', 'isascii', 'isdecimal', 'isdigit', 'isidentifier', 'islower', 'isnumeric', 'isprintable', 'isspace', 'istitle', 'isupper', 'join', 'ljust', 'lower', 'lstrip', 'maketrans', 'partition', 'removeprefix', 'removesuffix', 'replace', 'rfind', 'rindex', 'rjust', 'rpartition', 'rsplit', 'rstrip', 'split', 'splitlines', 'startswith', 'strip', 'swapcase', 'title', 'translate', 'upper', 'zfill'] +``` + +## 9.1. Методы для работы со строками. +Рассмотрел и применил примеры таких методом +Возвращение позиции первого вхождения контекста или -1 если он не встречается: +``` +stroka.find('пр') +5 +``` +Подстчет числа вхождений подстрки в строку +``` +stroka.count("с") +4 +``` +Замена первого вхождения указанной подстроки на вторую подстроку +``` +stroka.replace(' у',' автоматического у') +'Микропроцессорная система автоматического управления' +``` +Возвращение списка подстрок с заданным разделителем: +``` +spis22=stroka.split(' ') +``` +Возвращение строки со всеми заглавными буквами: +``` +stroka.upper() +'МИКРОПРОЦЕССОРНАЯ СИСТЕМА УПРАВЛЕНИЯ' +``` +Создание строки, собранной из элементов списка: +``` +stroka3=" ".join(spis22) +``` +Создание кортежей с результатами поиска "с" слева и "с" справа: +``` +stroka3.partition("с") +('Микропроце', 'с', 'сорная система управления') +stroka3.rpartition("с") +('Микропроцессорная си', 'с', 'тема управления') +``` + +Изучение метода format +Создал строку и вместо фигурных скобок вставил значения с помощью метода format +``` +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) +``` + +## 9.2. Методы для работы со списками. +Создал список spsk с 5 элементами, применил к нему следующие методы: +``` +spsk=[1,2,'ggwp', 'ss', 'Roman'] +spsk +[1, 2, 'ggwp', 'ss', 'Roman'] +spsk.pop(2) +'ggwp' +spsk.append('c') +spsk +[1, 2, 'ss', 'Roman', 'c'] +spsk.insert(2,'a') +spsk +[1, 2, 'a', 'ss', 'Roman', 'c'] +spsk.count('a') +1 +``` +Метод pop() удаляет из списка элемент с заданным индексом, метод append() добавляет новый элемент в конец списка +insert() вставляет в список перед заданным индексом заданный элемент, а count() подсчитывает число вхождений элемента в список + +## 9.3 Методы для работы с кортежами +Применил к ранее созданному кортежу методы index и count, первый возвращает индекс первого вхождения элемента в кортёж, а второй подсчитывает число вхождений элемента в кортёж +``` +kort1.index(222) +0 +kort1.count(222) +1 +``` +Методов pop, append и insert у кортежей нет, так как это неизменяемые объекты + +## 9.4. Методы словарей и множеств +Применил методы для добавления и удаления элементов из множеств: +``` +mnoz1={'двигатель','датчик','линия связи','датчик','микропроцессор','двигатель'} +mnoz1.add('реле') +mnoz1 +{'датчик', 'линия связи', 'микропроцессор', 'реле', 'двигатель'} +mnoz1.remove('линия связи') +mnoz1 +{'датчик', 'микропроцессор', 'реле', 'двигатель'} +``` + +Создал словарь и применил к нему методы для: получения списка ключей, получения списка значений, и получения списка из пар ключ/значение +``` +student = { + "name": "Анна", + "age": 20, + "course": "Информатика", + "grades": [4, 5, 4, 3], + "city": "Москва" +} +student.keys() +dict_keys(['name', 'age', 'course', 'grades', 'city']) +student.values() +dict_values(['Анна', 20, 'Информатика', [4, 5, 4, 3], 'Москва']) +student.items() +dict_items([('name', 'Анна'), ('age', 20), ('course', 'Информатика'), ('grades', [4, 5, 4, 3]), ('city', 'Москва')]) +removed_city = student.pop("city") +removed_city +'Москва' +``` + +# 10. Сохранил отчёт работы и закончил сеанс работы с IDLE