diff --git a/TEMA3/report.md b/TEMA3/report.md index b66f65e..abf18bd 100644 --- a/TEMA3/report.md +++ b/TEMA3/report.md @@ -979,3 +979,374 @@ print(n1, n2, n3) 11 -3 all ``` +## 7. Логические операции – при создании логических выражений, дающих в результате вычисления значения True или False. + +### 7.1. Операции сравнение: равенство (==), не равно (!=), меньше (<), больше (>), меньше или равно (<=), больше или равно (>=). + +```python +w=v=10 +print(w>=v) +print(w==v) +print(w<=v) +print(w!=v) +print(wv) +``` + +Ответ программы: + +```shell +True +True +True +False +False +False +``` + +### 7.2. Проверка наличия заданного элемента в последовательности или во множестве, а также проверка наличия ключа в словаре (in). + +* **Операции с множеством** + +```python +mnoz1={'pen','book','pen','iPhone','table','book'} +print('book' in mnoz1) +print('cap' in mnoz1) +``` + +Ответ программы: + +```shell +True +False +``` + +* **Операции со словарём** + +```python +dic1={'Saratov':145, 'Orel':56, 'Vologda':45} +print('Vologda' in dic1) +print('Pskov' in dic1) +print(56 in dic1.values()) +``` + +Ответ программы: + +```shell +True +False +True +``` + +*Ещё один пример работы со словарём* + +```python +dct1={'Institut':['AVTI','IEE','IBB'],'Depart':['UII','PM','VMSS','MM'],'gruppa': ['A-01-15','A-02-15']} +print('UII' in dct1['Depart']) +print(dct1['Depart'][1] == 'MM') +``` + +Ответ программы: + +```shell +True +False +``` + +### 7.3. Создание больших логических выражений с использованием соединительных слов: логическое «И» (and), логическое «ИЛИ» (or), логическое «НЕ» (not). + +```python +a=17 +b=-6 +print((a>=b) and ('book' in mnoz1) and ('Pskov' not in dic1)) +print((a % 2 == 1) and (b < 0) and (('Moscow' in dic1) or ('Pskov' not in dic1))) +print(not (a <= b) and (('pen' in mnoz1) or ('book' not in mnoz1)) and ('Kazan' not in dic1)) +print((len(mnoz1) >= 3) and (a + b > 0) or (('Pskov' in dic1) and (dic1['Pskov'] > 50))) +``` + +Ответ программы: + +```shell +True +True +True +True +``` + +### 7.4. Проверка ссылок переменных на один и тот же объект (is). + +```python +w=v=10 #При таком присваивании переменные ссылаются на один и тот же объект в оперативной памяти +print(w is v) +w1=['A','B'] +v1=['A','B'] +print(w1 is v1) +``` + +Ответ программы: + +```shell +True +False +``` + +***is сравнивает тождество объектов, а не равенство значений. При w = v = 10 обе переменные указывают на один и тот же объект, а w1 = ['A','B'] и v1 = ['A','B'] создают две разные списочные коробки с одинаковым содержимым.*** + +***Чтобы тождество объектов было верным необходимо, чтобы АДРЕС объектов был тот же. Адрес можно проверить с помощью функции id(). == спрашивает "содержимое одинаковое?", а is спрашивает "это один и тот же объект?".*** + +## 8. Операции с объектами, выполняемые с помощью методов. + +***Полный список всех атрибутов любого объекта можно получить с использованием функции dir.*** + +```python +stroka='Микропроцессорная система управления' +print(dir(stroka)) +``` + +Ответ программы: + +```shell +['__add__', '__class__', '__contains__', '__delattr__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__getnewargs__', '__getstate__', '__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'] +``` + +### 8.1. Методы для работы со строками. + +* *Методы find, count, replace, split, upper, join, partition, rpartition.* + +```python +stroka='Микропроцессорная система управления' + +print(stroka.find('пр')) #Возвращает номер позиции первого вхождения указанного контекста или значение -1 +print(stroka.count("с")) #Подсчет числа вхождений строки “с” в stroka +stroka.replace(' у',' автоматического у') +print(stroka) +spis22=stroka.split(' ') #Возвращает список подстрок, между которыми в строке стоит заданный разделитель +print(spis22) +print(stroka.upper()) #Возвращает строку со всеми заглавными буквами +stroka3=" ".join(spis22) #Возвращает строку, собранную из элементов списка +print(stroka3) +print(stroka3.partition("с")) #Возвращает кортеж с результатами поиска «с» слева +print(stroka3.rpartition("с")) #Возвращает кортеж с результатами поиска «с» справа +``` + +Ответ программы: + +```shell +5 +4 +Микропроцессорная система управления +['Микропроцессорная', 'система', 'управления'] +МИКРОПРОЦЕССОРНАЯ СИСТЕМА УПРАВЛЕНИЯ +Микропроцессорная система управления +('Микропроце', 'с', 'сорная система управления') +('Микропроцессорная си', 'с', 'тема управления') +``` + +* *Метод format.* + +```python +strk1 = 'Момент времени {}, значение = {}' +print(strk1.format(1, 89.7)) + +strk2='Момент времени {1}, значение = {0}:{2}' +print(strk2.format(36.7,2,'норма!')) + +strk3='Момент времени {num}, значение = {znch}' +print(strk3.format(znch=89.7,num=2)) +``` + +Ответ программы: + +```shell +нт времени 1, значение = 89.7 +Момент времени 2, значение = 36.7:норма! +Момент времени 2, значение = 89.7 +``` + +### 8.2. Методы для работы со списками. + +* Метод pop(индекс) удаляет элемент по индексу. +* Метод append(элемент) добавляет элемент в конец списка. +* Метод insert(индекс, элемент) вставляет элемент в заданный индекс. Последующие индекс сдвигаются вправо. +* Метод count(элемент) подсчитывает количество заданных элементов в списке. + +```python +spsk=['a','b','c','d','e','f'] +print(spsk) +spsk.pop(2) +print(spsk) +spsk.append('c') +print(spsk) +spsk.insert(2,'a') +print(spsk) +print(spsk.count('a')) +``` + +Ответ программы: + +```shell +['a', 'b', 'c', 'd', 'e', 'f'] +['a', 'b', 'd', 'e', 'f'] +['a', 'b', 'd', 'e', 'f', 'c'] +['a', 'b', 'a', 'd', 'e', 'f', 'c'] +2 +``` + +### 8.3. Методы для работы с кортежами. + +*У кортежа всего два собственных метода: count(элемент) и index(элемент).* + +```python +t = (10, 20, 20, 30, 40) +print(t.count(20)) # сколько раз встречается 20 +print(t.index(30)) # индекс первого вхождения 30 +``` + +Ответ программы: + +```shell +2 +3 +``` + +### 8.4. Методы для работы со словарями. + +* keys() - отображает ключи +* values() - отображает значения +* items() - отображает пары ключей и значений +* get(k, default=None) - безопасное чтение - вернуть d[k], а если ключа нет — default, без ошибки. +* d[k] = v - присвоение значения по ключу (добавит или перезапишет) +* d.setdefault(k, default=None) – вернуть d[k], а если ключа нет — создать его со значением default и вернуть. +* d.pop(k[, default]) - удалить ключ и вернуть значение; если нет и default не задан — ошибка. +* d.popitem() - удалить последнюю добавленную пару (LIFO) и вернуть её кортежем. +* d.clear() – очистить словарь. + +```python +d = {'A': 1, 'B': 2, 'C': 3} +print("start:", d) + +print(d.keys()) +print(d.values()) +print(d.items(),'\n') + +print(d.get('B', 0)) +print(d.get('Z', 0),'\n') + +d['D'] = 4 +d['A'] = 10 +print(d,'\n') + +print(d.setdefault('E', 5)) +print(d.setdefault('A', 999),'\n') +print(d,'\n') + +val = d.pop('B') +print(val, d) +print(d.pop('Z', 'нет'),'\n') + +last_key, last_val = d.popitem() +print((last_key, last_val)) +print(d,'\n') + +d.clear() +print(d) +``` + +Ответ программы: + +```shell +start: {'A': 1, 'B': 2, 'C': 3} +dict_keys(['A', 'B', 'C']) +dict_values([1, 2, 3]) +dict_items([('A', 1), ('B', 2), ('C', 3)]) + +2 +0 + +{'A': 10, 'B': 2, 'C': 3, 'D': 4} + +5 +10 + +{'A': 10, 'B': 2, 'C': 3, 'D': 4, 'E': 5} + +2 {'A': 10, 'C': 3, 'D': 4, 'E': 5} +нет + +('E', 5) +{'A': 10, 'C': 3, 'D': 4} + +{} +``` + +### 8.5. Методы для работы с множествами. + +* s = set([1, 2, 2, 3]) - создаёт множество без повторяющихся элементов. +* empty = set() - пустое множество. +* s.add(4) - добавляет элемент в множество. +* s.update([5,6]) - добавляет несколько элементов. +* s.remove(2) - удаляет элемент множества, если нет - KeyError. +* s.discard(99) - удаляет элемент, если нет — тихо. +* x = s.pop() - удаляет элемент множества. +* s.clear() - очищает множество. +* a.issubset(b) - множество a принадлежит множеству b. +* a.issuperset(b) - множество b ринадлежит множеству a. +* t = a.copy() - копирует множество. +* fs = frozenset({1,2,3}) - неизменяемое множество. + +```python +s = set([1, 2, 2, 3]) +print("s:", s) + +empty = set() +print("empty:", empty) + +s.add(4) +print("add(4):", s) + +s.update([5, 6]) +print("update([5,6]):", s) + +s.remove(2) +print("remove(2):", s) + +s.discard(99) +print("discard(99):", s) + +x = s.pop() +print("pop() ->", x, "; s:", s) + +s.clear() +print("clear():", s) + +a = {1, 2} +b = {1, 2, 3} +print("a:", a, "b:", b) +print("a.issubset(b):", a.issubset(b)) +print("a.issuperset(b):", a.issuperset(b)) +print("b.issuperset(a):", b.issuperset(a)) + +a2 = a.copy() +print("copy() a2:", a2) + +fs = frozenset({1, 2, 3}) +print("frozenset fs:", fs, type(fs)) +``` + +Ответ программы: +```shell +s: {1, 2, 3} +empty: set() +add(4): {1, 2, 3, 4} +update([5,6]): {1, 2, 3, 4, 5, 6} +remove(2): {1, 3, 4, 5, 6} +discard(99): {1, 3, 4, 5, 6} +pop() -> 1 ; s: {3, 4, 5, 6} +clear(): set() +a: {1, 2} b: {1, 2, 3} +a.issubset(b): True +a.issuperset(b): False +b.issuperset(a): True +copy() a2: {1, 2} +frozenset fs: frozenset({1, 2, 3}) +``` diff --git a/TEMA3/task7.py b/TEMA3/task7.py new file mode 100644 index 0000000..3b86a3c --- /dev/null +++ b/TEMA3/task7.py @@ -0,0 +1,38 @@ +w=v=10 +print(w>=v) +print(w==v) +print(w<=v) +print(w!=v) +print(wv) +print('\n') + +mnoz1={'pen','book','pen','iPhone','table','book'} +print('book' in mnoz1) +print('cap' in mnoz1) +print('\n') + +dic1={'Saratov':145, 'Orel':56, 'Vologda':45} +print('Vologda' in dic1) +print('Pskov' in dic1) +print(56 in dic1.values()) +print('\n') + +dct1={'Institut':['AVTI','IEE','IBB'],'Depart':['UII','PM','VMSS','MM'],'gruppa': ['A-01-15','A-02-15']} +print('UII' in dct1['Depart']) +print(dct1['Depart'][1] == 'MM') +print('\n') + +a=17 +b=-6 +print((a>=b) and ('book' in mnoz1) and ('Pskov' not in dic1)) +print((a % 2 == 1) and (b < 0) and (('Moscow' in dic1) or ('Pskov' not in dic1))) +print(not (a <= b) and (('pen' in mnoz1) or ('book' not in mnoz1)) and ('Kazan' not in dic1)) +print((len(mnoz1) >= 3) and (a + b > 0) or (('Pskov' in dic1) and (dic1['Pskov'] > 50))) +print('\n') + +w=v=10 #При таком присваивании переменные ссылаются на один и тот же объект в оперативной памяти +print(w is v) +w1=['A','B'] +v1=['A','B'] +print(w1 is v1) \ No newline at end of file diff --git a/TEMA3/task8.py b/TEMA3/task8.py new file mode 100644 index 0000000..7a8a203 --- /dev/null +++ b/TEMA3/task8.py @@ -0,0 +1,110 @@ +stroka='Микропроцессорная система управления' + +print(stroka.find('пр')) #Возвращает номер позиции первого вхождения указанного контекста или значение -1 +print(stroka.count("с")) #Подсчет числа вхождений строки “с” в stroka +stroka.replace(' у',' автоматического у') +print(stroka) +spis22=stroka.split(' ') #Возвращает список подстрок, между которыми в строке стоит заданный разделитель +print(spis22) +print(stroka.upper()) #Возвращает строку со всеми заглавными буквами +stroka3=" ".join(spis22) #Возвращает строку, собранную из элементов списка +print(stroka3) +print(stroka3.partition("с")) #Возвращает кортеж с результатами поиска «с» слева +print(stroka3.rpartition("с")) #Возвращает кортеж с результатами поиска «с» справа +print('\n') + + +strk1 = 'Момент времени {}, значение = {}' +print(strk1.format(1, 89.7)) + +strk2='Момент времени {1}, значение = {0}:{2}' +print(strk2.format(36.7,2,'норма!')) + +strk3='Момент времени {num}, значение = {znch}' +print(strk3.format(znch=89.7,num=2)) +print('\n') + +spsk=['a','b','c','d','e','f'] +print(spsk) +spsk.pop(2) +print(spsk) +spsk.append('c') +print(spsk) +spsk.insert(2,'a') +print(spsk) +print(spsk.count('a')) +print('\n') + +t = (10, 20, 20, 30, 40) +print(t.count(20)) # сколько раз встречается 20 +print(t.index(30)) # индекс первого вхождения 30 +print('\n') + + + +d = {'A': 1, 'B': 2, 'C': 3} +print("start:", d) + +print(d.keys()) +print(d.values()) +print(d.items(),'\n') + +print(d.get('B', 0)) +print(d.get('Z', 0),'\n') + +d['D'] = 4 +d['A'] = 10 +print(d,'\n') + +print(d.setdefault('E', 5)) +print(d.setdefault('A', 999),'\n') +print(d,'\n') + +val = d.pop('B') +print(val, d) +print(d.pop('Z', 'нет'),'\n') + +last_key, last_val = d.popitem() +print((last_key, last_val)) +print(d,'\n') + +d.clear() +print(d) + + +s = set([1, 2, 2, 3]) +print("s:", s) + +empty = set() +print("empty:", empty) + +s.add(4) +print("add(4):", s) + +s.update([5, 6]) +print("update([5,6]):", s) + +s.remove(2) +print("remove(2):", s) + +s.discard(99) +print("discard(99):", s) + +x = s.pop() +print("pop() ->", x, "; s:", s) + +s.clear() +print("clear():", s) + +a = {1, 2} +b = {1, 2, 3} +print("a:", a, "b:", b) +print("a.issubset(b):", a.issubset(b)) +print("a.issuperset(b):", a.issuperset(b)) +print("b.issuperset(a):", b.issuperset(a)) + +a2 = a.copy() +print("copy() a2:", a2) + +fs = frozenset({1, 2, 3}) +print("frozenset fs:", fs, type(fs))