# Отчет по теме 3 Махнов Георгий, А-01-23 ## Тема 3. Операции с объектами ## Задание 2 Преобразование простых базовых типов объектов. ### 2.1 Преобразование в логический тип с помощью функции bool(<Объект>). ``` >>> logiz1=bool(56) >>> logiz2=bool(0) >>> logiz3=bool("Beta") >>> logiz4=bool("") >>> >>> type(logiz1) >>> type(logiz2) >>> type(logiz3) >>> type(logiz4) ``` ### 2.2 2.2. Преобразование в целое десятичное число объекта с заданной системой счисления осуществ-ляется с помощью функции int(<Объект>[,<Система счисления, в которой определен объ-ект>]). По умолчанию система счисления принимается десятичной. ``` >>> tt1=int(198.6) #Отбрасывается дробная часть >>> tt2=int("-76") >>> tt3=int("B",16) >>> tt3=int("B",16) >>> tt4=int("71",8) >>> tt1 198 >>> tt2 -76 >>> tt3 11 >>> tt4 57 >>> tt5=int("98.76") Traceback (most recent call last): File "", line 1, in ValueError: invalid literal for int() with base 10: '98.76' ``` Функция int() не может преобразовать строку с числом с плавающей точкой, из-за чего и возникла ошибка ``` >>> 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) >>> vos1=oct(hh) >>> shs1=hex(hh) >>> hh 123 >>> dv1 '0b1111011' >>> vos1 '0o173' >>> shs1 '0x7b' >>> int(dv1, 2) 123 >>> int(vos1, 8) 123 >>> int(shs1, 16) 123 ``` ## Задание 3.Изучим преобразования более сложных базовых типов объектов ### 3.1 Преобразование в строку символов с помощью функции str(<Объект>). ``` >>> 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 Преобразование элементов объекта в список с помощью функции 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'] >>> spis_val = list({"A":1,"B":2,"C":9}.values()) >>> spis_val [1, 2, 9] ``` ### 3.3 3.3. Преобразование элементов объектов в кортеж с помощью функции tuple(<Объект>). ``` >>> 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 Удаление объектов. ``` >>> del strk5, kort8 >>> strk5, kort8 Traceback (most recent call last): File "", line 1, in NameError: name 'strk5' is not defined. Did you mean: 'strk1'? >>> kort8 Traceback (most recent call last): File "", line 1, in NameError: name 'kort8' is not defined. Did you mean: 'kort7'? >>> my_fio = "Махнов Г.А." >>> list_fio = list(my_fio) >>> list_fio ['М', 'а', 'х', 'н', 'о', 'в', ' ', 'Г', '.', 'А', '.'] >>> tuple_fio = tuple(list_fio) >>> tuple_fio ('М', 'а', 'х', 'н', 'о', 'в', ' ', 'Г', '.', 'А', '.') >>> new_str_fio = "".join(tuple_fio) >>> new_str_fio 'Махнов Г.А.' ``` ## Задание 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) >>> a 3.9555555555555557 ``` ### 4.4 Деление с округлением вниз (//). ``` >>> b=178//45 >>> c=-24.6//12.1 >>> b, c (3, -3.0) >>> bc = 115//34 >>> bc 3 ``` ### 4.5 Получение остатка от деления (%). ``` >>> 148%33 16 >>> 12.6%3.8 1.2000000000000002 ``` ### 4.6 Возведение в степень (**). ``` >>> 14**3 2744 >>> e = 2.7**3.6 >>> e 35.719843790663525 >>> compl = complex(3, 6) >>> compl (3+6j) >>> compl**2 (-27+36j) >>> compl%33 Traceback (most recent call last): File "", line 1, in TypeError: unsupported operand type(s) for %: 'complex' and 'int' >>> compl//3 Traceback (most recent call last): File "", line 1, in TypeError: unsupported operand type(s) for //: 'complex' and 'int' >>> compl/3 (1+2j) >>> compl+13 (16+6j) >>> compl+11.4 (14.4+6j) ``` ## Задание 5 Операции с двоичными представлениями целых чисел ### 5.1 Двоичная инверсия (~). ``` >>> dv1 = 9 >>> dv2 = ~dv1 >>> dv2 -10 ``` ~1001 0110 1111 = 2^4 -1001 0110 = ~1001 ~x = (2^N - 1 - x) = -(x+1) Т.к. двоичная инверсия преобразует число по формуле -(x+1), где x - заданное число, то при задании числа 9 двоичная инверсия преобразует его в -10 ### 5.2 Двоичное «И» (&) ``` >>> 7&9 1 >>> 7&8 0 ``` ### 5.3 Двоичное «ИЛИ» (|) ``` >>> 7|9 15 >>> 7|8 15 >>> 14|5 15 ``` ### 5.4 5.4. Двоичное «исключающее ИЛИ»(^) ``` >> 14^5 11 ``` ### 5.5 Сдвиг двоичного представления на заданное число разрядов влево (<<) или вправо (>>) с допол-нением нулями, соответственно справа или слева. ``` >>> h=14 >>> g = h<<2 >>> g 56 >>> bin(g) '0b111000' >>> g1=h>>1 >>> g1 7 >>> g2=h>>2 >>> g2 3 ``` ## Задание 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 ('кис', '-', 'кис', '-', 'кис', '-', 'кис', '-') >>> 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 Проверка наличия заданного элемента в последовательности (in) ``` >>> 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':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 'Система регулирования' ``` ### 7.3 Умножение текущего значения переменной на заданную величину (*=) или деление (/=) ``` >>> zz/=2 >>> zz -5.0 >>> zz*=5 >>> zz -25.0 ``` ### 7.4 Операции деления с округлением вниз (//=), получения остатка от деления (%=) и возведе-ния в степень(**=) ``` >>> zz//=5 >>> zz -5.0 >>> zz%=2 >>> zz 1.0 >>> zz+=1 >>> zz**=3 >>> zz 8.0 ``` ### 7.5 Множественное присваивание ``` >>> w=v=10 >>> w,v (10, 10) >>> n1,n2,n3=(11,-3,'all') >>> n1,n2,n3 (11, -3, 'all') >>> w=v=[1,2,3] >>> w,v ([1, 2, 3], [1, 2, 3]) >>> w=v="str" >>> w,v ('str', 'str') >>> w=v={1:3, 2:8} >>> w,v ({1: 3, 2: 8}, {1: 3, 2: 8}) >>> w=v={1,2,3} >>> w,v ({1, 2, 3}, {1, 2, 3}) ``` ## Задание 8 8. Логические операции – при создании логических выражений, дающих в результате вычисле-ния значения True или False. ### 8.1 Операции сравнение: равенство (==), не равно (!=), меньше (<), больше (>), меньше или равно (<=), больше или равно (>=) – придумаем примеры этих операций. Сравним ранее созданные переменные w и v. ``` >>> 1==1 True >>> 1!=1 False >>> 1<1 False >>> 1>1 False >>> 1<=1 True >>> 1>=1 True >>> w==v True ``` ### 8.2 Проверка наличия заданного элемента в последовательности или во множестве, а также проверка наличия ключа в словаре (in). ``` >>> 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 Создание больших логических выражений с использованием соединительных слов: логиче-ское «И» (and), логическое «ИЛИ» (or), логическое «НЕ» (not). ``` >>> a=17 >>> b=-6 >>> (a>=b) and ('book' in mnoz1) and not ('Pskov' in dic1) True >>> (a=b) and (a==b) ``` ### 8.4 Проверка ссылок переменных на один и тот же объект (is). ``` >>> w=v=10 >>> w is v True >>> w1 = ["A", "B"] >>> v1 = ["A", "B"] >>> w1 is v1 False ``` w1 и v1 не являются одним и тем же объектом в памяти, поэтому is выдал ответ False ## Задание 9 Операции с объектами, выполняемые с помощью методов. ``` >>> 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 Методы для работы со строками. ``` >>> stroka.find('пр') 5 >>> stroka.count("с") 4 >>> stroka.replace(' у',' автоматического у') 'Микропроцессорная система автоматического управления' >>> spis22=stroka.split(' ') >>> stroka.upper() 'МИКРОПРОЦЕССОРНАЯ СИСТЕМА УПРАВЛЕНИЯ' >>> stroka3=" ".join(spis22) >>> stroka3.partition("с") ('Микропроце', 'с', 'сорная система управления') >>> stroka3.rpartition("с") ('Микропроцессорная си', 'с', 'тема управления') >>> strk1='Момент времени {}, значение = {}' >>> strk1.format(1,89.7) 'Момент времени 1, значение = 89.7' >>> strk2='Момент времени {1}, значение = {0}:{2}' >>> 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 Методы для работы со списками. ``` >>> spsk = [23,56,"str", 10, True] >>> dir(spsk) ['__add__', '__class__', '__class_getitem__', '__contains__', '__delattr__', '__delitem__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__getstate__', '__gt__', '__hash__', '__iadd__', '__imul__', '__init__', '__init_subclass__', '__iter__', '__le__', '__len__', '__lt__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__reversed__', '__rmul__', '__setattr__', '__setitem__', '__sizeof__', '__str__', '__subclasshook__', 'append', 'clear', 'copy', 'count', 'extend', 'index', 'insert', 'pop', 'remove', 'reverse', 'sort'] >>> spsk.append('c') >>> spsk.insert(2,'a') >>> spsk.count('a') 1 >>> spsk [23, 56, 'a', 10, True, 'c'] ``` ### 9.3 Самостоятельно создадим кортеж и изучим применение его методов. ``` >>> my_cort = (1, "hi", 13, 5,86) >>> dir(my_cort) ['__add__', '__class__', '__class_getitem__', '__contains__', '__delattr__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__getnewargs__', '__getstate__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__iter__', '__le__', '__len__', '__lt__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__rmul__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', 'count', 'index'] >>> my_cort.count(13) 1 >>> my_cort.index("hi") 1 ``` ### 9.4 Также самостоятельно изучим методы словарей и множеств ``` >>> my_dict = {"math":13, "physics": 11, "history": 15} >>> dir(my_dict) ['__class__', '__class_getitem__', '__contains__', '__delattr__', '__delitem__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__getstate__', '__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'] >>> my_set = {31, 12, "set", 1,45} >>> dir(my_set) ['__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'] ```