{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Основы программирования в Python\n", "\n", "*Алла Тамбовцева, НИУ ВШЭ*\n", "\n", "## Семинар 5" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Задача 1\n", "\n", "Дан словарь с названиями разных рептилий:" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [], "source": [ "rept = {\"python\" : \"питон\", \"anaconda\" : \"анаконда\", \"tortoize\" : \" черепаха\" }" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "* Добавьте в словарь пару \"snake\" - \" змея\".\n", "* Исправьте ключ \"tortoize\" на правильный \"tortoise\".\n", "* Выведите на экран сообщения вида\n", "\n", " питон по-английски будет python;\n", "\n", "для всех слов в словаре (сообщение для каждого слова ‒ с новой строчки)." ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [], "source": [ "rept[\"snake\"] = \"змея\"" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "{'python': 'питон', 'tortoize': ' черепаха', 'anaconda': 'анаконда', 'snake': 'змея', 'tortoise': 'черепаха'}\n" ] } ], "source": [ "# сначала добавим элемент с правильным ключом\n", "rept[\"tortoise\"] = \"черепаха\"\n", "print(rept)" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "{'python': 'питон', 'anaconda': 'анаконда', 'snake': 'змея', 'tortoise': 'черепаха'}\n" ] } ], "source": [ "# потом удалим элемент с неправильным ключом\n", "del rept[\"tortoize\"]\n", "print(rept)" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "питон по-английски будет python;\n", "анаконда по-английски будет anaconda;\n", "змея по-английски будет snake;\n", "черепаха по-английски будет tortoise;\n" ] } ], "source": [ "for k, v in rept.items():\n", " print(v, \" по-английски будет \", k, \";\", sep = \"\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Задача 2\n", "\n", "Дан список студентов." ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [], "source": [ "students = [\"Вася\", \"Маша\", \"Петя\", \"Дима\", \"Марина\", \"Люба\", \"Коля\", \"Ваня\"]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Оценки студентов за контрольную работу сохранены в словаре *grades*:" ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [], "source": [ "grades = {\"Вася\" : 4, \"Петя\" : 9, \"Марина\" : 8, \"Люба\" : 4, \"Коля\" : 5, \"Ваня\": 10}" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "* Напишите программу, которая выводит на экран имя студента из списка *students* и его оценку. Если оценки студента из списка *students* нет, то на экран должно выводиться имя студента и сообщение \"Контрольную работу не писал(а)\".\n", "\n", "* Напишите программу, которая выводит на экран имена студентов, которые получили отличные оценки (8 и выше).\n", "\n", "* Напишите программу, которая сохраняет имена студентов, получивших хорошие и отличные оценки, в список *good*, а получивших удовлетворительные и плохие оценки ‒ в список *bad*." ] }, { "cell_type": "code", "execution_count": 18, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Вася 4\n", "Маша Контрольную работу не писал(а)\n", "Петя 9\n", "Дима Контрольную работу не писал(а)\n", "Марина 8\n", "Люба 4\n", "Коля 5\n", "Ваня 10\n" ] } ], "source": [ "# 1\n", "for s in students:\n", " print(s, grades.get(s, \"Контрольную работу не писал(а)\"))" ] }, { "cell_type": "code", "execution_count": 19, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Петя\n", "Марина\n", "Ваня\n" ] } ], "source": [ "# 2\n", "for st, gr in grades.items():\n", " if gr >= 8:\n", " print(st)" ] }, { "cell_type": "code", "execution_count": 20, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "['Петя', 'Марина', 'Ваня']\n", "['Вася', 'Коля', 'Люба']\n" ] } ], "source": [ "# 3\n", "good = []\n", "bad = []\n", "\n", "for st, gr in grades.items():\n", " if gr >= 6:\n", " good.append(st)\n", " else:\n", " bad.append(st)\n", "\n", "print(good)\n", "print(bad)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Задача 3\n", "\n", "В списке *cnt* хранятся названия стран, а в списке *fh* ‒ значения индекса Freedom House для этих стран. Создайте словарь, используя в качестве ключей названия стран, а в качестве значений ‒ значения индекса." ] }, { "cell_type": "code", "execution_count": 21, "metadata": {}, "outputs": [], "source": [ "cnt = [\"Andorra\", \"Belarus\", \"Denmark\", \"Kenya\", \"Jamaica\", \"Romania\"]\n", "fh = [1.0, 6.0, 1.0, 4.0, 2.5, 2.0]" ] }, { "cell_type": "code", "execution_count": 24, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "{'Andorra': 1.0,\n", " 'Belarus': 6.0,\n", " 'Denmark': 1.0,\n", " 'Jamaica': 2.5,\n", " 'Kenya': 4.0,\n", " 'Romania': 2.0}" ] }, "execution_count": 24, "metadata": {}, "output_type": "execute_result" } ], "source": [ "d = dict(zip(cnt, fh))\n", "d" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Задача 4\n", "\n", "Дан список, состоящий из пар чисел:" ] }, { "cell_type": "code", "execution_count": 26, "metadata": {}, "outputs": [], "source": [ "pairs = [(2, 4), (4, 6), (0, 1), (5, 2), (9, 1), (3, 8)]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Создайте словарь *calc*, где ключами являются пары чисел, а значениями ‒ их произведение (произведение тоже должно считаться в Python, не в уме)." ] }, { "cell_type": "code", "execution_count": 27, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "{(0, 1): 0, (3, 8): 24, (9, 1): 9, (5, 2): 10, (2, 4): 8, (4, 6): 24}\n" ] } ], "source": [ "calc = {}\n", "\n", "for p in pairs:\n", " calc[p] = p[0] * p [1]\n", "\n", "print(calc)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Обратите внимание: если бы `pairs` был списком списков, а не списком кортежей, ничего бы не получилось, так как списки не могут быть ключами словарей (списки, в отличае от кортежей, могут изменяться)." ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.5.2" } }, "nbformat": 4, "nbformat_minor": 2 }