From cac315d9a94a3a5795082b17230feba7a2dea87b Mon Sep 17 00:00:00 2001 From: Solovyova_ED Date: Mon, 29 Sep 2025 10:17:07 +0300 Subject: [PATCH] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=20=D0=BE=D1=82=D1=87=D1=91=D1=82=20TEMA3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- TEMA3/report.md | 601 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 601 insertions(+) create mode 100644 TEMA3/report.md diff --git a/TEMA3/report.md b/TEMA3/report.md new file mode 100644 index 0000000..3de7298 --- /dev/null +++ b/TEMA3/report.md @@ -0,0 +1,601 @@ +# Отчёт по теме 3 +Соловьёва Екатерина, А-01-23 + +## 1. Начало работы с оболочкой IDLE. +## 2. Преобразование простых базовых типов объектов. +## 2.1. Преобразование в логический тип с помощью функции bool(<Объект>). +```py +logiz1=bool(56) +logiz2=bool(0) +logiz3=bool("Beta") +logiz4=bool("") +logiz1 +True +logiz2 +False +logiz3 +True +logiz4 +False +``` +* False : Пустые значения, ноль и None. +* True : Почти все остальное. +## 2.2. Преобразование в целое десятичное число объекта с заданной системой счисления. +Осуществляется с помощью функции int(<Объект>[,<Система счисления, в которой определен объект>]). По умолчанию система счисления принимается десятичной. +```py + tt1=int(198.6) #Функция получает уже готовое число 198.6 (тип float) и просто отбрасывает дробную часть. + tt1 + 198 + tt2=int("-76") #Число – в строке символов, система по умолчанию - десятичная + tt2 + -76 + tt3=int("B",16) + tt3 + 11 + tt4=int("71",8) #"71"(8)= 7 × 8¹ + 1 × 8⁰ = 7 × 8 + 1 × 1 = 56 + 1 = 57 + tt4 = int(71, 8) +Traceback (most recent call last): + File "", line 1, in #Это вызовет ошибку, потому что функция int() не может применить систему счисления к уже готовому числу. + 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() не умеет обрабатывать дробные числа в строках - она ожидает только целые числа. +``` +## 2.3. Преобразование целых чисел или строк символов в вещественное число – с помощью функции 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.4. Преобразование десятичных чисел в другие системы счисления. +```py +hh=123 +dv1=bin(hh) +dv1 +'0b1111011' +vos1=oct(hh) +vos1 +'0o173' +shs1=hex(hh) +shs1 +'0x7b' +``` +Выполню обратные преобразования объектов: +```py +dv1=int(dv1,2) +dv1 +123 +vos1=int(vos1,8) +vos1 +123 +shs1=int(shs1,16) +shs1 +123 +``` +## 3. Изучите преобразования более сложных базовых типов объектов. +## 3.1. Преобразование в строку символов с помощью функции str(<Объект>). +```py +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})#Преобразуем словарь +print(strk1) +23.6 +print(strk2) +True +print(strk3) +['A', 'B', 'C'] +print(strk4) +('A', 'B', 'C') +print(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'] +``` +Попробую создать списки из других частей того же словаря: +```py +spis3 = list({"A":1,"B":2,"C":9}.values()) #cписок значений +spis3 +[1, 2, 9] +spis3 = list({"A":1,"B":2,"C":9}.items()) #cписок пар (ключ, значение) +spis3 +[('A', 1), ('B', 2), ('C', 9)] +spis3 = [value for value in {"A":1,"B":2,"C":9}.values() if value % 2 == 0] #cписок только четных значений +spis3 +[2] +``` +## 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. Удаление объектов. +Проверю остались ли объекты в оперативной памяти после применения операции del: +```py +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'? +``` +Создам строку со своей фамилией и инициалами, преобразую её в список, затем список – в кортеж, кортеж – в строку +```py +fio='Solovyova E D' +spis0=list(fio) +spis0 +['S', 'o', 'l', 'o', 'v', 'y', 'o', 'v', 'a', ' ', 'E', ' ', 'D'] +kort0=tuple(spis0) +kort0 +('S', 'o', 'l', 'o', 'v', 'y', 'o', 'v', 'a', ' ', 'E', ' ', 'D') +strk0=str(kort0) +strk0 +"('S', 'o', 'l', 'o', 'v', 'y', 'o', 'v', 'a', ' ', 'E', ' ', 'D')" +``` +## 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.3 Деление с округлением вниз (//). +Здесь результат может быть целым или вещественным. +```py +b=178//45 #Деление двух целых чисел +b +3 +type(b) + +c=-24.6//12.1 #Деление двух вещественных чисел +c +-3.0 +type(c) + +d = 56 // 6.01 #Деление целого числа на вещественное +d +9.0 +type(d) + +e = 7.54// 2 #Деление вещественного числа на целое +e +3.0 +type(e) + +f = -15 // 4 #Деление отрицательных чисел +f +-4 +type(f) + +``` +Вывод: +* int - если оба операнда целые +* float - если хотя бы один операнд вещественный +## 4.5. Получение остатка от деления (%). +Формула остатка от деления: + a % b = a - b * (a // b) +```py +148%33 #Остаток от деления двух целых чисел +16 +12.6%3.8 #Остаток от деления двух вещественных чисел +1.2000000000000002 +20 % 3.5 #Остаток от деления целого на вещественное +2.5 +-17 % 5 Остаток от деления отрицательного на целое +3 +15.7 % 4 #Остаток от деления вещественного на целое +3.6999999999999993 +``` +## 4.6. Возведение в степень (**). +```py +14**3 #Целое число возводится в целую степень +2744 +e=2.7**3.6 #Вещественное число возводится в вещественную степень +14**3.6 #Целое число возводится в вещественную степень +13367.830445904418 +2.7**3 #Вещественное число возводится в целую степень +19.683000000000003 + +``` + операции недоступные с комплексными числами: +* Целочисленное деление +z // 2 +* Остаток от деления +z % 2 +*Сравнения (<, >, <=, >=) +z > 2 + +Доступные: +* Сложение +* Вычитание +* Умножение +* Деление +* Возведение в степень +## 5. Операции с двоичными представлениями целых чисел. +## 5.1. Двоичная инверсия (~). +Значение каждого бита в представлении числа заменяется на противоположное значение (0 на 1, 1 на 0). +```py +dv1=9 +dv2=~dv1 +dv2 +-10 +``` +В Python операция ~x эквивалентна -x - 1, а работает это так: +9: 0000 1001 +~9: 1111 0110 +## 5.2. Двоичное «И» (&) – побитовое совпадение двоичных представлений чисел +```py +7&9 # 0111 и 1001 = 0001 +1 +7&8 # 0111 и 1000 = 0000 +0 +``` +## 5.3. Двоичное «ИЛИ» (|) +Побитовое сравнение двоичных представлений чисел и 0 получается, только если оба сравниваемых разряда равны 0 +```py +7|9 # 111 или 1001 = 1111 +15 +7|8 # 111 или 1000 = 1111 +15 +14|5 # 1110 или 0101 = 1111 +15 +``` +## 5.4. Двоичное «исключающее ИЛИ»(^) +Побитовое сравнение двоичных представлений чисел и 0 получается, только если оба сравниваемых разряда имеют одинаковые значения – оба 0 или оба 1. +```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 +k=245 +bin(245) +'0b11110101' +k<<2 +980 +k>>3 +30 + +bin(456) +'0b111001000' +t=456 +t>>5 +14 +t<<14 +7471104 +``` +## 6. Операции при работе с последовательностями (строками, списками, кортежами). +## 6.1. Объединение последовательностей (конкатенация)(+) +```py + 'Система '+'регулирования' #Соединение двух строк символов + ['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. Проверка наличия заданного элемента в последовательности (in) +```py +stroka='Система автоматического управления' + 'автомат' in stroka #Наличие подстроки в строке + True + 'ку' in ['ку','-']*3 #Наличие контекста в списке + True + 'ля-' in ('abc', 'de', 'fg', 'hi', 'jkl') #Наличие контекста в кортеже + False +``` +## 6.4. Подстановка значений в строку с помощью оператора «%» +```py +# Пример 1. + stroka='Температура = %g %s %g' + stroka % (16,' меньше ',25) +# Пример 2. Именованная подстановка из словаря. + stroka='Температура = %(zn1)g %(sravn)s %(zn2)g' + stroka % {'zn1':16,'sravn':' меньше ','zn2':25} +``` +## 7. Оператор присваивания +## 7.1. Обычное присваивание значения переменной (=) +```py +zz=-12 +``` +## 7.2. Увеличение значения переменной на заданную величину (+=) или уменьшение (-=) +```py +zz+=5 # Значение zz увеличивается на 5 +zz-=3 # Значение уменьшается на 3 +stroka='Система' +stroka+=' регулирования' +``` +## 7.3. Умножение текущего значения переменной на заданную величину (*=) или деление (/=) +```py +zz=10 +zz/=2 +zz +5.0 +zz*=5 +zz +25.0 +``` +## 7.4. Операции деления с округлением вниз (//=), получения остатка от деления (%=) и возведения в степень(**=). +```py +x=166 +x//=10 #округление вниз +x +16 +x%=2 #получение остатка от деления +x +0 +x=167 +x=2 +x**=4 #возведение в степень +x +16 + + +``` +## 7.5. Множественное присваивание +```py + w=v=10 # Переменным присваивается одно и то же значение + n1,n2,n3=(11,-3,'all') #Значения переменных берутся из кортежа +``` +Проверим можно ли вместо кортежа справа использовать строку, список, словарь, множество +```py + n1, n2, n3 = "11", "-3", "all" + n1,n2,n3=[11,-3,'all'] + n1, n2, n3 = {11, -3, 'all'} + print(n1, n2, n3) + 11 -3 all + n1, n2, n3 = {'a': 1, 'b': 2, 'c': 3} + print(n1, n2, n3) + a b c +``` +Вывод: всё работает, но в случае словаря присваиваются ключи +## 8. Логические операции – при создании логических выражений, дающих в результате вычисления значения True или False. +## 8.1. Операции сравнение: равенство (==), не равно (!=), меньше (<), больше (>), меньше или равно (<=), больше или равно (>=) +```py +w=10 +v=20 +w==v +False +w!=v +True +wv +False +w<=v +True +w>=v +False +``` +## 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. Создание больших логических выражений с использованием соединительных слов: логическое «И» (and), логическое «ИЛИ» (or), логическое «НЕ» (not). +```py +a=17 +b=-6 +(a>=b) and ('book' in mnoz1) and not ('Pskov' in dic1) +True +x = 10 +y = 5 +name = "Anna" +(x > y) and (len(name) == 4) and not (y < 0) +True +price=3000 +color='blue' +price1=4000 +(price", line 1, in + mnoz2.remove(3) +KeyError: 3 +mnoz1.remove(3) +mnoz1 +{1, 2, 4, 5, 6} +```