Отчет по теме 3. Капитонов Михаил А-02-23 ## 1. Запустил оболочку IDLE и настроил рабочий каталог ```py import os os.chdir("C:\\Users\\user\\Desktop\\python-labs\\TEMA3") ``` ## 2. Преобразование простых типов объектов ### 2.1. Преобразование в логический тип с помощью bool ```py logiz1 = bool(56) logiz2 = bool(0) logiz3 = bool('Beta') logiz4 = bool("") logiz1; logiz2; logiz3; logiz4 True False True False ``` ### 2.2. Преобразование объектов в числовой тип данных ```py 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 не смогла преобразовать его в десятичную систему счисления.** ```py 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. Преобразование десятичных чисел в другие системы счисления ```py dv1=bin(hh) #Преобразование в строку с двоичным представлением dv1 '0b1111011' vos1=oct(hh) # Преобразование в строку с восьмеричным представлением vos1 '0o173' shs1=hex(hh) # Преобразование в строку с шестнадцатеричным представлением shs1 '0x7b' int(dv1,2);int(vos1,8);int(shs1,16) 123 123 123 ``` ## 3. Изучил преобразования более сложных типов объектов. ### 3.1. Преобразование в строку символов с помощью str() ```py 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}" ``` ### 3.2. Преобразование элементов объекта в список с помощью list() ```py 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'] spis33 = list({"A":1,"B":2,"C":9}.values()) spis33 [1, 2, 9] ``` ### 3.3. Преобразование элементов объектов в кортеж с помощью tuple() ```py 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. Удаление объектов ```py del strk5,kort8 dir() ['__annotations__', '__builtins__', '__doc__', '__loader__', '__name__', '__package__', '__spec__', 'dv1', 'flt1', 'flt2', 'flt3', 'flt4', 'hh', 'kort7', 'kort9', 'logiz1', 'logiz2', 'logiz3', 'logiz4', 'os', 'shs1', 'spis1', 'spis2', 'spis3', 'spis33', 'strk1', 'strk2', 'strk3', 'strk4', 'tt1', 'tt2', 'tt3', 'tt4', 'vos1'] ``` **Самостоятельно изучил функции, используемые в этом пункте** ```py indi34 = 'KapitonovMA' indi34 = list(indi34) indi34 ['K', 'a', 'p', 'i', 't', 'o', 'n', 'o', 'v', 'M', 'A'] indi34 = tuple(indi34) indi34 ('K', 'a', 'p', 'i', 't', 'o', 'n', 'o', 'v', 'M', 'A') indi34 = str(indi34) indi34 "('K', 'a', 'p', 'i', 't', 'o', 'n', 'o', 'v', 'M', 'A')" ``` ## 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! type(a) a 3.9555555555555557 ``` ### 4.4. Деление с округлением вниз ```py b=178//45 #Деление двух целых чисел b 3 c=-24.6//12.1 #Деление двух вещественных чисел c -3.0 ind44 = -11//3 ind44 -4 100//33.3 3.0 ``` ### 4.5. Получение остатка от деления ```py 148%33 #Остаток от деления двух целых чисел 16 12.6%3.8 #Остаток от деления двух вещественных чисел 1.2000000000000002 15.6%3.1 0.0999999999999992 16%3.1 0.49999999999999956 ``` ### 4.6. Возведение в степень ```py 14**3 #Целое число возводится в целую степень 2744 e=2.7**3.6 #Вещественное число возводится в вещественную степень e 35.719843790663525 3.3**3 35.937 11.1**0 1.0 4**2 16 compl = 3- 4j compl**2 (-7-24j) print(compl+1) (4-4j) print(compl//2) Traceback (most recent call last): File "", line 1, in print(compl//2) TypeError: unsupported operand type(s) for //: 'complex' and 'int' print(compl%2) Traceback (most recent call last): File "", line 1, in print(compl%2) TypeError: unsupported operand type(s) for %: 'complex' and 'int' print(compl-(1-4j)) (2+0j) print(compl/2) (1.5-2j) print(compl*2) (6-8j) ``` ## 5. Изучил операции с двоичными представлениями целых чисел ### 5.1. Двоичная инверсия ```py dv1 = 9 dv2 = ~dv1 dv2 -10 ``` ### 5.2. Двоичное И ```py 7&9 1 7&8 0 ``` ### 5.3. Двоичное ИЛИ ```py 7|9 # 111 или 1001 = 1111 15 7|8 # 111 или 1000 = 1111 15 14|5 # 1110 или 0101 = 1111 15 ``` ### 5.4. Двоичное исключающее ИЛИ ```py 14^5 # 1110 исключающее или 0101 = 1011 11 ``` ### 5.5. Сдвиг двоичного представления на заданное число разрядов влево или вправо с дополнением нулями ```py h=14 #Двоичное представление = 1110 g=h<<2 # Новое двоичное представление = 111000 g 56 g1=h>>1 # Новое двоичное представление = 0111 g1 7 g2=h>>2 # Новое двоичное представление = 0011 g2 3 ``` **Самостоятельно придумал два двоичных числа и выполнил операции, рассматриваемые в этом пункте** ```py i5 = 77 bin(77) '0b1001101' i51 = ~i5 i51 -78 bin(i5) '0b1001101' bin(81) '0b1010001' i5&81 65 77|81 93 77^81 28 bin(i5) '0b1001101' print(bin(i5<<2)) 0b100110100 print(bin(i5>>3)) 0b1001 ``` ## 6. Изучил операции при работе с последовательностями(списки, кортежи, строки) ### 6.1. Объединение последовательностей - конкатенация ```py 'Система '+'регулирования' #Соединение двух строк символов 'Система регулирования' ['abc','de','fg']+['hi','jkl'] # Объединение двух списков ['abc', 'de', 'fg', 'hi', 'jkl'] [1,2,3]+[4,5] [1, 2, 3, 4, 5] ('abc','de','fg')+('hi','jkl') # Объединение двух кортежей ('abc', 'de', 'fg', 'hi', 'jkl') ``` ### 6.2. Повторение ```py 'ля-'*5 #Повторение строки 5 раз 'ля-ля-ля-ля-ля-' ['ку','-']*3 #Повторение списка 3 раза ['ку', '-', 'ку', '-', 'ку', '-'] ('кис','-')*4 #Повторение кортежа 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. Проверка наличия заданного элемента в последовательности ```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 zz -12 ``` ### 7.2. Увеличивание значения переменной на заданную величину ```py zz+=5 # Значение zz увеличивается на 5 zz -7 zz-=3 # Значение уменьшается на 3 zz -10 stroka='Система' stroka+=' регулирования' stroka 'Система регулирования' ``` ### 7.3. Умножение текущего значения переменной на заданную величину ```py zz/=2 zz -5.0 zz*=5 zz -25.0 ``` ### 7.4. Операции с округлением, остатком от деления и степенью. ```py pim = 11 pim%=2 pim 1 pim = 241 pim//=121 pim 1 pim = 2 pim**=5 pim 32 ``` ### 7.5. Множественное присваивание ```py w=v=10 # Переменным присваивается одно и то же значение w;v 10 10 n1,n2,n3=(11,-3,'all') #Значения переменных берутся из кортежа n1;n2;n3 11 -3 'all' x1,x2,x3 = [1,2,3] x1;x2;x3 1 2 3 x4,x5,x6 = 'фацйпцйдидпцйжд' Traceback (most recent call last): File "", line 1, in x4,x5,x6 = 'фацйпцйдидпцйжд' ValueError: too many values to unpack (expected 3) x1,x2,x3 = {23,31,41} x1,x2,x3 (41, 31, 23) type(x1) x4,x5,x6 = {'1':2,'3':4,'5':6} x4,x5,x6 ('1', '3', '5') ``` ## 8. Изучил логические операции ### 8.1. Операции сравнения ```py w;v 10 10 w == v True w != v False w > v False w < v False w >= v True w <= v True ``` ### 8.2. Проверка наличия заданного элемента в последовательности или множестве с помощью in ```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 (b < a) and ('UII' in dct1['Depart']) True (a <= b) or ( 'Vologda' in dic1) True not ( a <= b) or ('Vologda' in dct1) True not ( a <= b) and ('Vologda' in dct1) False ``` ### 8.4. Проверка ссылок переменных на один и тот же объект ```py w1=['A','B'] v1=['A','B'] w1 is v1 False ``` ** Это ложно, потому что списки создаются в разных ячейках памяти** ## 9. Изучил операции с объектами, выполняемые с помощью методов ```py 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. Методы для работы со строками ```py stroka.find('пр') #Возвращает номер позиции первого вхождения указанного контекста или значение -1 5 stroka.count("с") #Подсчет числа вхождений строки “с” в stroka 4 stroka.replace(' у',' автоматического у') 'Микропроцессорная система автоматического управления' spis22=stroka.split(' ') #Возвращает список подстрок, между которыми в строке стоит заданный разделитель spis22 ['Микропроцессорная', 'система', 'управления'] stroka.upper() #Возвращает строку со всеми заглавными буквами 'МИКРОПРОЦЕССОРНАЯ СИСТЕМА УПРАВЛЕНИЯ' stroka3=" ".join(spis22) #Возвращает строку, собранную из элементов списка stroka3 'Микропроцессорная система управления' stroka3.partition("с") #Возвращает кортеж с результатами поиска «с» слева ('Микропроце', 'с', 'сорная система управления') stroka3.rpartition("с") #Возвращает кортеж с результатами поиска «с» справа ('Микропроцессорная си', 'с', 'тема управления') 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,6,7] 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.pop(2) 3 spsk [1, 2, 4, 5, 6, 7] spsk.append('c') spsk [1, 2, 4, 5, 6, 7, 'c'] spsk.insert(2,'a') spsk [1, 2, 'a', 4, 5, 6, 7, 'c'] spsk.count('a') 1 ``` ### 9.3. Самостоятельно изучил методы кортежа ```py t = (3, 3, 5, 6, 7) dir(t) ['__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'] t.count(3) 2 t.index(7) 4 len(t) 5 t[1] 3 ``` ### 9.4. Самостоятельно изучил методы словарей ```py #словарь d = {'a': 1, 'b': 2, 'c': 3, 'd':4} dir(d) ['__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'] d.keys() dict_keys(['a', 'b', 'c', 'd']) d.values() dict_values([1, 2, 3, 4]) d.get('b') 2 d.update({'t': 4}) d {'a': 1, 'b': 2, 'c': 3, 'd': 4, 't': 4} #множество s = {2, 4, 7, 1, 3} dir(s) ['__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'] s.add(5) s {1, 2, 3, 4, 5, 7} s.remove(4) s {1, 2, 3, 5, 7} s.intersection({1, 7}) #пересечение множеств {1, 7} ``` ## 10. Завершил работу в IDLE