# Отчёт по теме 3 Киреев Юрий, А-02-23 ## 1. Запуск оболочки IDLE В задании просят создать файл протокола, отчёт по лабораторной работе записан в файле report.md, который Вы сейчас читаете. ## 2. Преобразование простых базовых типов объектов ### 2.1. Преобразование в логический тип с помощью функции bool(<Объект>) Некоторые примеры использования: ```py >>> logiz1 = bool(56) >>> logoz2 = bool(0) >>> logiz3 = bool("Beta") >>> logiz4 = bool("") >>> logiz1,logiz2,logiz3,logiz4 (True, False, True, False) ``` ### 2.2. Преобразование в целое десятичное число объекта с заданной системой счисления Для этого используем функцию int(<Объект>[,<Система счисления, в которой определен объект>]). По умолчанию система счисления принимается десятичной. Некоторые примеры использования: ```py >>> tt1=int(198.6) # Отбрасывается дробная часть >>> tt2=int("-76") # Число – в строке символов, система по умолчанию - десятичная >>> tt3=int("B",16) # В в шестнадцатиричной системе счисления переведено в десятичную - 11 >>> tt4=int("71",8) >>> 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' >>> tt1,tt2,tt3,tt4 (198, -76, 11, 57) ``` Диагностическое сообщение выдаётся потому, что int() читает строку и пытается выделить целое число, но в строке число с плавающей точкой, поэтому int() не может прочитать это число. Преобразование целых чисел или строк символов в вещественное число – с помощью функции float(<Объект>). Некоторые примеры преобразований: ```py >>> flt1=float(789) >>> flt2=float(-6.78e2) >>> flt3=float("Infinity") >>> flt4=float("-inf") >>> flt1,flt2,flt3,flt4 (789.0, -678.0, inf, -inf) ``` ### 2.3. Преобразование десятичных чисел в другие системы счисления Примеры преобразования: ```py >>> hh=123 >>> dv1=bin(hh) >>> vos1=oct(hh) >>> shs1=hex(hh) >>> dv1,vos1,shs1 ('0b1111011', '0o173', '0x7b') ``` Для проверки выполним обратные преобразования: ```py >>> des1=int(dv1,2) >>> des2=int(vos1,8) >>> des3=int(shs1,16) >>> des1,des2,des3 (123, 123, 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}) #Преобразуем словарь >>> strk1,strk2,strk3,strk4,strk5 ('23.6', 'True', "['A', 'B', 'C']", "('A', 'B', 'C')", "{'A': 1, 'B': 2, 'C': 9}") ``` ### 3.2. Преобразование элементов объекта в список с помощью функции list(<Объект>) Некоторые примеры преобразований: ```py >>> spis1=list("Строка символов") #Заданная строка разделяется на символы >>> spis2=list((124,236,-15,908)) #Кортеж превращается в список >>> spis3=list({"A":1,"B":2,"C":9}) #Преобразование словаря в список >>> spis1,spis2,spis3 (['С', 'т', 'р', 'о', 'к', 'а', ' ', 'с', 'и', 'м', 'в', 'о', 'л', 'о', 'в'], [124, 236, -15, 908], ['A', 'B', 'C']) ``` Инструкция, обеспечивающая создание из того же словаря списка с другими его частями (в данном случае, со значениями): ```py >>> spis4 = list({"A":1, "B":2, "C":9}.values()) >>> spis4 [1, 2, 9] ``` ### 3.3. Преобразование элементов объектов в кортеж с помощью функции tuple(<Объект>) Некоторые примеры преобразований: ```py >>> kort7=tuple('Строка символов') #Преобразование строки символов в кортеж >>> kort8=tuple(spis2) #Преобразование списка в кортеж >>> kort9=tuple({"A":1,"B":2,"C":9}) #Преобразование словаря в кортеж >>> kort7,kort8,kort9 (('С', 'т', 'р', 'о', 'к', 'а', ' ', 'с', 'и', 'м', 'в', 'о', 'л', 'о', 'в'), (124, 236, -15, 908), ('A', 'B', 'C')) ``` ### 3.4. Удаление объектов Очистим оперативную память от ранее созданных объектов можно с помощью инструкции del: ```py >>> del strk5, kort8 >>> dir() ['__annotations__', '__builtins__', '__doc__', '__loader__', '__name__', '__package__', '__spec__', 'des1', 'des2', 'des3', 'dv1', 'flt1', 'flt2', 'flt3', 'flt4', 'hh', 'kort7', 'kort9', 'logiz1', 'logiz3', 'logiz4', 'logoz2', 'shs1', 'spis1', 'spis2', 'spis3', 'spis4', 'strk1', 'strk2', 'strk3', 'strk4', 'tt1', 'tt2', 'tt3', 'tt4', 'vos1'] ``` Как мы видим, указанные объекты не остались в оперативной памяти. Создам строку со своей фамилией и инициалами, преобразую её в список, затем список – в кортеж и, наконец, кортеж – в строку: ```py >>> zad34='KireevYP' >>> spis34=list(zad34) >>> kort34=tuple(spis34) >>> fin=str(kort34) >>> zad34,spis34,kort34,fin ('KireevYP', ['K', 'i', 'r', 'e', 'e', 'v', 'Y', 'P'], ('K', 'i', 'r', 'e', 'e', 'v', 'Y', 'P'), "('K', 'i', 'r', 'e', 'e', 'v', 'Y', 'P')") ``` ## 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,type(a) (3.9555555555555557, ) ``` Результатом деления всегда будет вещественное число. ### 4.4. Деление с округлением вниз Некоторые примеры: ```py >>> b=178//45 #Деление двух целых чисел >>> b, type(b) (3, ) >>> c=-24.6//12.1 #Деление двух вещественных чисел >>> c, type(c) (-3.0, ) ``` При делении с округлением вниз результат может быть целым или вещественным. ### 4.5. Получение остатка от деления Некоторые примеры: ```py >>> 148%33 #Остаток от деления двух целых чисел 16 >>> 12.6%3.8 #Остаток от деления двух вещественных чисел 1.2000000000000002 ``` Попробуем смешанные комбинации типов чисел в этой операции: ```py >>> 12.6%4 0.5999999999999996 >>> 148%3.8 3.6000000000000068 ``` Если в данной операции присутствует вещественное число, то и остаток тоже будет вещественным числом. ### 4.6. Возведение в степень Некоторые примеры: ```py >>> 14**3 #Целое число возводится в целую степень 2744 >>> e=2.7**3.6 #Вещественное число возводится в вещественную степень >>> e 35.719843790663525 ``` Попробуем смешанные комбинации типов чисел в этой операции: ```py >>> 14**3.6 13367.830445904418 >>> 2.7**3 19.683000000000003 ``` Как и в предыдущем подпункте, если присутствует вещественное число, то и результат тоже будет вещественным числом. Попробуем операции с участием комплексных чисел: ```py >>> 2+3j+10 (12+3j) >>> 2+3j-11 (-9+3j) >>> 2+3j*5 (2+15j) >>> b=2+3j >>> b*5.5 (11+16.5j) >>> c=b*5.5 >>> c,type(c) ((11+16.5j), ) >>> b//3 #Диагностическое сообщение, т.к. данную операцию нельзя применить к комплексным числам Traceback (most recent call last): File "", line 1, in b//3 TypeError: unsupported operand type(s) for //: 'complex' and 'int' >>> b**3 (-46+9j) >>> b**3.3 (-68.5109468174904-6.986605925999231j) >>> b%8 #Диагностическое сообщение, т.к. данную операцию нельзя применить к комплексным числам Traceback (most recent call last): File "", line 1, in b%8 TypeError: unsupported operand type(s) for %: 'complex' and 'int' >>> b/3 (0.6666666666666666+1j) >>> b/3.3 (0.6060606060606061+0.9090909090909092j) ``` Нетрудно заметить, что в результате операции над числами разных типов получается число, имеющее наиболее сложный тип из тех типов, которые участвуют в операции. ## 5. Операции с двоичными представлениями целых чисел ### 5.1. Двоичная инверсия Значение каждого бита в представлении числа заменяется на противоположное: ```py >>> dv1=9 >>> bin(dv1) '0b1001' >>> dv2=~dv1 >>> bin(dv2) '-0b1010' >>> dv2 -10 ``` ### 5.2. Двоичное "И" Побитовое совпадение двоичных представлений чисел ```py >>> 7&9 # 111 и 1001 = 0001 1 >>> 7&8 # 111 и 1000 = 0000 0 >>> bin(7&9) '0b1' >>> bin(7&8) '0b0' ``` ### 5.3. Двоичное «ИЛИ» Побитовое сравнение двоичных представлений чисел и 0 получается, только если оба сравниваемых разряда равны 0 ```py >>> 7|9 # 111 или 1001 = 1111 15 >>> bin(7|9) '0b1111' >>> 7|8 # 111 или 1000 = 1111 15 >>> bin(7|8) '0b1111' >>> 14|5 # 1110 или 0101 = 1111 15 >>> bin(14|5) '0b1111' >>> bin(8|2) '0b1010' >>> 8|2 10 ``` ### 5.4. Двоичное «исключающее ИЛИ» Побитовое сравнение двоичных представлений чисел и 0 получается, только если оба сравниваемых разряда имеют одинаковые значения – оба 0 или оба 1. ```py >>> 14^5 # 1110 исключающее или 0101 = 1011 11 >>> bin(14^5) '0b1011' ``` ### 5.5. Сдвиг двоичного представления на заданное число разрядов влево или вправо Некоторые примеры: ```py h=14 #Двоичное представление = 1110 bin(h) '0b1110' g=h<<2 # Новое двоичное представление = 111000 bin(g) '0b111000' g1=h>>1 # Новое двоичное представление = 0111 bin(g1) '0b111' g2=h>>2; bin(g2) # Новое двоичное представление = 0011 '0b11' ``` Число дополняется нулями, соответственно справа или слева. Выполним различные операции с двоичными числами, длиной не менее 7 знаков: ```py >>> ch1=64; ch2=65 #1000000 и 1000001 в двоичной >>> ch3=~ch1 >>> bin(ch3) '-0b1000001' >>> ch3 -65 >>> ch2&ch1; bin(ch2&ch1) 64 '0b1000000' >>> ch2|ch1; bin(ch2|ch1) 65 '0b1000001' >>> ch1^ch2; bin(ch1^ch2) 1 '0b1' >>> bin(ch1<<2) '0b100000000' >>> bin(ch2>>3) '0b1000' ``` ## 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 #Создание списка со 100 отсчетами сигнала-ступеньки >>> 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. Подстановка значений в строку с помощью оператора «%» Пример 1: ```py >>> stroka='Температура = %g %s %g' >>> stroka 'Температура = %g %s %g' >>> stroka % (16,' меньше ',25) 'Температура = 16 меньше 25' ``` Пример 2. Вставка с использованием данных из словаря. ```py >>> stroka='Температура = %(zn1)g %(sravn)s %(zn2)g' >>> 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+=5 # Значение zz увеличивается на 5 >>> zz -7 >>> zz-=3 # Значение уменьшается на 3 >>> zz -10 ``` Для последовательностей операция (+=) означает конкатенацию текущего значения объекта с заданным дополнением. ```py >>> stroka='Система' >>> stroka+=' регулирования' >>> stroka 'Система регулирования' ``` ### 7.3. Умножение или деление текущего значения переменной на заданную величину Примеры: ```py >>> zz/=2 >>> zz -5.0 >>> zz*=5 >>> zz -25.0 ``` Для строк операция (*=) означает повторение текущего значения объекта заданное число раз. ```py >>> stroka='Я рыба' >>> stroka*=16 >>> stroka 'Я рыбаЯ рыбаЯ рыбаЯ рыбаЯ рыбаЯ рыбаЯ рыбаЯ рыбаЯ рыбаЯ рыбаЯ рыбаЯ рыбаЯ рыбаЯ рыбаЯ рыбаЯ рыба' ``` ### 7.4. Операции деления с округлением вниз (//=), получения остатка от деления (%=) и возведения в степень(**=) Примеры: ```py >>> x = 17 >>> x //= 3 >>> x 5 >>> a = 17 >>> a %= 3 >>> a 2 >>> p = 2 >>> p **= 8 >>> p 256 ``` ### 7.5. Множественное присваивание Некоторые примеры: ```py >>> w=v=10 # Переменным присваивается одно и то же значение >>> w,v (10, 10) >>> n1,n2,n3=(11,-3,'all') #Значения переменных берутся из кортежа >>> n1,n2,n3 (11, -3, 'all') ``` Проверим, можно ли вместо кортежа справа использовать строку, список, словарь, множество. ```py >>> m1,m2,m3='abc' >>> m1,m2,m3 ('a', 'b', 'c') >>> o1,o2,o3=[11, -3, 'all'] >>> o1,o2,o3 (11, -3, 'all') >>> p1,p2,p3={1:'mean',2:'standart deviation',3:'correlation'} >>> p1,p2,p3 (1, 2, 3) >>> r1,r2,r3={'двигатель','датчик','линия связи','датчик','микропроцессор','двигатель'} Traceback (most recent call last): File "", line 1, in r1,r2,r3={'двигатель','датчик','линия связи','датчик','микропроцессор','двигатель'} ValueError: too many values to unpack (expected 3) >>> r1,r2,r3={'двигатель','датчик','линия связи'} >>> r1,r2,r3 ('линия связи', 'датчик', 'двигатель') ``` Использовать можно всё из перечисленного, но множество стоит ограничить по размеру до того количества элементов, скольким переменным мы присваеваем значения. ## 8. Логические операции ### 8.1. Операции сравнения Некоторые примеры: ```py >>> 14>7 True >>> 15==-15 False >>> 16<=0 False >>> 16<7 False >>> 4!=0 True >>> 8954>=8954.999 False ``` Сравним ранее введённые переменные w и v: ```py >>> w==v True >>> w!=v False >>> w>> 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 ``` Операции со словарем: ```py >>> dic1={'Saratov':145, 'Orel':56, 'Vologda':45} >>> 'Vologda' in dic1 True >>> 'Pskov' in dic1 False >>> 56 in dic1.values() True ``` Ещё пример работы со словарем: ```py >>> 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 ``` Ещё 2 примера сложных логических выражений: ```py >>> (not (v==w) or ('flash-card' in mnoz1)) and Saratov in dic1 False >>> (a + b != 11) and Kishinev in dic1 False ``` ### 8.4. Проверка ссылок переменных на один и тот же объект Примеры: ```py >>> w=v=10 #При таком присваивании переменные ссылаются на один и тот же объект в оперативной памяти >>> w is v True >>> w1=['A','B'] >>> v1=['A','B'] >>> w1 is v1 False ``` В данном случае w1 и v1 ссылаются на два разных объекта в памяти. ## 9. Операции с объектами, выполняемые с помощью методов. Полный список всех атрибутов любого объекта можно получить с использованием функции dir, например: ```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('пр') #Возвращает номер позиции первого вхождения указанного контекста или значение -1 5 >>> stroka.count("с") #Подсчет числа вхождений строки “с” в stroka 4 >>> stroka.replace(' у',' автоматического у') 'Микропроцессорная система автоматического управления' >>> spis22=stroka.split(' ') #Возвращает список подстрок, между которыми в строке стоит заданный разделитель >>> spis22 ['Микропроцессорная', 'система', 'управления'] >>> stroka.upper() #Возвращает строку со всеми заглавными буквами 'МИКРОПРОЦЕССОРНАЯ СИСТЕМА УПРАВЛЕНИЯ' >>> stroka3=" ".join(spis22) #Возвращает строку, собранную из элементов списка >>> stroka3 'Микропроцессорная система управления' >>> stroka3.partition("с") #Возвращает кортеж с результатами поиска «с» слева ('Микропроце', 'с', 'сорная система управления') >>> stroka3.rpartition("с") #Возвращает кортеж с результатами поиска «с» справа ('Микропроцессорная си', 'с', 'тема управления') ``` Выведем справку по методу format: ```py >>> help(format) Help on built-in function format in module builtins: format(value, format_spec='', /) Return value.__format__(format_spec) format_spec defaults to the empty string. See the Format Specification Mini-Language section of help('FORMATTING') for details. ``` Форматирование строки осуществляется в случае, если необходимо в символьную строку подставить значения некоторых объектов, например, полученных в ходе выполнения программы. Часто такую строку затем используют для вывода результатов работы программы на экран или в файл протокола. Например: ```py >>> strk1='Момент времени {}, значение = {}' >>> strk1 'Момент времени {}, значение = {}' >>> strk1.format(1,89.7) 'Момент времени 1, значение = 89.7' >>> strk2='Момент времени {1}, значение = {0}:{2}' >>> strk2.format(36.7,2,'норма!') 'Момент времени 2, значение = 36.7:норма!' >>> strk3='Момент времени {num}, значение = {znch}' >>> strk3.format(znch=89.7,num=2) 'Момент времени 2, значение = 89.7' ``` ### 9.2. Методы для работы со списками Примеры использования методов: ```py >>> spsk = ['Я', 'рыба', 222, strk2, '11'] >>> dir(spsk) ['__add__', '__class__', '__class_getitem__', '__contains__', '__delattr__', '__delitem__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__gt__', '__hash__', '__iadd__', '__imul__', '__init__', '__init_subclass__', '__iter__', '__le__', '__len__', '__lt__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__reversed__', '__rmul__', '__setattr__', '__setitem__', '__sizeof__', '__str__', '__subclasshook__', 'append', 'clear', 'copy', 'count', 'extend', 'index', 'insert', 'pop', 'remove', 'reverse', 'sort'] >>> spsk.pop(2) #Показывает элемент с индексом 2 и удаляет его 222 >>> spsk.append('c') #Добавляет в конец списка 'c' >>> spsk ['Я', 'рыба', 'Момент времени {1}, значение = {0}:{2}', '11', 'c'] >>> spsk.insert(2,'a') #На место с индексом 2 ставит элемент 'a' >>> spsk ['Я', 'рыба', 'a', 'Момент времени {1}, значение = {0}:{2}', '11', 'c'] >>> spsk.count('a') #Считает кол-во элементов 'a' в списке 1 ``` ### 9.3. Методы для работы с кортежами ```py >>> my_tuple = (10, 20, 30, 20, 40, 50, 20, 'hello', 3.14) >>> my_tuple.count(20) 3 >>> my_tuple.index(20) 1 ``` У кортежа всего 2 метода: index - ищет индекс первого вхождения элемента, count - считает кол-во вхождений этого элемента. ### 9.4. Методы для работы со словарями и множествами Методы работы со словарями: ```py >>> my_dict = {'name': 'Yura','age': 19,'city': 'Shelkovo','country': 'Russia','hobby': 'gaming'} >>> my_dict.keys() #Получить все ключи dict_keys(['name', 'age', 'city', 'country', 'hobby']) >>> my_dict.values() #Получить все значения dict_values(['Yura', 19, 'Shelkovo', 'Russia', 'gaming']) >>> my_dict.items() #Получить пары ключ-значение dict_items([('name', 'Yura'), ('age', 19), ('city', 'Shelkovo'), ('country', 'Russia'), ('hobby', 'gaming')]) >>> my_dict.get('name') #Безопасное получение значения 'Yura' >>> my_dict.pop('city') #Удалить элемент и вернуть его значение 'Shelkovo' >>> my_dict.popitem() #Удалить и вернуть последнюю пару ('hobby', 'gaming') >>> my_dict.update({'age': 20, 'language': 'Python'}) #Обновить словарь >>> my_dict {'name': 'Yura', 'age': 20, 'country': 'Russia', 'language': 'Python'} >>> skill = my_dict.setdefault('skill', 'Beginner') #Получить значение или установить по умолчанию >>> my_dict {'name': 'Yura', 'age': 20, 'country': 'Russia', 'language': 'Python', 'skill': 'Beginner'} >>> age = my_dict.setdefault('age', 30) >>> my_dict {'name': 'Yura', 'age': 20, 'country': 'Russia', 'language': 'Python', 'skill': 'Beginner'} >>> my_dict.clear() #Очистить словарь >>> my_dict {} >>> my_dict = {'a': 1, 'b': 2} >>> dict_copy = my_dict.copy() #Создать копию словаря >>> dict_copy {'a': 1, 'b': 2} ``` Методы работы с множествами: ```py >>> my_set = {1, 2, 3, 4, 5, 6} >>> my_set.add(7) #Добавить элемент >>> my_set {1, 2, 3, 4, 5, 6, 7} >>> my_set.remove(3) #Удалить элемент (м.б. с ошибкой) >>> my_set {1, 2, 4, 5, 6, 7} >>> my_set.discard(10) #Удалить элемент без ошибки >>> my_set {1, 2, 4, 5, 6, 7} >>> my_set.pop() #Удалить и вернуть случайный элемент 1 >>> my_set {2, 4, 5, 6, 7} >>> my_set.clear() #Очистить множество >>> my_set set() >>> my_set = {1, 2, 3} #Создать копию >>> set_copy = my_set.copy() >>> set_copy {1, 2, 3} #Рассмотрим операции с двумя множествами >>> set_a = {1, 2, 3, 4, 5} >>> set_b = {4, 5, 6, 7, 8} >>> set_a.union(set_b) #Объединение {1, 2, 3, 4, 5, 6, 7, 8} >>> set_a.intersection(set_b) #Пересечение {4, 5} >>> set_a.difference(set_b) #Разность {1, 2, 3} >>> set_a.symmetric_difference(set_b) #Симметричная разность {1, 2, 3, 6, 7, 8} >>> {1, 2}.issubset(set_a) #Проверочные методы True >>> set_a.issuperset({1, 2}) True >>> set_a.isdisjoint({9, 10}) True ``` ## 10. Закончил сеанс работы с IDLE.