{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Python для сбора и анализа данных\n", "\n", "*Алла Тамбовцева, НИУ ВШЭ*\n", "\n", "## Семинар 3: условные конструкции и цикл `while`" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Задача 1\n", "Напишите программу, которая просит пользователя ввести положительное число, и если пользователь вводит положительное число, выводит на экран сообщение \"Молодец!\", если нет – \"Это не положительное число.\".\n", "\n", "Считайте, что пользователь в любом случае вводит числа, а не какой-то текст." ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "4\n", "Молодец!\n" ] } ], "source": [ "# решение базовое – по условию\n", "\n", "q = float(input())\n", "if q > 0:\n", " print(\"Молодец!\")\n", "else:\n", " print(\"Это не положительное число.\")" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "-abc\n", "X не является числом!\n" ] } ], "source": [ "# решение продвинутое – допускаем, что \n", "# с клавиатуры может быть введён текст,\n", "# который невозможно превратить в число\n", "# используем только if-else, исключения с try-except \n", "# пока не трогаем\n", "# допускаю, что код можно сделать более компактным \n", "# и эффективным, но в данной версии проще проследить \n", "# пошаговую логику решения\n", "\n", "x = input()\n", "if x.startswith(\"-\"):\n", " z = x[1:]\n", " if z.isdigit():\n", " print(\"Это не положительное число.\")\n", " else:\n", " if z.count(\".\") == 1:\n", " y = z.replace(\".\", \"\")\n", " if y.isdigit():\n", " print(\"Это не положительное число.\")\n", " else:\n", " print(\"X не является числом!\")\n", " else:\n", " print(\"X не является числом!\")\n", "else:\n", " if x.isdigit():\n", " t = int(x)\n", " if t > 0:\n", " print(\"Молодец!\")\n", " else:\n", " print(\"Это не положительное число.\") \n", " else:\n", " if x.count(\".\") == 1:\n", " y = x.replace(\".\", \"\")\n", " if y.isdigit():\n", " t = float(x)\n", " if t > 0:\n", " print(\"Молодец!\")\n", " else:\n", " print(\"Это не положительное число.\")\n", " else:\n", " print(\"X не является числом!\")\n", " else:\n", " print(\"X не является числом!\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Задача 2\n", "\n", "Пользователь вводит с клавиатуры два числа через пробел. Напишите код, который возвращает максимальное из двух введенных значений. \n", "\n", "**Пример**\n", "\n", "Ввод: \n", "\n", " Введите два числа: 5.7 8\n", " \n", "Вывод: \n", "\n", " 8.0" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Введите два числа: 4 6.7\n", "6.7\n" ] } ], "source": [ "# решение 1 – с if-else\n", "\n", "inp = input(\"Введите два числа: \")\n", "L = inp.split()\n", "a, b = L # a = L[0] b = L[1]\n", "x1 = float(a)\n", "x2 = float(b)\n", "\n", "if x1 > x2:\n", " print(x1)\n", "else:\n", " print(x2)" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Введите два числа: 6.5 7\n", "7.0\n" ] } ], "source": [ "# решение 2 – без if-else\n", "\n", "inp = input(\"Введите два числа: \")\n", "L = inp.split()\n", "numbers = [float(i) for i in L]\n", "print(max(numbers))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Задача 3\n", "\n", "Дан список `N` из целых чисел. Напишите код, который делает следующее: выводит каждый элемент списка на экран и для каждого элемента либо выводит комментарий \"Это чётное число\", либо комментарии \"Это нечётное число\".\n", "\n", "*Подсказка:* оператор для нахождения остатка от деления – это `%`." ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "2 Это чётное число\n", "4 Это чётное число\n", "7 Это нечётное число\n", "1 Это нечётное число\n", "4 Это чётное число\n", "5 Это нечётное число\n", "11 Это нечётное число\n", "10 Это чётное число\n" ] } ], "source": [ "N = [2, 4, 7, 1, 4, 5, 11, 10]\n", "\n", "for i in N:\n", " if i % 2 == 0:\n", " print(i, \"Это чётное число\")\n", " else:\n", " print(i, \"Это нечётное число\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Задача 4\n", "\n", "У питона есть набор любимых чисел.\n", "\n", " favorites = [3, 7, 11, 23, 18, 48, 81]\n", "\n", "Напишите программу, которая просит пользователя ввести целое число, и если оно нравится питону, на экран будет выводиться сообщение: \"Мое любимое число!\", если нет ‒ \"Эх, ну почему?\"." ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "11\n", "Мое любимое число!\n" ] } ], "source": [ "favorites = [3, 7, 11, 23, 18, 48, 81]\n", "\n", "n = int(input())\n", "if n in favorites:\n", " print(\"Мое любимое число!\")\n", "else:\n", " print(\"Эх, ну почему?\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Задача 5\n", "Напишите программу, которая запрашивает у пользователя пароль, и далее:\n", "\n", "* если пароль верный, выводит на экран сообщение \"Login success\".\n", "* если пароль неверный, выводит на экран сообщение \"Incorrect password, try again!\" до тех пор, пока пользователь не введет верный пароль." ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Enter your password: hsepa\n", "Incorrect password, try again!\n", "Enter your password: hse\n", "Incorrect password, try again!\n", "Enter your password: hsepassowrd\n", "Incorrect password, try again!\n", "Enter your password: hsepassword\n", "Login success\n" ] } ], "source": [ "# вариант 1 – классический while\n", "\n", "password = \"hsepassword\"\n", "attempt = input(\"Enter your password: \")\n", "\n", "while attempt != password:\n", " print(\"Incorrect password, try again!\")\n", " attempt = input(\"Enter your password: \")\n", "print(\"Login success\")" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Enter your password: hs\n", "Incorrect password, try again!\n", "Enter your password: hsepassword\n", "Login success\n" ] } ], "source": [ "# вариант 2 – while True\n", "\n", "password = \"hsepassword\"\n", "attempt = input(\"Enter your password: \")\n", "\n", "while True:\n", " if password == attempt:\n", " break \n", " else:\n", " print(\"Incorrect password, try again!\")\n", " attempt = input(\"Enter your password: \")\n", "print(\"Login success\")" ] } ], "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 }