{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Программирование для всех\n", "\n", "*Алла Тамбовцева, НИУ ВШЭ*\n", "\n", "## Практикум 1: ввод-вывод и приведение типов" ] }, { "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": 1, "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": 2, "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": [ "### Задание 2\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": 3, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Введите свой рост: 168\n", "Введите свой вес: 60\n", "Индекс массы тела: 21.26.\n" ] } ], "source": [ "# классическое форматирование строк\n", "# %f – float, %.2f – два знака после запятой\n", "\n", "h = float(input(\"Введите свой рост: \")) / 100\n", "w = float(input(\"Введите свой вес: \"))\n", "bmi = w / h ** 2\n", "\n", "print(\"Индекс массы тела: %.2f.\" % bmi) " ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Индекс массы тела: 21.258503401360546\n" ] } ], "source": [ "# f-strings\n", "# без округления\n", "\n", "print(f\"Индекс массы тела: {bmi}\") " ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Индекс массы тела: 21.26\n" ] } ], "source": [ "# f-strings\n", "# с округлением\n", "# f-строки умеют еще и простые функции обрабатывать\n", "\n", "print(f\"Индекс массы тела: {round(bmi, 2)}\") " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Задание 3\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": 6, "metadata": {}, "outputs": [], "source": [ "import ipywidgets as widgets" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "428829283ca0418088f390803aa6eb20", "version_major": 2, "version_minor": 0 }, "text/plain": [ "IntText(value=165, description='Height:')" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "1a080b77b898441e96bf562d8ee048f4", "version_major": 2, "version_minor": 0 }, "text/plain": [ "IntSlider(value=60, description='Weight:', max=250)" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# value: значение по умолчанию, если ничего не выбрано\n", "# description: текст с комментарием, как в input()\n", "# функция display() показывает виджет на экране\n", "\n", "height = widgets.IntText(\n", " value=165, \n", " description='Height:'\n", ")\n", "\n", "weight = widgets.IntSlider(\n", " value=60,\n", " min=0,\n", " max=250,\n", " step=1,\n", " description='Weight:',\n", " orientation='horizontal'\n", ")\n", "\n", "display(height)\n", "display(weight)" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Индекс массы тела: 21.97.\n" ] } ], "source": [ "# сами w и h – это виджеты\n", "# из них извлекаем значения, извлеченные пользователем,\n", "# забираем их через .value и используем далее\n", "\n", "BMI = weight.value / (height.value / 100) ** 2\n", "print(\"Индекс массы тела: %.2f.\" % BMI) " ] } ], "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 }