diff --git a/TEMA2/test.md b/TEMA2/test.md index ef9e601..7c11317 100644 --- a/TEMA2/test.md +++ b/TEMA2/test.md @@ -13,7 +13,7 @@ kort = (spis1, spis2) print(kort) print(kort[0][3], ' = ', kort[1][3]) ``` -Результат выполнения: +Р езультат выполнения: ```py (['Ivanov', 'Petrov', 'Sidorov', 'Kochetkov'], [111, 112, 113, 114, 115]) Kochetkov = 114 diff --git a/TEMA3/report.md b/TEMA3/report.md new file mode 100644 index 0000000..58cbcb4 --- /dev/null +++ b/TEMA3/report.md @@ -0,0 +1,631 @@ +# Отчёт по ТЕМЕ №3. +Криштул Александр, А-03-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 +``` +### 2.2 Преобразование в целое десятичное число и преобразование в вещественное число. +```py +>>> tt1=int(198.6) +>>> tt2=int("-76") +>>> tt3=int("B",16) +>>> tt4=int("71",8) + +>>> tt1 +198 +>>> tt2 +-76 +>>> tt3 +11 +>>> tt4 +57 +``` + +Пример ошибки: +```py +>>> 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) +>>> flt2=float(-6.78e2) +>>> flt3=float("Infinity") +>>> flt4=float("-inf") +>>> flt1 +789.0 +>>> flt2 +-678.0 +>>> flt3 +inf +>>> flt4 +-inf +``` + +### 2.3 Преобразование десятичных чисел в двоичную, 8-ричную и 16-ричную системы счисления. +```py +>>> hh=123 +>>> dv1=bin(hh) # двоичная сс +>>> vos1=oct(hh) # 8-ричная сс +>>> shs1=hex(hh) # 16-ричная сс +>>> dv1 +'0b1111011' +>>> vos1 +'0o173' +>>> shs1 +'0x7b' +``` +Для проверки выполним обратные преобразования объектов: +```py +>>> int(dv1, 2) +123 +>>> int(vos1, 8) +123 +>>> int(shs1, 16) +123 +``` + +## 3. Преобразование более сложных базов типов объектов. + +### 3.1 Преобразование в строчный тип. +```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}) + +>>> strk1 +'23.6' +>>> strk2 +'True' +>>> strk3 +"['A', 'B', 'C']" +>>> strk4 +"('A', 'B', 'C')" +>>> strk5 +"{'A': 1, 'B': 2, 'C': 9}" +``` + +### 3.2 Преобразование элементов объекта в список. +```py +>>> spis1=list("Строка символов") +>>> spis2=list((124,236,-15,908)) +>>> spis3=list({"A":1,"B":2,"C":9}) +``` +Инструкция, обеспечивающуя создание из того же словаря списка с другими его частями: +```py +>>> spis3=list({"A":1,"B":2,"C":9}.values()) +>>> spis3 +[1, 2, 9] +``` + +### 3.3 Преобразование элементов объектов в кортеж. +```py +>>> kort7=tuple('Строка символов') +>>> kort8=tuple(spis2) +>>> kort9=tuple({"A":1,"B":2,"C":9}) + +>>> kort7 +('С', 'т', 'р', 'о', 'к', 'а', ' ', 'с', 'и', 'м', 'в', 'о', 'л', 'о', 'в') +>>> kort8 +(124, 236, -15, 908) +>>> kort9 +('A', 'B', 'C') +>>> kort9=tuple({"A":1,"B":2,"C":9}.values()) +>>> kort9 +(1, 2, 9) +``` + +### 3.4 Удаление объектов. +```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 = 'Krishtul A.N.' +>>> list_fio = list(fio) +>>> cort_fio = tuple(list_fio) +>>> str_fio = str(cort_fio) +>>> list_fio +['K', 'r', 'i', 's', 'h', 't', 'u', 'l', ' ', 'A', '.', 'N', '.'] +>>> cort_fio +('K', 'r', 'i', 's', 'h', 't', 'u', 'l', ' ', 'A', '.', 'N', '.') +>>> str_fio +"('K', 'r', 'i', 's', 'h', 't', 'u', 'l', ' ', 'A', '.', 'N', '.')" +``` + +## 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 +3.9555555555555557 +>>> type(a) + +``` + +### 4.4 Деление с округлением вниз. +```py +>>> b=178//45 +>>> c=-24.6//12.1 + +>>> type(b) + +>>> b +3 + +>>> type(c) + +>>> c +-3.0 + +>>> d = 8.4//4 +>>> type(d) + +>>> d +2.0 +``` + +### 4.5 Получение остатка от деления. +```py +>>> 148%33 +16 +>>> 12.6%3.8 +1.2000000000000002 + +>>> 250.1%4 +2.0999999999999943 +``` + +### 4.6 Возведение в степень. +```py +>>> 14**3 +2744 +>>> e=2.7**3.6 +>>> e +35.719843790663525 + +>>> 4.4**9 +618121.8395095045 +``` + +### Задание (арифмитические операции с комплексными числами). +К комплексным числам можно применить операции такие как: сложение, вычитание, умножение, деление и возведение в степень: +```py +>>> z1 = 4 + 5j +>>> z2 = 16 - 9j +>>> z1 + z2 +(20-4j) +>>> z1 - z2 +(-12+14j) +>>> z1 * z2 +(109+44j) +>>> z1 / z2 +(0.05637982195845697+0.34421364985163205j) +>>> z1**z2 +(-1.827252763904479e+16-1.7626503076626254e+16j) +``` + +## 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 +``` + +### 5.5 Двоичное исключающее "Или" (Влево или вправо). +```py +>>> h=14 #Двоичное представление = 1110 +>>> g=h<<2 # Новое двоичное представление = 111000 +>>> g1=h>>1 # Новое двоичное представление = 0111 +>>> g2=h>>2 # Новое двоичное представление = 0011 +``` + +### Задание (Операции с более длинными двоичными представлениями целых чисел). +```py +>>> a = 423 +>>> b = 324 +>>> a & b +260 +>>> a | b +487 +>>> a ^ b +227 +``` + +## 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 % (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=-12 +>>> zz +-12 +>>> zz+=5 +>>> zz-=3 +>>> stroka='Система' +>>> stroka+=' регулирования' +>>> zz +-10 +>>> stroka +'Система регулирования' +``` + +### 7.3 Умножение текущего значения переменной на заданную величину или её деление. +```py +>>> zz/=2 +>>> zz*=5 + +>>> p = 3 +>>> p *= 87 +>>> p +261 +>>> p /= 3 +>>> p +87.0 +``` + +### 7.4 Операции деления с округлением вниз, получения остатка от деления и возведения в степень. +```py +>>> a = 5 +>>> a //= 2 +>>> a +2 + +>>> a = 5 +>>> a %= 2 +>>> a +1 + +>>> a = 5 +>>> a **= 3 +>>> a +125 +``` + +### 7.5. Множественное присваивание. +```py +>>> w=v=10 +>>> n1,n2,n3=(11,-3,'all') + +>>> n1,n2,n3 +(11, -3, 'all') +>>> w,v +(10, 10) +``` + +### Задание (проверить множественное присваивание на строке, списке и множестве) +```py +>>> s1 = s2 = 'String' +>>> s1 +'String' +>>> s2 +'String' + +>>> m1 = m2 = [1, 2, 4, 76] +>>> m1 +[1, 2, 4, 76] +>>> m2 +[1, 2, 4, 76] + +>>> t1 = t2 = {4, -6, 15, 64} +>>> t1 +{64, -6, 4, 15} +>>> t2 +{64, -6, 4, 15} +``` + +## 8. Логические операции. + +### 8.1. Операции сравнения. +```py +>>> w == v +True +>>> w != v +False +>>> w < v +False +>>> w > v +False +>>> w <= v +True +>>> w >= v +True +``` + +### 8.2 Проверка наличия заданного элемента в последовательности или во множестве. +```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 + +>>> (a == b) and ('Vologda' in dic1) or ('Pskov' in dic1) +False +>>> (a > b) or 'book' in mnoz1 +True +>>> 'cap' in mnoz1 or a >= b +True +``` + +### 8.4. Проверка ссылок переменных на один и тот же объект. +```py +>>> w=v=10 +>>> w is v +True +>>> w1=['A','B'] +>>> v1=['A','B'] +>>> w1 is v1 +False +``` +В начале присваивания двум переменным w и v значения 10 мы храним обе переменные в одной ячейке памяти, затем мы по отдельности присвоили двум этим переменным списки, они хоть и одинаковые, но всё равно хранятся в разных ячейках памяти. + +## 9. Операции с объектами, выполняемые с помощью методов. +```py +>>> 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 +'Микропроцессорная система управления' +>>> stroka.count("с") +4 +>>> stroka.replace(' у',' автоматического у') +'Микропроцессорная система автоматического управления' +>>> spis22=stroka.split(' ') +>>> spis22 +['Микропроцессорная', 'система', 'управления'] +>>> stroka.upper() +'МИКРОПРОЦЕССОРНАЯ СИСТЕМА УПРАВЛЕНИЯ' +>>> stroka3=" ".join(spis22) +>>> stroka3.partition("с") +('Микропроце', 'с', 'сорная система управления') +>>> stroka3.rpartition("с") +('Микропроцессорная си', 'с', 'тема управления') +>>> dont_shout_please = stroka.lower() +``` +```py +>>> strk1='Момент времени {}, значение = {}' +>>> strk1.format(1,89.7) +'Момент времени 1, значение = 89.7' +>>> strk2='Момент времени {1}, значение = {0}:{2}' +>>> strk2.format(36.7,2,'норма!') +'Момент времени 2, значение = 36.7:норма!' +``` + +### 9.2 Методы для работы со списками. +```py +>>> spis = [-4, 15, (6, -4), 'str'] +>>> spis.pop(2) +(6, -4) +>>> spis +[-4, 15, 'str'] +>>> spis.append('c') +>>> spis +[-4, 15, 'str', 'c'] +>>> spis.insert(2,'a') +>>> spis +[-4, 15, 'a', 'str', 'c'] +>>> spis.count('a') +1 +``` + +Метод pop() удалил элемент под индексом 2 (3 элемент), метод append() добавил в конец списка 'c', метод insert() поставил на 3 позицию (2 по индексу) элемент 'a', а метод count() посчитал количество вхождений элемента 'a' в список. + +### 9.3 Методы для работы с кортежами. +```py +>>> my_tuple = ('str', 20, (1, 2, 3), True) +>>> my_tuple.count(20) +1 +>>> my_tuple.index(True) +3 +``` + +### 9.3 Методы для работы со словарями и множествами. +Методы для работы со словарями: +```py +>>> student = { + "name": "Alex", + "age": 20, + "city": "Moscow", + "courses": ["Math", "Physics"], + "gpa": 2.85 +} +>>> student.get("name") +'Alex' +>>> student.keys() +dict_keys(['name', 'age', 'city', 'courses', 'gpa']) +>>> student.values() +dict_values(['Alex', 20, 'Moscow', ['Math', 'Physics'], 2.85]) +>>> student.update("gpa": 4.5) +>>> student +{'name': 'Alex', 'age': 20, 'city': 'Moscow', 'courses': ['Math', 'Physics'], 'gpa': 4.5} +>>> student.clear() +>>> student +{} +``` +Методы для работы с множествами: +```py +>>> A = {1, 2, 3, 4, 5} +>>> A.add(6) +>>> A +{1, 2, 3, 4, 5, 6} +>>> A.remove(6) +>>> A +{1, 2, 3, 4, 5} +>>> A.pop() +1 +>>> A +{2, 3, 4, 5} +>>> A.clear() +>>> A +set() +``` \ No newline at end of file diff --git a/TEMA3/task.md b/TEMA3/task.md new file mode 100644 index 0000000..2425919 --- /dev/null +++ b/TEMA3/task.md @@ -0,0 +1,71 @@ +# Общее контрольное задание по ТЕМЕ №3 +Криштул Александр, А-03-23 + +## Задание +Реализовать, записать в текстовый файл и проанализировать результаты последовательности инструкций, выполняющих следующие действия: + 1. Преобразовать восьмеричное значение 45 в целое число. + 2. Создать объект-словарь D со значениями {"усиление":23, "запаздывание":12, "постоянная времени":78} и затем осуществить его преобразование в два списка: ключей и значений, а затем – эти два списка преобразовать в один кортеж. Чем отличается кортеж от списка? + 3. Напишите и выполните единое выражение, осуществляющее деление числа 1768 на 24.8 с округлением вниз, с определением после этого остатка от деления получившегося значения на 3 и затем возведения результата в степень 2.4. + 4. Напишите и выполните единое выражение, последовательно осуществляющее следующие операции: двоичное И для чисел 13 и 27, инверсия полученного значения, двоичное исключающее ИЛИ для полученного значения и числа 14, сдвиг полученного значения на два разряда влево. + 5. Создать список с 4 одинаковыми элементами 'колебат' и написать оператор проверки наличия комбинации символов 'аткол' в результате конкатенации второго и третьего элементов этого списка. + 6. Определить список методов, доступных у ранее созданного словаря D. Поочередно использовать его методы keys и values, определить, что можно получить с применением этих методов. + 7. Создать объект - символьную строку с текстом данного предложения. Из символьной строки создать список, элементами которого будут отдельные слова из созданной строки. Заменить в списке элемент «-» на «,». Удалить из списка элемент со значением «данного». Отобразить получившийся список. + +## Решение +### 1. +```py +>>> task1 = int('45', 8) +>>> task1 +37 +``` + +### 2. +```py +>>> D_keys, D_values = list(D.keys()), list(D.values()) +>>> D_cort = tuple(D_keys + D_values) +>>> D_cort +('усиление', 'запаздывание', 'постоянная времени', 23, 12, 78) +``` +Список изменяемый, кортеж неизменяемый. + +### 3. +```py +>>> task3 = ((1768 // 24.8) % 3)**2.4 +>>> task3 +5.278031643091577 +``` + +### 4. +```py +>>> task4 = (~(13 & 27)^14) << 2 +>>> task4 +-32 +``` + +### 5. +```py +>>> task5 = ['колебат', 'колебат', 'колебат', 'колебат'] +>>> check = 'аткол' in (task5[2] + task5[3]) +>>> check +True +``` + +### 6. +```py +>>> task6 = dir(D) +>>> D_values, D_keys = D.values(), D.keys() +>>> D_values +dict_values([23, 12, 78]) +>>> D_keys +dict_keys(['усиление', 'запаздывание', 'постоянная времени']) +``` + +### 7. +```py +>>> only_words = task7.split(' ') +>>> index_of_replace_symbol = only_words.index('-') +>>> only_words[index_of_replace_symbol] = ',' +>>> only_words.remove('данного') +>>> only_words +['Создать', 'объект', ',', 'символьную', 'строку', 'с', 'текстом', 'предложения'] +``` \ No newline at end of file