diff --git a/TEMA3/report.md b/TEMA3/report.md new file mode 100644 index 0000000..83a2ba4 --- /dev/null +++ b/TEMA3/report.md @@ -0,0 +1,452 @@ +# Отчет по теме 3 + +Коваленко Дмитрий, А-01-23 + +## 3 Операции с объектами + +### 3.1 Преобразование в логический тип с помощью функции bool(<Объект>). + +``` +>>> logiz1=bool(56) +>>> logiz2=bool(0) +>>> logiz3=bool("Beta") +>>> logiz4=bool("") +>>> logiz1 +True +>>> logiz2 +False +>>> logiz3 +True +>>> logiz4 +False +``` + +### 3.2 Преобразование в целочисленный тип int и вещественный float + +``` +>>> tt1=int(198.6) +>>> tt2=int("-76") +>>> tt3=int("B",16) +>>> tt4=int("71",8) +>>> 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")>>> flt2=float(-6.78e2) +>>> flt3=float("Infinity") +>>> flt4=float("-inf") +>>> flt1 +789.0 +>>> flt2 +-678.0 +>>> flt3 +inf +>>> flt4 +-inf +``` + +### 3.3 Преобразование десятичных чисел в другие системы счисления + +``` +>>> hh=123 +>>> dv1=bin(hh) +>>> vos1=oct(hh) +>>> shs1=hex(hh) +>>> dv1 +'0b1111011' +>>> vos1 +'0o173' +>>> shs1 +'0x7b' +>>> nDv1 = int(dv1, 2) +>>> nDv1 +123 +>>> nVos1 = int(vos1, 8) +>>> nVos1 +123 +>>> nShs1 = int(shs1, 16) +>>> nShs1 +123 +``` +### 3.4 Преобразование в строку символов с помощью функции 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}) +>>> strk3 +"['A', 'B', 'C']" +``` +### 3.5 Преобразование элементов объекта в список с помощью функции list(<Объект>) + +``` +>>> spis1=list("Строка символов") +>>> spis2=list((124,236,-15,908)) +>>> spis3=list({"A":1,"B":2,"C":9}) +>>> spis3 +['A', 'B', 'C'] +``` + +### 3.6 Преобразование элементов объектов в кортеж с помощью функции tuple(<Объект>). + +``` +>>> kort7=tuple('Строка символов') +>>> kort8=tuple(spis2) +>>> kort9=tuple({"A":1,"B":2,"C":9}) +>>> kort9 +('A', 'B', 'C') +``` + +### 3.7 Удаление объектов + +``` +>>> del strk5, kort8 +>>> strk5 +Traceback (most recent call last): + File "", line 1, in +NameError: name 'strk5' is not defined +``` + +### 3.8 Арифметические операции + +Сложение и вычитание (+ и -) +``` +>>> 12+7+90 +109 +>>> 5.689e-1 - 0.456 +0.11289999999999994 +>>> 23.6+54 +77.6 +>>> 14-56.7+89 +46.3 +``` + +Умножение (*) +``` +>>> -6.7*12 +-80.4 +``` + +Деление (/) +``` +>>> -234.5/6 +-39.083333333333336 +>>> a=178/45 +>>> a +3.9555555555555557 +``` + +Деление с округлением вниз (//) +``` +>>> b=178//45 +>>> c=-24.6//12.1 +>>> b +3 +>>> c +-3.0 +``` + +Получение остатка от деления (%) +``` +>>> 148%33 +16 +>>> 12.6%3.8 +1.2000000000000002 +``` + +Возведение в степень (**). +``` +>>> 14**3 +2744 +>>> e=2.7**3.6 +>>> e +35.719843790663525 +``` + +### 3.9 Операции с двоичными представлениями целых чисел + +Двоичная инверсия +``` +>>> dv1=9 +>>> dv2=~dv1 +>>> dv2 +-10 +``` + +Двоичное «И» (&) – побитовое совпадение двоичных представлений чисел +``` +>>> 7&9 +1 +>>> 7&8 +0 +``` + +Двоичное «ИЛИ» (|) +``` +>>> 7|9 +15 +>>> 7|8 +15 +>>> 14|5 +15 +``` + +Двоичное «исключающее ИЛИ»(^) +``` +>>> 14^5 +11 +``` + +Сдвиг двоичного представления на заданное число разрядов влево (<<) или вправо (>>) +``` +>>> h=14 +>>> g=h<<2 +>>> g1=h>>1 +>>> g2=h>>2 +>>> g +56 +>>> g1 +7 +>>> g2 +3 +``` + +### 3.10 Операции при работе с последовательностями (строками, списками, кортежами). + +Объединение последовательностей (конкатенация)(+) +``` +>>> 'Система '+'регулирования' +'Система регулирования' +>>> ['abc','de','fg']+['hi','jkl'] +['abc', 'de', 'fg', 'hi', 'jkl'] +>>> ('abc','de','fg')+('hi','jkl') +('abc', 'de', 'fg', 'hi', 'jkl') +``` + +Повторение (*) +``` +>>> 'ля-'*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) +``` + +Проверка наличия заданного элемента в последовательности (in) +``` +>>> stroka='Система автоматического управления' +>>> 'автомат' in stroka +True +>>> 'ку' in ['ку','-']*3 +True +>>> 'ля-' in ('abc', 'de', 'fg', 'hi', 'jkl') +False +``` + +Подстановка значений в строку с помощью оператора «%» +``` +>>> stroka='Температура = %g %s %g' +>>> stroka % (16,' меньше ',25) +'Температура = 16 меньше 25' +>>> stroka='Температура = %(zn1)g %(sravn)s %(zn2)g' +>>> stroka % {'zn1':16,'sravn':' меньше ','zn2':25} +'Температура = 16 меньше 25' +``` + +### 3.11 Оператор присваивания +Обычное присваивание значения переменной (=) +``` +zz=-12 +``` + +Увеличение значения переменной на заданную величину (+=) или уменьшение (-=) +``` +>>> zz +=5 +>>> zz +-7 +>>> zz -=3 +>>> zz +-10 + +>>> stroka='Система' +>>> stroka+=' регулирования' +>>> stroka +'Система регулирования' +``` + +Умножение текущего значения переменной на заданную величину (*=) или деление (/=) + +``` +>>> zz /= 2 +>>> zz +-5.0 +>>> zz *= 5 +>>> zz +-25.0 +``` + +Изучим оперции `//=`, `%=`, `**=` +``` +>>> zz //= 2 +>>> zz +-13.0 +>>> zz %= 2 +>>> zz +1.0 +>>> zz **= 3 +>>> zz +1.0 +``` + +Множественное присваивание +``` +>>> w=v=10 +>>> n1,n2,n3=(11,-3,'all') +>>> n2 +-3 +>>> m1 = m2 = {1: '1', 2: '2'} +>>> m1 +{1: '1', 2: '2'} +``` + +### 3.12 Логические операции +Операции сравнение +``` +>>> w != v +False +``` + +Проверка наличия заданного элемента в последовательности или во множестве +``` +>>> 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 +``` + +Создание больших логических выражений с использованием соединительных слов: логическое «И» (and), логическое «ИЛИ» (or), логическое «НЕ» (not). + +``` +>>> a=17 +>>> b=-6 +>>> (a>=b) and ('book' in mnoz1) and not ('Pskov' in dic1) +True +``` + +Проверка ссылок переменных на один и тот же объект (is) +``` +>>> w=v=10 +w is v +w1=['A','B'] +v1=['A','B'] +w1 is v1>>> w is v +True +>>> w1=['A','B'] +>>> v1=['A','B'] +>>> w1 is v1 +False +``` +результат последней проверки выдал Flase потому что мы создали два фактически разных списка, так как они находятся в разных ячейках памяти + +### 3.13 Операции с объектами, выполняемые с помощью методов. + +Методы для работы со строками +``` +>>> stroka='Микропроцессорная система управления' +>>> stroka.find('пр') +5 +>>> stroka.count("с") +4 +>>> stroka.replace(' у',' автоматического у') +'Микропроцессорная система автоматического управления' +>>> spis22=stroka.split(' ') +>>> stroka.upper() +'МИКРОПРОЦЕССОРНАЯ СИСТЕМА УПРАВЛЕНИЯ' +>>> stroka3=" ".join(spis22) +>>> 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.format(znch=89.7,num=2) +'Момент времени 2, значение = 89.7' +``` + +Методы для работы со списками +``` +>>> spsk = [1, 2, 3, 4, 5, 6] +>>> spsk.pop(2) +3 +>>> spsk.append('c') +>>> spsk.insert(2,'a') +>>> spsk.count('a') +1 +``` + +### 3.14 Изучим методы кортежей, множеств, словарей + +``` +tup = (1, 2, 3, 4) +>>> tup=tup+(5,7) +>>> tup +(1, 2, 3, 4, 5, 7) +>>> tup.count(2) +>>> len(tup) +6 + +set1 = {1, 1, '1', True} +>>> set1 +{1, '1'} +>>> set1.pop() +1 +>>> dir(set1) +['__and__', '__class__', '__class_getitem__', '__contains__', '__delattr__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__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'] + +>>> map1 = {1: '1', 2: '2'} +>>> map1.keys() +dict_keys([1, 2]) +>>> dir(map1) +['__class__', '__class_getitem__', '__contains__', '__delattr__', '__delitem__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__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'] +``` \ No newline at end of file diff --git a/TEMA3/task.md b/TEMA3/task.md new file mode 100644 index 0000000..bc96f80 --- /dev/null +++ b/TEMA3/task.md @@ -0,0 +1,55 @@ +# Общее контрольное задание по теме 3 + +Коваленко Дмитрий, А-01-23 + +## Задание + +• Преобразовать восьмеричное значение 45 в целое число.\ +• Создать объект-словарь `D` со значениями {"усиление":23, "запаздывание":12, "постоянная времени":78} и затем осуществить его преобразование в два списка: ключей и значений, а затем – эти два списка преобразовать в один кортеж. Чем отличается кортеж от списка?\ +• Напишите и выполните единое выражение, осуществляющее деление числа 1768 на 24.8 с округлением вниз, с определением после этого остатка от деления получившегося значения на 3 и затем возведения результата в степень 2.4.\ +• Напишите и выполните единое выражение, последовательно осуществляющее следующие операции: двоичное И для чисел 13 и 27, инверсия полученного значения, двоичное исключающее ИЛИ для полученного значения и числа 14, сдвиг полученного значения на два разряда влево.\ +• Создать список с 4 одинаковыми элементами 'колебат' и написать оператор проверки наличия комбинации символов 'аткол' в результате конкатенации второго и третьего элементов этого списка.\ +• Определить список методов, доступных у ранее созданного словаря `D`. Поочередно использовать его методы `keys` и `values`, определить, что можно получить с применением этих методов.\ +• Создать объект - символьную строку с текстом данного предложения. Из символьной строки создать список, элементами которого будут отдельные слова из созданной строки. Заменить в списке элемент «-» на «,». Удалить из списка элемент со значением «данного». Отобразить получившийся список. + + +## Решение + +```py +int('45', 8) +37 + +D = {"усиление":23, "запаздывание":12, "постоянная времени":78} +dKeys = list(D.keys()) +dVals = list(D.values()) +dTup = (*dKeys, *dVals) + +((1788 // 24.8) % 3) ** 2.4 +0.0 + +((~(13 & 27)) ^ 14) << 2 +-32 + +listt = ['колебат'] * 4 +'аткол' in (listt[1] + listt[2]) +True + +dir(D) +['__class__', '__class_getitem__', '__contains__', '__delattr__', '__delitem__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__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(['усиление', 'запаздывание', 'постоянная времени']) + +D.values() +dict_values([23, 12, 78]) + +longS = 'Создать объект - символьную строку с текстом данного предложения. Из символьной строки создать список, элементами которого будут отдельные слова из созданной строки. Заменить в списке элемент «-» на «,». Удалить из списка элемент со значением «данного». Отобразить получившийся список.' +longS = longS.split(' ') +longS[longS.index('-')] = ',' +longS.remove('данного') +longS + +['Создать', 'объект', ',', 'символьную', 'строку', 'с', 'текстом', 'предложения.', 'Из', 'символьной', 'строки', 'создать', 'список,', 'элементами', 'которого', 'будут', 'отдельные', 'слова', 'из', 'созданной', 'строки.', '', 'Заменить', 'в', 'списке', 'элемент', '«-»', 'на', '«,».', '', 'Удалить', 'из', 'списка', 'элемент', 'со', 'значением', '«данного».', 'Отобразить', 'получившийся', 'список.'] +``` + +