{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Программирование для всех (основы работы с Python)\n", "\n", "*Алла Тамбовцева, НИУ ВШЭ*\n", "\n", "## Практикум 4: кортежи и словари" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Задача 1\n", "\n", "Дан словарь с названиями разных рептилий:" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "rept = {\"python\" : \" питон\", \n", " \"anaconda\" : \"анаконда\", \n", " \"tortoize\" : \" черепаха\" }" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "* Добавьте в словарь пару \"snake\" – \" змея\".\n", "* Исправьте ключ \"tortoize\" на правильный \"tortoise\".\n", "* Для всех слов в словаре выведите на экран сообщения вида\n", "\n", " Питон по-английски будет python." ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Питон по-английски будет python.\n", "Анаконда по-английски будет anaconda.\n", "Змея по-английски будет snake.\n", "Черепаха по-английски будет tortoise.\n" ] } ], "source": [ "# добавляем запись\n", "\n", "rept[\"snake\"] = \"змея\"\n", "\n", "# сохраняем значение и удаляем запись через .pop()\n", "# добавляем запись с новым ключом и старым значением\n", "\n", "value = rept.pop(\"tortoize\")\n", "rept[\"tortoise\"] = value\n", "\n", "# выводим строки на экран\n", "\n", "for en, ru in rept.items():\n", " print(ru.strip().capitalize(), \"по-английски будет\", en+\".\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Задача 2\n", "\n", "В списке `cnt` хранятся названия стран, а в списке `fh` – значения индекса Freedom House для этих стран. Создайте словарь, используя в качестве ключей названия стран, а в качестве значений – значения индекса." ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [], "source": [ "cnt = [\"Andorra\", \"Belarus\", \"Denmark\", \n", " \"Kenya\", \"Jamaica\", \"Romania\"]\n", "fh = [1.0, 6.0, 1.0, 4.0, 2.5, 2.0]" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "{'Andorra': 1.0, 'Belarus': 6.0, 'Denmark': 1.0, 'Kenya': 4.0, 'Jamaica': 2.5, 'Romania': 2.0}\n" ] } ], "source": [ "# с zip()\n", "\n", "info = dict(zip(cnt, fh))\n", "print(info)" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "{'Andorra': 1.0, 'Belarus': 6.0, 'Denmark': 1.0, 'Kenya': 4.0, 'Jamaica': 2.5, 'Romania': 2.0}\n" ] } ], "source": [ "# без zip()\n", "\n", "info2 = {}\n", "for i in range(len(cnt)):\n", " info2[cnt[i]] = fh[i]\n", "print(info2)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Задача 3\n", "\n", "Дан список, состоящий из пар чисел:" ] }, { "cell_type": "code", "execution_count": 7, "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": 8, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "{(2, 4): 8, (4, 6): 24, (0, 1): 0, (5, 2): 10, (9, 1): 9, (3, 8): 24}\n" ] } ], "source": [ "calc = {}\n", "for p in pairs:\n", " calc[p] = p[0] * p[1]\n", "print(calc)" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "ename": "TypeError", "evalue": "unhashable type: 'list'", "output_type": "error", "traceback": [ "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", "\u001b[0;31mTypeError\u001b[0m Traceback (most recent call last)", "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m\u001b[0m\n\u001b[1;32m 7\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 8\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mp\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mpairs\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 9\u001b[0;31m \u001b[0mcalc\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mp\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mp\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m*\u001b[0m \u001b[0mp\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 10\u001b[0m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mcalc\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;31mTypeError\u001b[0m: unhashable type: 'list'" ] } ], "source": [ "# примечание: в качестве ключей словаря могут \n", "# использоваться только неизменямые типы данных\n", "# если бы pairs был списком списков, ничего бы не получилось\n", "\n", "pairs = [[2, 4], [4, 6], [0, 1], [5, 2], [9, 1], [3, 8]]\n", "calc = {}\n", "\n", "for p in pairs:\n", " calc[p] = p[0] * p[1]\n", "print(calc)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Задача 4\n", "\n", "Дан словарь `grades` с оценками студентов за контрольную работу в 5-балльной шкале. Напишите код, который сделает следующее: \n", "\n", "* Выведет на экран имя каждого студента и его оценку (каждый студент – с новой строки).\n", "* Сохранит имена студентов, получивших отличные оценки, в список `excel`.\n", "* Сохранит имена студентов, получивших хорошие оценки, в список `good`.\n", "* Сохранит имена студентов, получивших удовлетворительные оценки, в список `satisf`.\n", "* Сохранит имена студентов, получивших плохие оценки, в список `bad`. " ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [], "source": [ "grades = {'Anna': 4, 'Bob': 3, 'Claire': 5, 'Dick': 2, 'Elena': 5, \n", " 'Fred': 5, 'George': 4, 'Kristina': 3, 'Nick': 2, \n", " 'Ursula': 4, 'Viktor': 5}" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Anna 4\n", "Bob 3\n", "Claire 5\n", "Dick 2\n", "Elena 5\n", "Fred 5\n", "George 4\n", "Kristina 3\n", "Nick 2\n", "Ursula 4\n", "Viktor 5\n", "['Claire', 'Elena', 'Fred', 'Viktor'] ['Anna', 'George', 'Ursula'] ['Bob', 'Kristina'] ['Dick', 'Nick']\n" ] } ], "source": [ "excel = []\n", "good = []\n", "satisf = []\n", "bad = []\n", "\n", "for name, mark in grades.items():\n", " print(name, mark)\n", " if mark == 5:\n", " excel.append(name)\n", " elif mark == 4:\n", " good.append(name)\n", " elif mark == 3:\n", " satisf.append(name)\n", " else:\n", " bad.append(name)\n", "\n", "print(excel, good, satisf, bad)" ] } ], "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.7.4" } }, "nbformat": 4, "nbformat_minor": 2 }