Главная страница
Навигация по странице:

  • Описание программы

  • Подключение библиотек и объявление переменных

  • После этого в трех циклах выводим числа и их корректируем их цвета

  • Задание 1 Площадь прямоугольника

  • Задание 2. Считать из ENTRY два числа и сложить их

  • практические работы по питону. МУ_ИНФОРМАТИКА_ПРОГРАММИРОВАНИЕ_ПИТОН Коренюгина_2021. Методические указания по подготовке к практическим занятиям, в том числе в интерактивной форме, и самостоятельному изучению дисциплины для школьников 911 классов общеобразовательных средних учебных заведений


    Скачать 2.38 Mb.
    НазваниеМетодические указания по подготовке к практическим занятиям, в том числе в интерактивной форме, и самостоятельному изучению дисциплины для школьников 911 классов общеобразовательных средних учебных заведений
    Анкорпрактические работы по питону
    Дата11.05.2023
    Размер2.38 Mb.
    Формат файлаpdf
    Имя файлаМУ_ИНФОРМАТИКА_ПРОГРАММИРОВАНИЕ_ПИТОН Коренюгина_2021.pdf
    ТипМетодические указания
    #1121129
    страница8 из 10
    1   2   3   4   5   6   7   8   9   10
    Теперь займемся оформлением внешнего вида калькулятора и зададим обработку
    нажатия кнопок. Создаем надпись для вывода набираемых значений и результатов. В цикле создаем кнопки. Расположение кнопок и надписи осуществляется в табличном виде с помощью упаковщика grid. И в завершении запускаем цикл обработки событий mainloop. label = Label(root, text='0', width=35) label.grid(row=0, column=0, columnspan=4, sticky="nsew") button = Button(root, text='CE', command=lambda text='CE': click(text)) button.grid(row=1, column=3, sticky="nsew") for row in range(4): for col in range(4): button = Button(root, text=buttons[row][col], command=lambda row=row, col=col: click(buttons[row][col])) button.grid(row=row + 2, column=col, sticky="nsew") root.grid_rowconfigure(6, weight=1) root.grid_columnconfigure(4, weight=1) root.mainloop()
    У надписи выставлена ширина 35, для того, чтобы оформление кнопок подстраивалось под надпись. И в результате кнопки при этом значении лучше выглядят.
    Для того, чтобы кнопки правильно работали, пришлось для каждой из кнопок создать свою функцию с помощью lambda.
    Описание программы
    Календарь написан на Python 3 с помощью графической библиотеки Tkinter. Для определения текущего дня недели и количества дней в месяце использовалась стандартная

    106 библиотека calendar. Будем отображать календарь на текущий месяц в виде таблицы.
    Текущую дату выделим зелѐным цветом. Также добавим кнопки для перелистывания месяцев.
    Подключение библиотек и объявление переменных
    Подключаем стандартные библиотеки Tkinter, datetime и calendar с помощью import.
    Инициализируем класс root, с помощью которого будет отрисовываться графический интерфейс. Задаем заголовок окна «Calendar». Объявляем пустой список days. В дальнейшем в нем будут храниться поля таблицы. Каждое такое поле соответствует определенному дню.
    В переменную now будем хранить текущую дату. В переменных year и month будут храниться год и месяц, календарь которых в данный момент отображается. from tkinter import * import calendar import datetime root = Tk() root.title('Calendar') days = [] now = datetime.datetime.now() year = now.year month = now.month
    Меняем текущий месяц
    Функции prew и next будут вызываться при нажатии на одну из клавиш смены месяца.
    Если текущее значение месяца «январь» и пользователь нажмет на кнопку перехода на предыдущий месяц, то тогда уменьшится год и месяц поменяет значение на «декабрь».
    Обратите внимание на то, что переменные month и year глобальные
    . Поэтому перед изменением их значения в функции необходимо использовать ключевое слово global.
    Функция fill перерисовывает календарь.

    107 def prew(): global month, year month -= 1 if month == 0: month = 12 year -= 1 fill() def next(): global month, year month += 1 if month == 13: month = 1 year += 1 fill()
    Перерисовка календаря
    В функции fill будет перерисовываться отображение всех элементов. Она будет вызываться в начале работы программы и каждый раз после изменения месяца, для которого нужно вывести календарь.
    Вначале выводим наименование месяца и год. Вычисляем количество дней в предыдущем месяце и записываем в переменную prew_month_days. В переменноу week_day запишем номер дня недели первого числа месяца (от 0 – если первое число выпадет на понедельник, до 6 – на воскресенье).
    После этого в трех циклах выводим числа и их корректируем их цвета:
    В первом цикле заполняем номера дней выбранного месяца. Отображать будем их черным цветом. Если это текущий день, то его фон делаем зелѐным.
    Во втором цикле заполняем числа предыдущего месяца. Они отображаться будут серым цветом.
    В третьем цикле добавляем числа следующего месяца. Их также выводим серым цветом. def fill(): info_label['text'] = calendar.month_name[month] + ', ' + str(year) month_days = calendar.monthrange(year, month)[1] if month == 1: prew_month_days = calendar.monthrange(year-1, 12)[1] else: prew_month_days = calendar.monthrange(year, month - 1)[1] week_day = calendar.monthrange(year, month)[0] for n in range(month_days): days[n + week_day]['text'] = n+1 days[n + week_day]['fg'] = 'black' if year == now.year and month == now.month and n == now.day: days[n + week_day]['background'] = 'green' else: days[n + week_day]['background'] = 'lightgray' for n in range(week_day): days[week_day - n - 1]['text'] = prew_month_days - n days[week_day - n - 1]['fg'] = 'gray' days[week_day - n - 1]['background'] = '#f3f3f3' for n in range(6*7 - month_days - week_day): days[week_day + month_days + n]['text'] = n+1 days[week_day + month_days + n]['fg'] = 'gray' days[week_day + month_days + n]['background'] = '#f3f3f3'

    108
    Отображение элементов
    Для отображения календаря в Python 3 мы используем библиотеку Tkinter. Воспользуемся еѐ упаковщиком grid. Он представит все создаваемые нами элементы в виде таблицы.
    В первой строке в крайней левой и крайней правой ячейках (с номерами столбцов 0 и 6) отобразим кнопки смены месяцев. По центру выведем текстовое поле, в котором будет отображаться текущий год и месяц. Это поле будет занимать 5 ячеек таблицы, поэтому выставим параметр columnspan в 5. prew_button = Button(root, text='<', command=prew) prew_button.grid(row=0, column=0, sticky='nsew') next_button = Button(root, text='>', command=next) next_button.grid(row=0, column=6, sticky='nsew') info_label = Label(root, text='0', width=1, height=1, font=('Verdana', 16, 'bold'), fg='blue') info_label.grid(row=0, column=1, columnspan=5, sticky='nsew')
    Во второй строке выведем сокращенные названия месяцев.
    Дальше отображаем 6 строк по 7 столбцов, которые будем заполнять числами, обозначающими номера дней.
    В завершении используем функцию fill, которая заполнит наш календарь начальными данными – календарем текущего месяца. После этого запустим цикл обработки событий mainloop. for n in range(7): lbl = Label(root, text=calendar.day_abbr[n], width=1, height=1, font=('Verdana', 10, 'normal'), fg='darkblue') lbl.grid(row=1, column=n, sticky='nsew') for row in range(6): for col in range(7): lbl = Label(root, text='0', width=4, height=2, font=('Verdana', 16, 'bold')) lbl.grid(row=row+2, column=col, sticky='nsew') days.append(lbl) fill() root.mainloop()
    Пример программы на Python 3 для вывода календаря с помощью библиотеки Tkinter достаточно прост. Он поможет программистам в изучении языка. Здесь у нас представлены различные условные операторы и циклы, работа с глобальными переменными в функциях. Самое сложное в этом примере – это отображение графических элементов.
    Тулкит tkinter содержит набор компонентов или виджетов, одним из которых является кнопка. Добавим кнопку в окно:
    1 2
    3 4
    5 6
    7 8
    9 10 from tkinter import * root = Tk() root.title("GUI на Python") root.geometry("300x250") btn = Button(text="Hello") btn.pack() root.mainloop()
    Для создания кнопки используется конструктор Button(). В этом конструкторе с помощью параметра text можно установить текст кнопки.

    109
    Чтобы сделать элемент видимым, у него вызывается метод pack(). В итоге вверху окна будет красоваться кнопка:
    Каждый виджет, в том числе кнопка, имеет ряд атрибутов, которые влияют на ее визуализацию и которые мы можем настроить через конструктор:
    1 2
    3 4
    5 6
    7 8
    9 10 11 12 13 14 15 16 from tkinter import * root = Tk() root.title("GUI на Python") root.geometry("300x250") btn = Button(text="Hello", # текст кнопки background="#555", # фоновый цвет кнопки foreground="#ccc", # цвет текста padx="20", # отступ от границ до содержимого по горизонтали pady="8", # отступ от границ до содержимого по вертикали font="16" # высота шрифта
    ) btn.pack() root.mainloop()
    Параметры pady, padx, font принимают числовое значение, а параметры background и foreground получают шестнадцатеричное значение цвета. Параметр font содержит определение шрифта.
    Всего же конструктор Button может принимать следующие параметры:
    1 Button (master, options)
    Параметр master представляет ссылку на родительский контейнер. В случае выше это могло бы быть само графическое окно, и мы могли написать:
    1 2
    3 4
    5 6 root = Tk() root.title("GUI на Python") root.geometry("300x250") btn = Button(root, text="Hello") btn.pack()
    Однако если в коде создается одно окно, то кнопка и любой другой элемент уже по умолчанию размещаются в этом окне. Поэтому первый параметр мы можем опустить, как в примерах выше. Если бы у нас в коде создавалось бы несколько окон, тогда мы могли бы передать в конструктор Button ссылку на нужное окно.
    Второй параметр options представляет набор на самом деле набор параметров, которые мы можем установить по их имени: activebackground: цвет кнопки, когда она находится в нажатом состоянии activeforeground: цвет текста кнопки, когда она в нажатом состоянии bd: толщина границы (по умолчанию 2) bg/background: фоновый цвет кнопки fg/foreground: цвет текста кнопки font: шрифт текста, например, font="Arial 14" - шрифт Arial высотой 14px, или font=("Verdana", 13, "bold") - шрифт Verdana высотой 13px с выделением жирным height: высота кнопки highlightcolor: цвет кнопки, когда она в фокусе image: изображение на кнопке

    110 justify: устанавливает выравнивание текста. Значение LEFT выравнивает текст по левому краю, CENTER - по центру, RIGHT - по правому краю padx: отступ от границ кнопки до ее текста справа и слева pady: отступ от границ кнопки до ее текста сверху и снизу relief: определяет тип границы, может принимать значения SUNKEN, RAISED, GROOVE,
    RIDGE state: устанавливает состояние кнопки, может принимать значения DISABLED, ACTIVE,
    NORMAL (по умолчанию) text: устанавливает текст кнопки textvariable: устанавливает привязку к элементу StringVar underline: указывает на номер символа в тексте кнопки, который подчеркивается. По умолчанию значение -1, то есть никакой символ не подчеркивается width: ширина кнопки wraplength: при положительном значении строки текста будут переносится для вмещения в пространство кнопки
    Обработка нажатия на кнопку
    Для обработки нажатия на кнопку необходимо установить в конструкторе параметр command, присвоив ему ссылку на функцию, которая будет срабатывать при нажатии:
    1 2
    3 4
    5 6
    7 8
    9 10 11 12 13 14 15 16 17 18 19 from tkinter import * clicks = 0 def click_button(): global clicks clicks += 1 root.title("Clicks {}".format(clicks)) root = Tk() root.title("GUI на Python") root.geometry("300x250") btn = Button(text="Click Me", background="#555", foreground="#ccc", padx="20", pady="8", font="16", command=click_button) btn.pack() root.mainloop()
    Здесь в качестве обработчика нажатия устанавливается функция click_button. В этой функции изменяется глобальная переменная clicks, которая хранит число кликов, и ее значение выводится в заголовок окна. Таким образом, при каждом нажатии кнопки будет срабатывать функция click_button, и количество кликов будет увеличиваться

    111
    ТРИ КНОПКИ
    from tkinter import * root = Tk() root.title("GUI на Python") root.geometry("300x250") btn1 = Button(text="КНОПКА 1", background="#555", foreground="#ccc", padx="14", pady="7", font="13") btn1.place(x=10, y=20) btn2 = Button(text="КНОПКА 2", background="#555", foreground="#ccc", padx="14", pady="7", font="13") btn2.place(x=50, y=100) btn3 = Button(text="КНОПКА ТРИ", background="#555", foreground="#ccc", padx="14", pady="7", font="13") btn3.place(x=140, y=160) root.mainloop() https://pythonru.com/uroki/obuchenie-python-gui-uroki-po-tkinter http://codepad.org/
    Источник: https://pythononline.ru/
    Задание 1 Площадь прямоугольника
    from tkinter import* import math root = Tk() root.title('Table') root.geometry('140x140') def dlina(): a = EntryA.get() # берем текст из первого поля a = int(a) # преобразуем в число целого типа b = EntryB.get() b = int(b) result = str(a * b) # результат переведем в строку для дальнейшего вывода
    EntryC.delete(0, END) # очищаем текстовое поле полностью
    EntryC.insert(0, result) # вставляем результат в началo
    Label(root, text='Длина').grid(row=1, column=0, sticky=W)
    Label(root, text='Ширина').grid(row=2, column=0, sticky=W)
    Label(root, text='Найти').grid(row=3, column=0, sticky=W)
    EntryA=Entry(root, width=8, font='Arial 12')

    112
    EntryA.grid(row=1, column=1, sticky=E)
    EntryB=Entry(root, width=8, font='Arial 12')
    EntryB.grid(row=2, column=1, sticky=E)
    EntryC=Entry(root, width=8, font='Arial 12')
    EntryC.grid(row=3, column=1, sticky=E) button1 = Button(root, text='Рассчет', command = dlina ) button1.grid(row=3, column=0, sticky=E) root.mainloop
    Задание 2. Считать из ENTRY два числа и сложить их
    import tkinter as tk def summ(): try: x = float(entry_1.get()) y = float(entry_2.get()) label.config(text="Сумма числе будет равна {}".format(x + y)) except ValueError: label.config(text="Ошибка введите цифры") root = tk.Tk() entry_1 = tk.Entry(root) entry_2 = tk.Entry(root) entry_1.pack() entry_2.pack() label = tk.Label(root, text="Сумма числе будет равна") label.pack() button = tk.Button(root, text='сложить числа', command=summ) button.pack() root.mainloop()
    Элемент Radiobutton представляет переключатель, который может находиться в двух состояниях: отмеченном или неотмеченном. Но в отличие от Checkbutton переключатели могут создавать группу, из которой одномоментно мы можем выбрать только один переключатель.
    Используем переключатели:
    1 2
    3 4
    5 6
    7 8
    9 10 from tkinter import * root = Tk() root.title("GUI на Python") root.geometry("300x250") header = Label(text="Выберите курс", padx=15, pady=10) header.grid(row=0, column=0, sticky=W) lang = IntVar()

    113 11 12 13 14 15 16 17 18 19 20 21 python_checkbutton = Radiobutton(text="Python", value=1, variable=lang, padx=15, pady=10) python_checkbutton.grid(row=1, column=0, sticky=W) javascript_checkbutton = Radiobutton(text="JavaScript", value=2, variable=lang, padx=15, pady=10) javascript_checkbutton.grid(row=2, column=0, sticky=W) selection = Label(textvariable=lang, padx=15, pady=10) selection.grid(row=3, column=0, sticky=W) root.mainloop()
    Здесь определены два переключателя, но оба они привязаны к одной переменной IntVar.
    При этом они имеют разные значения, устанавливаемые через параметр value. Поэтому при включении одного переключателя, другой автоматически перейдет в неотмеченное состояние.
    Для настройки переключателя конструктор Radiobutton, как и другие конструкторы виджетов, принимает два параметра:
    1 Radiobutton (master, options)
    Первый параметр - master представляет ссылку на родительское окно, а второй параметр объединяет набор следующих параметров: activebackground: фоновый цвет переключателя в нажатом состоянии activeforeground: цвет текста переключателя в нажатом состоянии bg: фоновый цвет переключателя bitmap: монохромное изображение для переключателя borderwidth: граница вокруг переключателя command: ссылка на функцию, которая вызывается при нажатии на переключатель cursor: курсор при наведении на элемент font: шрифт fg: цвет текста height: высота элемента в строках текста. По умолчанию равно 1 image: графическое изображение, отображаемое на элементе justify: выравнивание текста, принимает значения CENTER, LEFT, RIGHT padx: отступы справа и слева от текста до границы переключателя pady: отступы сверху и снизу от текста до границы переключателя relief: стиль переключателя, по умолчанию имеет значение FLAT selectcolor: цвет кружка переключателя selectimage: изображение на переключателе, когда он находится в отмеченном состоянии state: состояние элемента, может принимать значения NORMAL (по умолчанию),
    DISABLED и ACTIVE text: текст элемента textvariable: устанавливает привязку к переменной StringVar, которая задает текст переключателя underline: индекс подчеркнутого символа в тексте элемента variable: ссылка на переменную, как правило, типа IntVar, которая хранит состояние переключателя value: значение переключателя width: ширина элемента wraplength: устанавливает перенос символов на другую строку в тексте элемента

    114 from tkinter import * languages = [("Python", 1), ("JavaScript", 2), ("C#", 3), ("Java", 4)] def select(): l = language.get() if l == 1: sel.config(text="Выбран Python") elif l == 2: sel.config(text="Выбран JavaScript") elif l == 3: sel.config(text="Выбран C#") elif l == 4: sel.config(text="Выбран Java") root = Tk() root.title("GUI на Python") root.geometry("300x280") header = Label(text="Выберите курс", padx=15, pady=10) header.grid(row=0, column=0, sticky=W) language = IntVar() row = 1 for txt, val in languages:
    Radiobutton(text=txt, value=val, variable=language, padx=15, pady=10, command=select)\
    .grid(row=row, sticky=W) row += 1 sel = Label(padx=15, pady=10) sel.grid(row=row, sticky=W) root.mainloop()
    1. Что такое словарь в Python?
    Словари в Python – это изменяемые отображения ссылок на объекты, доступные по ключу.
    Словари представляют собой структуры данных, в которых уникальные ключи отображают значения. Ключ и значение разделяются двоеточием, пары ключ-значения отделяются запятыми, а словарь целиком ограничивается фигурными скобками {}. Ниже приведены три словаря, содержащие сведения о населении пяти крупнейших городов
    Германии, список покупок и оценки студентов.
    >>> population = {'Berlin': 3748148, 'Hamburg': 1822445, 'Munich': 1471508, 'Cologne':
    1085664, 'Frankfurt': 753056 }
    >>> products = {'table': 120, 'chair': 40, 'lamp': 14, 'bed': 250, 'mattress': 100}
    >>> grades = {'Alba': 9.5, 'Eduardo': 10, 'Normando': 3.5, 'Helena': 6.5, 'Claudia': 7.5}
    Три этих словаря будут использоваться далее в руководстве. Чтобы лучше разобраться в уроку словарей, советуем проходить этот текст вместе с интерпретатором Python.
    2. Создание словаря при помощи dict()

    115
    Кроме прямого описания, словари также можно создавать с помощью встроенной функции dict(). Эта функция принимает любое количество именованных аргументов.
    >>> students_ages = dict(Amanda=27, Teresa=38, Paula=17, Mario=40)
    >>> print(students_ages)
    {'Amanda': 27, 'Teresa': 38, 'Paula': 17, 'Mario': 40}
    Методы можно комбинировать:
    >>> students_ages = dict({'Amanda': 27, 'Teresa': 38}, Paula=17, Mario=40)
    >>> print(students_ages)
    {'Amanda': 27, 'Teresa': 38, 'Paula': 17, 'Mario': 40}
    Другой вариант – использовать список кортежей. Каждый кортеж должен содержать два объекта: ключ и значение.
    >>> students_ages = dict([('Amanda', 27), ('Teresa', 38), ('Paula', 17), ('Mario', 40)])
    >>> print(students_ages)
    {'Amanda': 27, 'Teresa': 38, 'Paula': 17, 'Mario': 40}
    Наконец, можно создать словарь, используя два списка. Вначале строим итератор кортежей с помощью функции zip(). Затем используем ту же функцию dict() для построения словаря.
    >>> students = ['Amanda', 'Teresa', 'Paula', 'Mario']
    >>> ages = [27, 38, 17, 40]
    >>> students_ages = dict(zip(students, ages))
    >>> print(students_ages)
    {'Amanda': 27, 'Teresa': 38, 'Paula': 17, 'Mario': 40}
    3. Получение значений из словаря
    Для доступа к значениям словаря мы не можем использовать числовой индекс (как в случае со списками или кортежами). Однако схема извлечения значения похожа на индексацию: вместо числа в квадратные скобки подставляется ключ. При попытке получить доступ к значению с помощью несуществующего ключа будет вызвана ошибка
    KeyError.
    Чтобы избежать получения исключения с несуществующими ключами, можно воспользоваться методом dict.get(key[, default]). Этот метод возвращает значение для ключа, если ключ находится в словаре, иначе возвращает значение по умолчанию default.
    Если значение по умолчанию не задано, метод возвращает None (но никогда не возвращает исключение).
    >>> print(population['Munich'])
    1471508
    >>> print(population[1])
    Traceback (most recent call last):
    File "", line 1, in
    KeyError: 1
    >>> print(population['Stuttgart'])
    Traceback (most recent call last):
    File "", line 1, in
    KeyError: 'Stuttgart'
    >>> print(population.get('Munich'))
    1471508
    >>> print(population.get('Stuttgart'))

    116
    None
    >>> print(population.get('Stuttgart', 'Not found'))
    Not found
    4. Добавление элементов в словарь
    Добавить одиночный элемент в словарь можно следующим образом:
    >>> products['pillow'] = 10
    >>> print(products)
    {'table': 120, 'chair': 40, 'lamp': 14, 'bed': 250, 'mattress': 100, 'pillow': 10}
    Для добавления нескольких элементов одновременно можно применять метод dict.update([other]). Он обновляет словарь парами ключ-значение из other, перезаписывая существующие ключи.
    >>> products.update({'shelf': 70, 'sofa': 300})
    >>> print(products)
    {'table': 120, 'chair': 40, 'lamp': 14, 'bed': 250, 'mattress': 100, 'pillow': 10, 'shelf': 70, 'sofa': 300}
    >>> grades.update(Violeta=5.5, Marco=6.5, Paola=8)
    >>> print(grades)
    {'Alba': 9.5, 'Eduardo': 10, 'Normando': 3.5, 'Helena': 6.5, 'Claudia': 7.5, 'Violeta': 5.5, 'Marco':
    6.5, 'Paola': 8}
    >>> population.update([('Stuttgart', 632743), ('Dusseldorf', 617280)])
    >>> print(population)
    {'Berlin': 3748148, 'Hamburg': 1822445, 'Munich': 1471508, 'Cologne': 1085664, 'Frankfurt':
    753056, 'Stuttgart': 632743, 'Dusseldorf': 617280}
    Как показано выше, метод update() может принимать в качестве аргумента не только словарь, но и список кортежей или именованные аргументы.
    5. Изменение элементов словаря
    Изменим значение элемента, обратившись к ключу с помощью квадратных скобок ([]).
    Для изменения нескольких значений сразу есть метод .update(). Он перезаписывает существующие ключи.
    Увеличим цену дивана на 100 единиц и изменим оценки двух студентов.
    >>> print(products)
    {'table': 120, 'chair': 40, 'lamp': 14, 'bed': 250, 'mattress': 100, 'pillow': 10, 'shelf': 70, 'sofa': 300}
    >>> products['sofa'] = 400
    >>> print(products)
    {'table': 120, 'chair': 40, 'lamp': 14, 'bed': 250, 'mattress': 100, 'pillow': 10, 'shelf': 70, 'sofa': 400}
    >>> print(grades)
    {'Alba': 9.5, 'Eduardo': 10, 'Normando': 3.5, 'Helena': 6.5, 'Claudia': 7.5, 'Violeta': 5.5, 'Marco':
    6.5, 'Paola': 8}
    >>> grades.update({'Normando': 2.5, 'Violeta': 6})
    >>> print(grades)
    {'Alba': 9.5, 'Eduardo': 10, 'Normando': 2.5, 'Helena': 6.5, 'Claudia': 7.5, 'Violeta': 6, 'Marco': 6.5,
    'Paola': 8}
    6. Удаление элементов словаря
    Для удаления элемента из словаря можно использовать либо del dict[key], либо dict.pop(key[, default]). В первом случае из словаря удаляется соответствующая пара. Или, если такого ключа нет, возвращается KeyError.
    >>> print(population)

    117
    {'Berlin': 3748148, 'Hamburg': 1822445, 'Munich': 1471508, 'Cologne': 1085664, 'Frankfurt':
    753056, 'Stuttgart': 632743, 'Dusseldorf': 617280}
    >>> del population['Ingolstadt']
    Traceback (most recent call last):
    File "", line 1, in
    KeyError: 'Ingolstadt'
    >>> del population['Dusseldorf']
    >>> print(population)
    {'Berlin': 3748148, 'Hamburg': 1822445, 'Munich': 1471508, 'Cologne': 1085664, 'Frankfurt':
    753056, 'Stuttgart': 632743}
    Метод dict.pop(key[, default]) удаляет из словаря элемент с заданным ключом и возвращает его значение. Если ключ отсутствует, метод возвращает значение default . Если значение default не задано и ключа не существует, метод pop() вызовет исключение KeyError.
    >>> print(population)
    {'Berlin': 3748148, 'Hamburg': 1822445, 'Munich': 1471508, 'Cologne': 1085664, 'Frankfurt':
    753056, 'Stuttgart': 632743}
    >>> population.pop('Stuttgart')
    632743
    >>> print(population)
    {'Berlin': 3748148, 'Hamburg': 1822445, 'Munich': 1471508, 'Cologne': 1085664, 'Frankfurt':
    753056}
    >>> print(population.pop('Ingolstadt', 'Value not found'))
    Value not found
    >>> population.pop('Garching')
    Traceback (most recent call last):
    File "", line 1, in
    KeyError: 'Garching'
    7. Проверка наличия ключа
    Чтобы проверить, существует ли ключ в словаре, достаточно воспользоваться операторами принадлежности:
    >>> print(population)
    {'Berlin': 3748148, 'Hamburg': 1822445, 'Munich': 1471508, 'Cologne': 1085664, 'Frankfurt':
    753056}
    >>> print('Ingolstadt' in population)
    False
    >>> print('Munich' in population)
    True
    >>> print('Ingolstadt' not in population)
    True
    >>> print('Munich' not in population)
    False
    8. Копирование словаря
    Чтобы скопировать словарь, можно использовать метод словаря copy(). Этот метод возвращает поверхностную копию словаря. Мы должны быть осторожны с такими копиями: если словарь содержит списки, кортежи или множества, то в созданной копии будут только ссылки на объекты из оригинала.
    >>> students = {'Marco': 173, 'Luis': 184, 'Andrea': 168}
    >>> students_2 = students.copy() # поверхностная копия
    >>> students_2['Luis'] = 180

    118
    >>> print(students)
    {'Marco': 173, 'Luis': 184, 'Andrea': 168}
    >>> print(students_2)
    {'Marco': 173, 'Luis': 180, 'Andrea': 168}
    >>> students_weights = {'Marco': [173, 70], 'Luis': [184, 80], 'Andrea': [168, 57]}
    >>> students_weights_2 = students_weights.copy()
    >>> students_weights_2['Luis'][0] = 180
    >>> print(students_weights)
    {'Marco': [173, 70], 'Luis': [180, 80], 'Andrea': [168, 57]}
    Изменение в списке students_2 затронуло список students, так как список, содержащий вес и рост, содержит ссылки, а не дубликаты. Чтобы избежать этой проблемы, создадим глубокую копию, используя функцию copy.deepcopy(x):
    >>> import copy
    >>> students_weights = {'Marco': [173, 70], 'Luis': [184, 80], 'Andrea': [168, 57]}
    >>> students_weights_2 = copy.deepcopy(students_weights)
    >>> students_weights_2['Luis'][0] = 180
    >>> print(students_weights)
    {'Marco': [173, 70], 'Luis': [184, 80], 'Andrea': [168, 57]}
    >>> print(students_weights_2)
    {'Marco': [173, 70], 'Luis': [180, 80], 'Andrea': [168, 57]}
    При использовании глубокого копирования создается полностью независимая копия.
    Важно помнить, что оператор
    1   2   3   4   5   6   7   8   9   10


    написать администратору сайта