# Отчет по теме 3 Ефремов Станислав, А-02-23 ## 1. Запуск. ### 1.1 Запуск оболочки IDLE и установка рабочего каталога. ```py import os os.chdir('C:\Program Files (x86)\учёха 3 курс\pythonsky\python-labs\TEMA3') ``` ## 2. Преобразование простых базовых типов объектов. ### 2.1 Логический тип. ```py logiz2 = bool(0) logiz1 = bool(56) logiz3=bool("Beta") logiz4=bool("") ``` ### 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' ``` Значение tt5 не может быть преобразовано командой вида int(), т.к. хоть и представлено в виде строки, но всё равно относится к вещественным числам. #### Преобразование с помощью функции float ```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 >>> hh=123 >>> dv1=bin(hh) #двоичное >>> dv1 '0b1111011' >>> vos1=oct(hh) #восьмиричное >>> vos1 '0o173' >>> shs1=hex(hh) #шестнадцатеричное >>> shs1 '0x7b' ``` #### Пример обратного преобразования: ```py >>> int(dv1,2) 123 >>> int(vos1,8) 123 >>> int(shs1, 16) 123 ``` ## 3 Преобразование более сложных базовых типов ### 3.1 Преобразование в строку символов ```py >>>strk1=str(23.6) >>>strk1 '23.6' >>>strk2=str(logiz3) >>>strk2 'True' >>>strk3=str(["A","B","C"]) - #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'] >>> spis3=list({"A":1,"B":2,"C":9}.values()) #вывод значений списка >>> spis3 [1, 2, 9] >>> spis3=list({"A":1,"B":2,"C":9}.items()) #вывод ключей-значений >>> spis3 ``` ### 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 kort8 >>> kort8 Traceback (most recent call last): File "", line 1, in kort8 NameError: name 'kort8' is not defined. Did you mean: 'kort7'? ``` ```py >>> fam = ('Efremov S.I') >>> spisfam = spis(fam) >>> spisfam = list(fam) >>> kortfam = tuple(spisfam) >>> strfam = str(kortfam) >>> strfam "('E', 'f', 'r', 'e', 'm', 'o', 'v', ' ', 'S', '.', 'I')" >>> type(strfam) ``` ## 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) ``` Тип полученной переменной является вещественным. ### 4.4. Округление вниз(//). ```py >>> b=178//45 >>> c=-24.6//12.1 >>> type(b) >>> type(c) >>> b 3 >>> c -3.0 d = 24.6//3 type(d) d = 24//3.6 type(d) ``` Переменная приобретает вещественный тип, если при операции деления есть хотя бы одно вещественное значение. ### 4.5. Остаток от деления: ```py >>> 148%33 16 >>> 12.6%3.8 1.2000000000000002 >>> 148.3%33 16.30000000000001 >>> 148%33.3 14.800000000000011 ``` ### 4.6. Возведение в степень: ```py >>> 14**3 2744 >>> e=2.7**3.6 >>> e 35.719843790663525 ``` #### Повторим предложенные операции, но уже с комплексными числами: ```py >>> po = 10 + 10j >>> ac = 20 + 20j >>> po + ac (30+30j) >>> po - ac (-10-10j) >>> po * ac 400j po / ac (0.5+0j) po//ac Traceback (most recent call last): File "", line 1, in po//ac TypeError: unsupported operand type(s) for //: 'complex' and 'complex' po%ac Traceback (most recent call last): File "", line 1, in po%ac TypeError: unsupported operand type(s) for %: 'complex' and 'complex' po**ac (1.4066000837528672e+16-6347426866104395j) ``` Важно заметить, что операции деления с округлением вниз и определения остатка провести нельзя! ## 5. Двоичное представление чисел. ### 5.1. Двойная инверсия ```py >>>dv1=9 >>>dv2=~dv1 >>>dv2 -10 ``` ### 5.2. Двоичное 'И'. ```py >>>7&9 1 >>>7&8 0 ``` ### 5.3. Двоичное "ИЛИ" ```py >>>7|9 15 >>>7|8 15 >>>14|5 15 ``` ### 5.4 Двоичное исключающее "ИЛИ" ```py >>>14^5 11 #десятичное >>> bin(11) '0b1011' #двоичное ``` ### 5.5 Сдвиг двоичного представления влево и вправо. ```py >>>h=14 >>>g=h<<2 >>>g 56 >>>g1=h>>1 >>>g1 7 >>>g2=h>>2 >>>g2 3 ``` ???????????????????????????????????? ## 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 #Повторение строки 5 раз 'ля-ля-ля-ля-ля-' >>>['ку','-']*3 #Повторение списка 3 раза ['ку', '-', 'ку', '-', 'ку', '-'] >>>('кис','-')*4 #Повторение кортежа 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 Проверка наличия. ```py >>>stroka='Система автоматического управления' >>>'автомат' in stroka #Наличие подстроки в строке True >>>'ку' in ['ку','-']*3 #Наличие контекста в списке True >>>'ля-' in ('abc', 'de', 'fg', 'hi', 'jkl') #Наличие контекста в кортеже False ``` ### 6.4. Подстановка значений. ```py >>>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 - 7.3. Обычное присваивание, увеличение, умножение и деление соответственно. ```py >>> zz=-12 >>> zz+=5 >>> zz -7 >>> zz-=3 >>> zz -10 >>> stroka='Система' >>> stroka+=' регулирования' >>> stroka 'Система регулирования' >>> zz/=2 #деление на текущую величину >>> zz*=5 >>> zz -25.0 >>> zzz = 12 >>> zzz *=12 #повторение >>> zzz 144 ### 7.4. Деление с округлением вниз, остаток от деления и возведение в степень. ```py >>> chislo = 10 >>> chislo //=5 >>> chislo 2 >>> chislo = 10 >>> chislo %=3 >>> chislo 1 >>> chislo = 10 >>> chislo **=2 >>> chislo 100 ``` ### 7.5 Присваивание ```py >>> w=v=10 >>> n1,n2,n3=(11,-3,'all') >>> n1 11 >>> n2 -3 >>> n3 'all' >>> w, v (10, 10) ``` ??????????????????????????????????? ## 8. Логические операции.