### Отчёт по теме 3 Лазарев Данил, А-01-23 ### 1.Запуск оболочки IDLE и установка рабочего каталога. ``` import os os.chdir('C:\\Users\\Dannyan\\OneDrive\\Рабочий стол\\python-labs\\TEMA3\\') ``` ### 2.Преобразование простых базовых типов объектов. ## 2.1. Преобразование в логический тип ``` logiz1 = bool(56) logiz1 True logiz2 = bool(0) logiz2 False logiz3 = bool("Beta") logiz3 True logiz4 = bool("") logiz4 False ``` ### 2.2. Преобразование объектов различных типов объектов в объект типа int/float ``` 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' flt1 = float(789) flt1 789.0 flt2 =float(-6.78e2) flt2 -678.0 flt3 = float("Infinity") flt3 inf flt4 = float("-inf") flt4 -inf ``` ### 2.3. Преобразование десятичных чисел в другие системы счисления(двоичную,восьмеричную, и шестнадцатеричную), а также обратные преобразования ``` hh = 123 dv1 = bin(hh) dv1 '0b1111011' vos1 = oct(hh) vos1 '0o173' dhs1 = hex(hh) shs1 = hex(hh) shs1 '0x7b' int(dv1,2) 123 int(vos1,8) 123 int(shs1,16) 123 ``` ### 3. Преобразование сложных типов обьектов в другие типы ### 3.1. Преобразование элементов в строку символов ``` strk1 = str(23.6) strk1 '23.6' strk2 = str(logiz3) Traceback (most recent call last): File "", line 1, in strk2 = str(logiz3) NameError: name 'logiz3' is not defined 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}" ``` ### 3.2. Преобразование элементов объекта в список с помощью функции 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'] ``` ### 3.3. Преобразование элементов объектов в кортеж с помощью функции tuple ``` kort7=tuple('Строка символов') kort7 ('С', 'т', 'р', 'о', 'к', 'а', ' ', 'с', 'и', 'м', 'в', 'о', 'л', 'о', 'в') kort8=tuple(spis2) kort8 (124, 236, -15, 908) 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'? ``` Создадим строку в соответствии с заданием. Проведем над ней изложенные операции: ``` f = "LazarevDV" m = list(f) m ['L', 'a', 'z', 'a', 'r', 'e', 'v', 'D', 'V'] v = tuple(m) v ('L', 'a', 'z', 'a', 'r', 'e', 'v', 'D', 'V') w = str(f) w "('L', 'a', 'z', 'a', 'r', 'e', 'v', 'D', 'V')" ``` ### 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/4 a 44.5 type(a) ``` Результатом всегда будет вещественное число ### 4.4. Изучение операции деления с округлением вниз ``` b=178//45 b 3 type(b) c=-24.6//12.1 c -3.0 type(c) d = 27.1// 4 d 6.0 type(d) p = -7 // 32 p -1 type(p) ``` ### 4.5. Изучение операции получения остатка от деления ``` 148%33 16 12.6%3.8 1.2000000000000002 21.3%3 0.3000000000000007 ``` ### 4.6. Изучение операции возведения в степень Возведение в степень целых и вещественных чисел ``` 14**3 2744 e=2.7**3.6 e 35.719843790663525 32.1** 2 1030.41 2**3.11 8.633825892035416 ``` Рассмотрим приведенные выше операции над комплексными числами ``` k1 = 2+2j k2 = 1 +9j k1+k2 (3+11j) k1 -k2 (1-7j) k1*k2 (-16+20j) k1 / k2 (0.24390243902439027-0.1951219512195122j) k1 // k2 Traceback (most recent call last): File "", line 1, in k1 // k2 TypeError: unsupported operand type(s) for //: 'complex' and 'complex' k1//2 Traceback (most recent call last): File "", line 1, in k1//2 TypeError: unsupported operand type(s) for //: 'complex' and 'int' k1%k2 Traceback (most recent call last): File "", line 1, in k1%k2 TypeError: unsupported operand type(s) for %: 'complex' and 'complex' k2 % 2 Traceback (most recent call last): File "", line 1, in k2 % 2 TypeError: unsupported operand type(s) for %: 'complex' and 'int' k1**4 (-64+0j) k1**k2 (-0.001813524614321925-0.0015845209011050843j) ``` Заметим, что из всех операций не выполняются операции деления с остатком и округления вниз ### 5.Операции с двоичными представлениями целых чисел ### 5.1. Двоичная инверсия ``` dv1=9 dv2=~dv1 dv2 -10 ``` ### 5.2. Двоичное «И» (&) – побитовое совпадение ``` 7 & 8 # 111 и 1000 = 0000 0 ``` ### 5.3. Двоичное «ИЛИ» ``` 7|9 # 111 или 1001 = 1111 15 7|8     # 111 или 1000 = 1111 15 14|5 # 1110 или 0101 = 1111 15 ``` ### 5.4. Двоичное «исключающее ИЛИ» ``` 14^5 # 1110 исключающее или 0101 = 1011 11 ``` ### 5.5. Сдвиг двоичного представления на заданное число разрядов влево (<<) или вправо (>>) с дополнением нулями, соответственно справа или слева ``` h=14 h 14 bin(h) '0b1110' g=h<<2 g 56 bin(g) '0b111000' g1 = h>>1 bin(g1) '0b111' g1 7 g2 = h>>2 g2 3 bin(g2) '0b11' l = 832 l << 2 3328 bin(3328) '0b110100000000' l 832 bin(l) '0b1101000000' bin(l<<7) '0b11010000000000000' bin(l>>7) '0b110' ``` ### 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 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='Система автоматического управления' 'автомат' in stroka #Наличие подстроки в строке True 'ку' in ['ку','-']*3 #Наличие контекста в списке True 'ля-' in ('abc', 'de', 'fg', 'hi', 'jkl') #Наличие контекста в кортеже False ``` ### 6.4. Подстановка значений в строку с помощью оператора «%» ``` 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. Обычное присваивание значения переменной ``` 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 stroka *= 3 stroka 'Система регулированияСистема регулированияСистема регулирования' ``` ### 7.4. Операции деления с округлением вниз (//=), получения остатка от деления (%=) и возведения в степень(**=) ``` p=27.3 p //= 2 p 13.0 p %= 3 p 1.0 p +=2 p**=2 p 9.0 ``` ### 7.5. Множественное присваивание ``` w=v=10 w,v (10, 10) n1,n2,n3=(11,-3,'all') n1,n2,n3 (11, -3, 'all') b1,b2,b3 = {"A":1,"B":2,"C":9} b1,b2,b3 ('A', 'B', 'C') b1,b2,b3 = {"A","B","C"} b1,b2,b3 ('A', 'B', 'C') b1,b2,b3= '123' b1,b2,b3 ('1', '2', '3') ``` ### 8. Изучение логических операций ### 8.1. Операции сравнения ``` w=v=10 w==v True w != v False w >v False w <= v 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 (ab) and (a == 17) True ``` ### 8.4. Проверка ссылок переменных на один и тот же объект (is) ``` w=v=10 #переменные ссылаются на один и тот же объект в оперативной памяти w is v True w1=['A','B'] v1=['A','B'] w1 is v1 В данном случае эти переменные не записаны в один адрес памяти, питон создает для списков два разных обьекта 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('пр') #Возвращает номер позиции первого вхождения указанного контекста или значение -1 5 stroka.count("с") #Подсчет числа вхождений строки “с” в stroka 4 stroka.replace(' у',' автоматического у') 'Микропроцессорная система автоматического управления' spis22=stroka.split(' ') #Возвращает список подстрок, между которыми в строке стоит заданный разделитель spis22 ['Микропроцессорная', 'система', 'управления'] stroka.upper() #Возвращает строку со всеми заглавными буквами 'МИКРОПРОЦЕССОРНАЯ СИСТЕМА УПРАВЛЕНИЯ' stroka3=" ".join(spis22) #Возвращает строку, собранную из элементов списка stroka3 'Микропроцессорная система управления' stroka3.partition("с") #Возвращает кортеж с результатами поиска «с» слева ('Микропроце', 'с', 'сорная система управления') stroka3.rpartition("с") #Возвращает кортеж с результатами поиска «с» справа ('Микропроцессорная си', 'с', 'тема управления') ``` Метод 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 'Момент времени {num}, значение = {znch}' strk3.format(znch=89.7,num=2) 'Момент времени 2, значение = 89.7' ``` ### 9.2. Методы работы со списками ``` spisok = [1, 'book', 32.2, [21,32], 'sss'] dir(spisok) ['__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'] spisok [1, 'book', 32.2, [21, 32], 'sss'] spisok.pop(2) # Удаление элемента из списка 32.2 spisok [1, 'book', [21, 32], 'sss'] spisok.append('j') # добавление элемента j в конец списка spisok [1, 'book', [21, 32], 'sss', 'j'] spisok.insert(2,'i') #Добавление в список элемента i с индексом 2 spisok [1, 'book', 'i', [21, 32], 'sss', 'c'] spisok.count('i') #Подсчёт числа элементов i, входящих в список 1 ``` ### 9.3. Методы работы с кортежами ``` kort1 = (1,3,'a',[2,1]) dir(kort1) ['__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'] kort1.index('a') #Нахождение индекса элемента в кортеже 2 kort1.count(1) #Подсчёт числа элементов 1, входящих в кортеж 1 ``` ### 9.4. Методы для работы со словарями ``` dd = {'A':19,'B':20,'C':21} dir(dd) ['__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'] dd.keys() #Отображение ключей словаря dict_keys(['A', 'B', 'C']) dd.values() #Отображение значений словаря dict_values([19, 20, 21]) dd.pop('A') #Удаление элемента словаря по ключу 19 dd {'B': 20, 'C': 21} ``` ### 9.5. Методы работы с множествами ``` mnoz = {"A","B","C",2,1} dir(mnoz) ['__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'] mnoz.remove("A") mnoz {1, 2, 'C', 'B'} ``` ### Завершение работы в среде IDLE