diff --git a/TEMA3/report.md b/TEMA3/report.md new file mode 100644 index 0000000..f46ac02 --- /dev/null +++ b/TEMA3/report.md @@ -0,0 +1,637 @@ +# Отчёт по Теме 3 + +Кузьменко Елена, А-02-23 + +##1. Запустили интерактивную оболочку IDLE. + +##2. Преобразование простых базовых типов объектов. + +###2.1. Логический тип. + +```py +>>> logiz1=bool(56); logiz1 +True +>>> logiz2=bool(0); logiz2 +False +>>> logiz3=bool("Beta");logiz3 +True +>>> logiz4=bool("");logiz4 +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");tt5 #Читает строку как целое число(ошибка) +Traceback (most recent call last): + File "", line 1, in + tt5=int("98.76");tt5 +ValueError: invalid literal for int() with base 10: '98.76' +``` + +Нельзя напрямую преобразовать строку с дробным числом в целое число, так как int() не принимает строки с точкой. + +```py +>>> tt5=int(float("98.76"));tt5 +98 +``` + +###2.3. Другие системы счисления. + +```py +>>> hh=123 +>>> dv1=bin(hh);dv1 +'0b1111011' +>>> vos1=oct(hh);vos1 +'0o173' +>>> shs1=hex(hh);shs1 +'0x7b' +>>> pr_dv1=int(dv1);pr_dv1 +``` + +Проверка: + +```py +>>> pr_dv1=int(dv1,2);pr_dv1 +123 +>>> pr_vos1=int(vos1,8);pr_vos1 +123 +>>> pr_shs1=int(shs1,16);pr_shs1 +123 +``` + +##3. Преобразование более сложных базовых типов объектов. + +###3.1. Строка символов + +```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. Элементы объекта в список + +```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'] +``` + +В список попали только ключи словаря. Сделаем список со значениями: + +```py +>>> spis4=list({"A":1,"B":2,"C":9}.values());spis4 +[1, 2, 9] +``` + +###3.3 Элементы в кортеж + +```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', 'hh', 'kort7', 'kort9', 'logiz1', 'logiz2', 'logiz3', 'logiz4', 'pr_dv1', 'pr_shs1', 'pr_vos1', 'shs1', 'spis1', 'spis2', 'spis3', 'spis4', 'strk1', 'strk2', 'strk3', 'strk4', 'tt1', 'tt2', 'tt3', 'tt4', 'tt5', 'vos1'] +>>> dir(strk5) +Traceback (most recent call last): + File "", line 1, in + dir(strk5) +NameError: name 'strk5' is not defined +>>> dir(kort8) +Traceback (most recent call last): + File "", line 1, in + dir(kort8) +NameError: name 'kort8' is not defined +``` + +```py +>>> name="Kuzmenko E.A.";name +'Kuzmenko E.A.' +>>> name_list=list(name);name_list +['K', 'u', 'z', 'm', 'e', 'n', 'k', 'o', ' ', 'E', '.', 'A', '.'] +>>> name_kort=tuple(name_list);name_kort +('K', 'u', 'z', 'm', 'e', 'n', 'k', 'o', ' ', 'E', '.', 'A', '.') +>>> name_str=str(name_kort);name_str +"('K', 'u', 'z', 'm', 'e', 'n', 'k', 'o', ' ', 'E', '.', 'A', '.')" +>>> print(name_str) +('K', 'u', 'z', 'm', 'e', 'n', 'k', 'o', ' ', 'E', '.', '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;type(a) + +>>> a +3.9555555555555557 +``` + +###4.4. Деление с округлением + +```py +>>> b=178//45;b;type(b) +3 + +>>> c=-24.6//12.1;c;type(c) +-3.0 + +>>> b1=178//12.1;b1;type(b1) +14.0 #без округления 14.710743801652892 + +>>> c1=-24.6//45;c1;type(c1) +-1.0 #без округления -0.5466666666666667 + +>>> c2=-24.6/45;c2 +-0.5466666666666667 +``` + +###4.5. Остаток от деления + +```py +>>> A=148/33;A1=148%33;A,A1;type(A),type(A1) +(4.484848484848484, 16) +(, ) +>>> B=12.6/3.8;B1=12.6%3.8;B;B1;type(B);type(B1) +3.3157894736842106 +1.2000000000000002 + + +>>> C=148/3.8;C1=148%3.8;C;C1;type(C);type(C1) +38.94736842105263 +3.6000000000000068 + + +>>> D=12.6/33;D1=12.6%33;D;D1;type(D);type(D1) +0.38181818181818183 +12.6 + + +``` + +###4.6. Степень числа + +```py +>>> 14**3 +2744 +>>> e=2.7**3.6;e;type(e) +35.719843790663525 + +>>> 14**3.6 +13367.830445904418 +>>> e1=2.7**3;e1;type(e1) +19.683000000000003 + +``` + +Операции с комплексными числами: + +```py +>>> z=12+13j;z1=9-3j;z;z1;type(z);type(z1) +(12+13j) +(9-3j) + + +>>> z+z1 +(21+10j) +>>> z-z1 +(3+16j) +>>> z*z1 +(147+81j) +>>> z/z1 +(0.7666666666666667+1.7j) +>>> z//z1 +Traceback (most recent call last): + File "", line 1, in + z//z1 +TypeError: can't take floor of complex number. +>>> z%z1 +Traceback (most recent call last): + File "", line 1, in + z%z1 +TypeError: can't mod complex numbers. +>>> z**z1 +(748985013590.2666-1875851778010.0532j) +``` + +Комплексные числа не поддерживают операции // и % потому что они не упорядочены, то есть у них нет понятия больше или меньше, необходимого для округления и вычисления остатка. + +##5. Двоичные представления целых чисел + +###5.1. Инверсия + +```py +>>> dv1=9;dv1 +9 +>>> dv2=~dv1;dv2 +-10 +>>> dv11=3;dv22=~dv11;dv22 +-4 +``` + +###5.2. "И" + +```py +>>> 7&9 #111 и 1001 = 0001 +1 +>>> 7&8 #111 и 1000 = 0000 +0 +>>> 3&7 #0011(бинарное) и 0111(бинарное) = 0011, то есть 3(десятичное) +3 +``` + +###5.3. "ИЛИ" + +```py +>>> 7|9 #0111 или 1001 +15 #1111 +>>> 7|8 #111 или 1000 +15 #1111 +>>> 14|5 #1110 или 0101 +15 #1111 +``` + +###5.4. Исключающее "ИЛИ" + +1 если биты разные, 0 если одинаковые: + +```py +>>> 14^5 #1110 искл.или 0101 +11 #1011 +``` + +###5.5. Сдвиг двоичного числа + +```py +>>> h=14;h;g=h<<2;bin(h);g;bin(g) +14 +'0b1110' +56 +'0b111000' +>>> g1=h>>1;g1;bin(g1) +7 +'0b111' +>>> g2=h>>2;g2;bin(g2) +3 +'0b11' +>>> h1=75;h1;bin(75) +75 +'0b1001011' +>>> j1=h1>>4;j1;bin(j1) +4 +'0b100' +>>> j2=h1<<3;j2;bin(j2) +600 +'0b1001011000' +``` + +##6. Работа с последовательностями + +###6.1. Объединение + +```py +>>> 'Система '+'регулирования' +'Система регулирования' +>>> ['abc','de','fg']+['hi','jkl'] +['abc', 'de', 'fg', 'hi', 'jkl'] +>>> ('abc','de','fg')+('hi','jkl') +('abc', 'de', 'fg', 'hi', 'jkl') +``` + +###6.2. Повторение + +```py +>>> 'ля-'*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. Наличие заданного подстроки и контекста + +```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);stroka +'Температура = 16 меньше 25' +'Температура = %g %s %g' +>>> stroka1='Температура = %(zn1)g %(sravn)s %(zn2)g';stroka1 +'Температура = %(zn1)g %(sravn)s %(zn2)g' +>>> stroka1 % {'zn1':16,'sravn':' меньше ','zn2':25} +'Температура = 16 меньше 25' +``` + +##7. Присваивание + +###7.1. Обычное + +```py +>>> zz=-12;zz +-12 +``` + +###7.2 Увеличение и уменьшение значения + +```py +>>> zz=-12;zz +-12 +>>> zz+=5;zz +-7 +>>> zz-=3;zz +-10 +>>> stroka2='Система'; stroka2 +'Система' +>>> stroka2+=' регулирования';stroka2 +'Система регулирования' +``` +###7.3. Умножение и деление значения + +```py +>>> zz;zz/=2;zz +-10 +-5.0 +>>> zz*=5;zz +-25.0 +>>> stroka2*=3;stroka2 +'Система регулированияСистема регулированияСистема регулирования' +``` + +###7.4. Деление с округлением, остаток, степень + +```py +>>> zz;zz//=4;zz +-25.0 +-7.0 +>>> zz**=2;zz +49.0 +>>> zz%=5;zz +4.0 +``` + +##8. Логические операции + +###8.1. Сравнение + +```py +>>> w=15;v=-10;w;v +15 +-10 +>>> w==v +False +>>> w!=v +True +>>> w>> w>v +True +>>> w>=v +True +>>> w<=v +False +>>> w1='abcd';v1='aloaloalo' +>>> w1==v1 +False +>>> w1>v1 +False +>>> w1>> mnoz1={'pen','book','pen','iPhone','table','book'};mnoz1 +{'iPhone', 'pen', 'book', 'table'} +>>> '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 +>>> dct1={'Institut':['AVTI','IEE','IBB'],'Depart':['UII','PM','VMSS','MM'],'gruppa': ['A-01-15','A-02-15']};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 +>>> not (a==b) or ('pen' in mnoz1) and ('Depart' in dct1) +True +>>> not ('pen' in mnoz1) or not (a>> w=v=10 +>>> w;v +10 +10 +>>> w is v +True +>>> w1=['A','B'];v1=['A','B'] +>>> w1 is v1 +False +``` + +В первом случае w и v ссылаются на один и тот же объект, поэтому проверка выдаёт True. Для второго случая создаётся два разных списка, каждый из которых занимают свою ячейку памяти(по отдельности друг от друга и без ссылок), поэтому как "разные объекты" результат - False. + +##9. Методы для операций с объектами + +```py +>>> stroka='Микропроцессорная система управления';stroka +'Микропроцессорная система управления' +>>> dir(stroka) +['__add__', '__class__', '__contains__', '__delattr__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__getnewargs__', '__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('пр') +5 +>>> stroka.count('с') +4 +>>> stroka.replace('у','автоматического у') +'Микропроцессорная система автоматического управления' +>>> spis22=stroka.split(' ');spis22 +['Микропроцессорная', 'система', 'управления'] +>>> stroka.upper() +'МИКРОПРОЦЕССОРНАЯ СИСТЕМА УПРАВЛЕНИЯ' +>>> stroka3=" ".join(spis22);stroka3 +'Микропроцессорная система управления' +>>> stroka3.partition("с") +('Микропроце', 'с', 'сорная система управления') +>>> stroka3.rpartition("с") +('Микропроцессорная си', 'с', 'тема управления') +``` + +Метод format: + +```py +>>> strk1='Момент времени {}, значение = {}';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 +'Момент времени {num}, значение = {znch}' +>>> strk3.format(znch=89.7,num=2) +'Момент времени 2, значение = 89.7' +``` + +###9.2. Работа со списками + +```py +>>> spsk=[123,'lala',False,'abc','12'];spsk +[123, 'lala', False, 'abc', '12'] +>>> spsk.pop(2);spsk +False +[123, 'lala', 'abc', '12'] +>>> spsk.append('c');spsk +[123, 'lala', 'abc', '12', 'c'] +>>> spsk.insert(2,'a');spsk +[123, 'lala', 'a', 'abc', '12', 'c'] +>>> spsk.count('a');spsk +1 +[123, 'lala', 'a', 'abc', '12', 'c'] +``` + +###9.3. Кортеж + +```py +>>> k=(3+3j,'oo',1,'324','hello');k +((3+3j), 'oo', 1, '324', 'hello') +>>> k.count(3) +0 +>>> k.count(1) +1 +>>> k.index(1) +2 +>>> len(k) +5 +>>> k[0] +(3+3j) +``` + +###9.4. Словарь и множество + +Словарь + +```py +>>> sl={'a':1,'b':2,'c':3,'d':4,'e':5};sl +{'a': 1, 'b': 2, 'c': 3, 'd': 4, 'e': 5} +>>> sl.keys() +dict_keys(['a', 'b', 'c', 'd', 'e']) +>>> sl.values() +dict_values([1, 2, 3, 4, 5]) +>>> sl.get('a') +1 +>>> sl.update({'e':150});sl +{'a': 1, 'b': 2, 'c': 3, 'd': 4, 'e': 150} +>>> sl.pop('b');sl +2 +{'a': 1, 'c': 3, 'd': 4, 'e': 150} +>>> sl.clear();sl +{} +``` +Множество + +```py +>>> mn={1,11,'lo',11,'mnoz','123','mnoz'};mn +{'123', 1, 'mnoz', 11, 'lo'} +>>> mn.add(2);mn +{'123', 1, 2, 'mnoz', 11, 'lo'} +>>> mn.remove(1);mn +{'123', 2, 'mnoz', 11, 'lo'} +>>> mn.pop();mn #удаляет случайный элемент +'123' +{2, 'mnoz', 11, 'lo'} +>>> mn.clear();mn +set() +``` +##10. Сеанс работы с IDLE закончен \ No newline at end of file