{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Основы программирования в Python\n", "\n", "*Алла Тамбовцева, НИУ ВШЭ*\n", "\n", "\n", "## Семинар 1\n", "\n", "*Примечание: под программой в заданиях подразумевается просто блок работающего кода, который выполняет нужную задачу.* \n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Задание 0 (вычислительное)\n", "\n", "Посчитайте:\n", "\n", "* $\\log(25)$, $\\log(\\exp(3))$, $\\log_{10}1000$\n", "* $\\pi^3$, $123^4$ \n", "* $\\sqrt{459}$" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "3.2188758248682006\n", "3.0\n", "2.9999999999999996\n", "3.0\n", "31.006276680299816\n", "228886641\n", "21.42428528562855\n", "21.42428528562855\n" ] } ], "source": [ "import math\n", "\n", "# пункт 1\n", "print(math.log(25))\n", "print(math.log(math.exp(3)))\n", "print(math.log(1000, 10)) # на самом деле ровно 3 – опять история про формат float\n", "print(math.log10(1000)) # альтернатива строке выше\n", "\n", "# пункт 2\n", "print(math.pi ** 3)\n", "print(123 ** 4)\n", "\n", "# пункт 3\n", "print(math.sqrt(459))\n", "print(459 ** 0.5) # альтернатива коду выше" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Задание 1 (стартовое)\n", "\n", "В переменных `a` и `b` хранятся некоторые числа. Напишите код, который бы менял значения переменных местами. Пример:" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "# до\n", "a = 2\n", "b = 5" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "5\n", "2\n" ] } ], "source": [ "# после\n", "print(a)\n", "print(b)" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "5\n", "2\n" ] } ], "source": [ "c = a\n", "a = b\n", "b = c\n", "print(a)\n", "print(b)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Еще в Python можно решить эту задачу через множественное присваивание, без создания третьей переменной:" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "5 2\n" ] } ], "source": [ "a = 2\n", "b = 5\n", "a, b = b, a\n", "print(a, b)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Задание 2 (экономическое)\n", "\n", "Напишите программу, которая логарифмирует значение ВВП, которое хранится в переменной `gdp` и округляет результат до второго знака после запятой." ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "15.32" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "gdp = 4500000\n", "log_gdp = round(math.log(gdp), 2) \n", "log_gdp" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Задание 3 (политологическое)\n", "\n", "В переменной `fh` хранится значение индекса политической свободы *Freedom House*, а в переменной `p`\n", "значение индекса *Polity IV*. Напишите программу, которая будет считать индекс *Freedom*:\n", "\n", "$\\text{Freedom} = 0.4 \\cdot \\text{Freedom House} + 0.6 \\cdot \\text{Polity IV}$" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "4.4\n" ] } ], "source": [ "fh = 8\n", "p = 2\n", "Freedom = 0.4 * 8 + 0.6 * 2\n", "print(Freedom)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Задание 4 (весеннее)\n", "\n", "С приходом весны питон решил каждый день выползать погреться на солнышко. Однако он знал, что солнце весной довольно активное, и поэтому разработал такую схему: в первый день он греется одну минуту, а в каждый последующий день увеличивает время пребывания на солнце на 3 минуты. Напишите код, который позволит вычислять, сколько минут питон будет тратить на солнечные ванны в некоторый выбранный день.\n", "\n", "*Внимание:* ваш код должен выводить номер дня и число минут. Использовать циклы нельзя, в задании предполагается многократный запуск ячеек с кодом." ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [], "source": [ "# решение 1 – с многократным запуском следующей ячейки\n", "i = 1\n", "day = 1" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "2 4\n" ] } ], "source": [ "i = i + 1\n", "day = day + 3\n", "print(i, day)" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Enter day number: 5\n", "13\n" ] } ], "source": [ "# решение 2 – запрашиваем номер дня у пользователя и выводим результат – число минут\n", "n = int(input(\"Enter day number: \"))\n", "res = 1 + 3 * (n - 1)\n", "print(res)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Задание 5 (приветственное)\n", "\n", "Напишите программу, которая запрашивает у пользователя имя и фамилию и выводит на экран сообщение " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "```Имя Фамилия```, добро пожаловать!" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Enter name: Alla\n", "Enter surname: T\n" ] } ], "source": [ "name = input(\"Enter name: \")\n", "surname = input(\"Enter surname: \")" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Alla T, добро пожаловать!\n" ] } ], "source": [ "# решение 1 – без форматирования строк, но с выбором разделителя\n", "print(name, \" \", surname, \", добро пожаловать!\", sep=\"\")" ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Alla T, добро пожаловать!\n" ] } ], "source": [ "# решение 2 – с f-строками\n", "print(f\"{name} {surname}, добро пожаловать!\")" ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Alla T, добро пожаловать!\n" ] } ], "source": [ "# решение 3 – с «классическим» форматированием строк\n", "print(\"%s %s, добро пожаловать!\" %(name, surname))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Задание 6 (кулинарно-политологическое)\n", "\n", "Перед вами шаблон рецепта жизни политолога на факультете социальных наук:" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Рецепт\n", "\n", "`название курса`: 200 г\n", "\n", "`название курса`: 300 г\n", "\n", "`название курса`: 100 г\n", "\n", "Приправить политической историей. Добавить математические модели по вкусу." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Напишите код, который делает следующее: запрашивает у пользователя названия курсов (три отдельных вопроса), а потом подставляет их в имеющийся шаблон.\n", "\n", "*Пример:*" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "```\n", "Введите название первого курса: политическая теория)\n", "Введите название второго курса: история политических учений\n", "Введите название третьего курса: математика\n", "```" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "```\n", "Рецепт\n", "\n", "политическая теория : 200 г\n", "\n", "история политических учений: 300 г\n", "\n", "математика: 100 г\n", "\n", "Приправить политической историей. Добавить математические модели по вкусу.```" ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Введите название первого курса: политическая теория\n", "Введите название второго курса: история полит учений\n", "Введите название третьего курса: математика\n", "Рецепт \n", " политическая теория: 200 г \n", " история полит учений: 300 г \n", " математика: 100 г \n", " Приправить политической историей. Добавить математические модели по вкусу.\n" ] } ], "source": [ "# помощью f-strings \n", "# символ \\n обеспечивает переход на новую строку при выводе текста на экран\n", "# существует аналогичный символ \\t - отвечает за табуляцию\n", "\n", "# обратный слэш в конце первой строки позволяет перенести часть строки на\n", "# следующую так, чтобы Python понимал, что это продолжение и не выдавал\n", "# ошибку SyntaxError: EOL while scanning string literal\n", "# (можете убрать его и убедиться, что вторая строка перестанет быть красной\n", "# и всплывет указанная ошибка)\n", "\n", "c1 = input(\"Введите название первого курса: \")\n", "c2 = input(\"Введите название второго курса: \")\n", "c3 = input(\"Введите название третьего курса: \")\n", "\n", "rec = f\"Рецепт \\n {c1}: 200 г \\n {c2}: 300 г \\n {c3}: 100 г \\n \\\n", "Приправить политической историей. Добавить математические модели по вкусу.\"\n", "\n", "print(rec)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Задание 7 (кулинарно-математическое)\n", "\n", "У вас есть шаблон, похожий на шаблон рецепта из предыдущей задачи: " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "```\n", "Рецепт\n", "\n", "политическая теория : __ кг\n", "\n", "история политических учений: __ кг\n", "\n", "математика: __ кг\n", "\n", "Приправить политической историей. Добавить математические модели по вкусу.```" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Напишите программу, которая запрашивает у пользователя три значения массы ингредиентов в граммах (три вопроса), переводит их в килограммы и подставляет полученные значения в шаблон так, чтобы числа содержали ровно 3 знака после запятой." ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Введите значение массы в граммах: 200\n", "Введите значение массы в граммах: 300\n", "Введите значение массы в граммах: 400\n", "Рецепт \n", " политическая теория : 0.2 кг \n", " история политических учений: 0.3 кг \n", " математика: 0.4 кг \n", " Приправить политической историей. Добавить математические модели по вкусу.\n" ] } ], "source": [ "m1 = int(input(\"Введите значение массы в граммах: \"))\n", "m2 = int(input(\"Введите значение массы в граммах: \"))\n", "m3 = int(input(\"Введите значение массы в граммах: \"))\n", "\n", "r = f\"Рецепт \\n \\\n", "политическая теория : {m1/1000} кг \\n \\\n", "история политических учений: {m2/1000} кг \\n \\\n", "математика: {m3/1000} кг \\n \\\n", "Приправить политической историей. Добавить математические модели по вкусу.\" \n", "\n", "print(r)" ] } ], "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.6.8" } }, "nbformat": 4, "nbformat_minor": 2 }