{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Python для сбора и анализа данных\n", "\n", "*Алла Тамбовцева, НИУ ВШЭ*\n", "\n", "## Семинар 1: ввод-вывод и приведение типов\n", "\n", "### Задание 0\n", "\n", "Посчитайте:\n", "\n", "* $\\log(25)$;\n", "* $\\log_{10}(1000)$;\n", "* $\\pi^3$;\n", "* $\\sqrt{459}$." ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "3.2188758248682006\n", "2.9999999999999996\n", "3.0\n", "31.006276680299816\n", "21.42428528562855\n" ] } ], "source": [ "import math\n", "\n", "# 1\n", "print(math.log(25))\n", "\n", "# 2\n", "\n", "print(math.log(1000, 10))\n", "print(math.log10(1000)) # более точный ответ\n", "\n", "# 3\n", "\n", "print(math.pi ** 3)\n", "\n", "# 4\n", "\n", "print(math.sqrt(459))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Задание 1\n", "\n", "В переменных `a` и `b` хранятся некоторые числа. Напишите код, который бы менял значения переменных местами. Создавать вспомогательные переменные можно.\n", "\n", "*Пример:*" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "# до\n", "a = 2\n", "b = 5" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "5\n", "2\n" ] } ], "source": [ "# после\n", "print(a)\n", "print(b)" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "5\n", "2\n" ] } ], "source": [ "# решение 1 (классическое)\n", "a = 2\n", "b = 5\n", "\n", "c = a\n", "a = b\n", "b = c\n", "\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": [ "# решение 2 (множественное присваивание)\n", "a = 2\n", "b = 5\n", "a, b = b, a\n", "\n", "print(a)\n", "print(b)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Задание 3\n", "\n", "Напишите программу, которая запрашивает у пользователя с клавиатуры его рост в сантиметрах, его вес в килограммах (каждый показатель – с новой строки, в новом запросе) и выводит на экран сообщение вида:\n", "\n", " Индекс массы тела: [значение].\n", "\n", "где вместо `[значение]` подставляется посчитанное значение индекса массы тела.\n", "\n", "Индекс массы тела считается так:\n", "\n", "$$\\text{BMI}=\\frac{\\text{m}}{\\text{h}^2},$$\n", "\n", "где $\\text{m}$ – масса тела в килограммах, $\\text{h}$ – рост в метрах." ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Введите свой рост: 168\n", "Введите свой вес: 54\n", "Индекс массы тела: 19.13265306122449 .\n" ] } ], "source": [ "# без форматирования – результат не очень красивый\n", "\n", "height = int(input(\"Введите свой рост: \"))\n", "weight = int(input(\"Введите свой вес: \"))\n", "bmi = weight / (height / 100) ** 2\n", "\n", "print(\"Индекс массы тела: \", bmi, \".\")" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Индекс массы тела: 19.13.\n" ] } ], "source": [ "# без форматирования, но с другим разделителем + с округлением\n", "\n", "print(\"Индекс массы тела: \", round(bmi, 2), \".\", sep = \"\")" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Индекс массы тела: 19.13265306122449.\n" ] } ], "source": [ "# f-strings\n", "\n", "print(f\"Индекс массы тела: {bmi}.\") " ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "A * B = 48\n" ] } ], "source": [ "# f-strings ещё умеют так\n", "\n", "print(f\"A * B = {6 * 8}\") " ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Индекс массы тела: 19.132653.\n" ] } ], "source": [ "# классическое форматирование строк\n", "# %f – float, %i – integer, %s – string\n", "\n", "print(\"Индекс массы тела: %f.\" % bmi) " ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Индекс массы тела: 19.133.\n" ] } ], "source": [ "# а так – округляем при выводе на экран до 3го знака\n", "\n", "print(\"Индекс массы тела: %.3f.\" % bmi)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Задание 4\n", "\n", "Выполните задание 3, но вместо обычного запроса с клавиатуры используйте виджеты: \n", "\n", "* поле для ввода целого числа для роста в сантиметрах;\n", "* слайдер с целыми числами от 0 до 250 с шагом 1 для веса.\n", "\n", "Примеры виджетов можно посмотреть [здесь](https://ipywidgets.readthedocs.io/en/latest/examples/Widget%20List.html)." ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [], "source": [ "import ipywidgets as widgets" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "694534b0f63d46448ba6ad60dcabac76", "version_major": 2, "version_minor": 0 }, "text/plain": [ "IntText(value=170, description='Рост:')" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "55c30ba323a64d26921b9b4ea955dd90", "version_major": 2, "version_minor": 0 }, "text/plain": [ "IntSlider(value=60, description='Вес: ', max=250)" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "h = widgets.IntText(\n", " value=170,\n", " description='Рост:',\n", " disabled=False\n", ")\n", "\n", "m = widgets.IntSlider(min = 0, max = 250, value = 60, step = 1, \n", " description = \"Вес: \")\n", "\n", "display(h)\n", "display(m)" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Индекс массы тела: 19.13.\n" ] } ], "source": [ "bmi = m.value / (h.value / 100) ** 2\n", "print(f\"Индекс массы тела: {round(bmi, 2)}.\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Задание 5\n", "\n", "В Светлогорске, в музее Мирового океана есть прекрасные весы, которые позволяют узнать свой вес, измеренный в селёдках, в китах, в креветках и в других морских обитателях. Напишите код, который запрашивает у пользователя с клавиатуры его вес в килограммах (целое или дробное число) и выводит на экран его вес в селёдках, округленный до целого числа. Считайте, что средний вес селедки равен 350 граммам.\n", "\n", "**Пример исполнения кода:**\n", "\n", "Ввод:\n", "\n", " Enter your weight in kg: 56\n", "Вывод: \n", "\n", " Your weight is 160 herrings." ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Enter your weight in kg: 54\n", "Your weight is 154 herrings.\n" ] } ], "source": [ "W = int(input(\"Enter your weight in kg: \"))\n", "print(f\"Your weight is {round(W * 1000 / 350)} herrings.\") " ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "fa827b46c48740e6bd0fdade73534db3", "version_major": 2, "version_minor": 0 }, "text/plain": [ "IntText(value=0, description='Вес:')" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "ww = widgets.IntText(\n", " value=0,\n", " description='Вес:',\n", " disabled=False\n", ")\n", "display(ww)" ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Your weight is 154 herrings.\n" ] } ], "source": [ "print(f\"Your weight is {round(ww.value * 1000 / 350)} herrings.\") " ] } ], "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 }