{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "## Основы программирования в Python\n", "\n", "*Алла Тамбовцева, НИУ ВШЭ*\n", "\n", "## Семинар 3: решения" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Часть 1: повторение `.split()` и `.join()`" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Задача 1\n", "\n", "Напишите программу, которая запрашивает у пользователя его фамилию, имя, отчество, введенные в одну строчку через пробел, и выводит на экран сообщения:\n", "\n", " Ваша фамилия: фамилия\n", " Ваше имя: имя\n", " Ваше отчество: отчество\n", "\n", "**Пример:**\n", "\n", "*Входные данные:*\n", "\n", " Введите Ваши ФИО: Тамбовцева Алла Андреевна\n", "\n", "*Выходные данные:*\n", "\n", " Ваша фамилия: Тамбовцева\n", " Ваше имя: Алла\n", " Ваше отчество: Андреевна" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Введите Ваши ФИО: Тамбовцева Алла Андреевна\n", "Ваша фамилия: Тамбовцева\n", "Ваше имя: Алла\n", "Ваше отчество: Андреевна\n" ] } ], "source": [ "fio = input(\"Введите Ваши ФИО: \")\n", "fio_list = fio.split()\n", "f, i, o = fio_list # множественное присваивание\n", "print(\"Ваша фамилия:\", f)\n", "print(\"Ваше имя:\", i)\n", "print(\"Ваше отчество:\", o)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Задача 2\n", "\n", "Напишите программу, которая берет строку \"1; 2; 3; 100\" и возвращает:\n", "\n", "* список из целых чисел\n", "* список из чисел с плавающей точкой" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[1, 2, 3, 100]" ] }, "execution_count": 2, "metadata": {}, "output_type": "execute_result" } ], "source": [ "s = \"1; 2; 3; 100\"\n", "s_list = s.split(\";\")\n", "int_nums = []\n", "for i in s_list:\n", " num = int(i)\n", " int_nums.append(num)\n", "int_nums" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Или более компактно и эффективно, используя списковые включения:" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[1, 2, 3, 100]" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "s = \"1; 2; 3; 100\"\n", "s_list = s.split(\";\")\n", "int_nums = [int(i) for i in s_list]\n", "int_nums" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "То же самое, но для чисел с плавающей точкой:" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[1.0, 2.0, 3.0, 100.0]" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "s = \"1; 2; 3; 100\"\n", "s_list = s.split(\";\")\n", "f_nums = []\n", "for i in s_list:\n", " num = float(i)\n", " f_nums.append(num)\n", "f_nums" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Через списковые включения:" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[1.0, 2.0, 3.0, 100.0]" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "s = \"1; 2; 3; 100\"\n", "s_list = s.split(\";\")\n", "f_nums = [float(i) for i in s_list]\n", "f_nums" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Задача 3\n", "\n", "Напишите программу, которая запрашивает у пользователя номер мобильного телефона, введенный через дефис, а возвращает номер, записанный без дефисов и пробелов.\n", "\n", "*Входные данные:*\n", "\n", " 8-900-123-45-67\n", "\n", "*Выходные данные:*\n", "\n", " 89001234567" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "8-900-123-45-67\n", "89001234567\n" ] } ], "source": [ "tel = input()\n", "tel_list = tel.split(\"-\")\n", "newtel = \"\".join(tel_list)\n", "print(newtel)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Задача 4\n", "\n", "Напишите программу, которая принимает на вход список слов такого вида:\n", "\n", " words = [\"Speak \",\"to\", \"me \", \"of\", \"Florence\" ,\"And \", \"of\", \"the\", \"Renaissance\"]\n", "\n", "а возвращает список\n", "\n", " words_clean = [\"speak\", \"to\", \"me\", \"of\", \"florence\", \"and\", \"of\", \"the\", \"renaissance\"]\n", "\n", "Другими словами, программа убирает пробелы в словах и приводит все слова к нижнему регистру.\n", "\n", "**Подсказка:** запросите `help()` по методам `.strip()` и `.lower()`." ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [], "source": [ "words = [\"Speak \",\"to\", \"me \", \"of\", \n", " \"Florence\" ,\"And \", \"of\", \"the\", \"Renaissance\"]" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "['speak', 'to', 'me', 'of', 'florence', 'and', 'of', 'the', 'renaissance']" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "words_clean = []\n", "for w in words:\n", " low = w.lower()\n", " stripped = low.strip()\n", " words_clean.append(stripped)\n", "words_clean" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Или совсем компактный вариант, используя списковые включения (да-да, методы можно применять, «наслаивая» друг на друга, то есть ставя точку и добавляя новый метод)." ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "['speak', 'to', 'me', 'of', 'florence', 'and', 'of', 'the', 'renaissance']" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "words_clean = [w.lower().strip() for w in words_clean]\n", "words_clean" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Часть 2: условные конструкции" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Задача 1\n", "Напишите программу, которая просит пользователя ввести положительное число, и если пользователь вводит положительное число, выводит на экран сообщение \"Молодец!\", если нет – \"Это не положительное число.\".\n", "\n", "Считайте, что пользователь в любом случае вводит числа, а не какой-то текст." ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Введите положительное число: 6\n", "Молодец!\n" ] } ], "source": [ "n = float(input(\"Введите положительное число: \"))\n", "if n > 0:\n", " print(\"Молодец!\")\n", "else:\n", " print(\"Это не положительное число.\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Задача 2\n", "Напишите программу, которая запрашивает у пользователя пароль, и далее:\n", "\n", "* если пароль верный, выводит на экран сообщение \"Login success\".\n", "* если пароль неверный, выводит на экран сообщение \"Incorrect password, try again!\" до тех пор, пока пользователь не введет верный пароль." ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Enter password.hse\n", "Incorrect password, try again!\n", "Enter password.hsep\n", "Incorrect password, try again!\n", "Enter password.hsepassword\n", "Login success.\n" ] } ], "source": [ "password = \"hsepassword\"\n", "\n", "while True:\n", " attempt = input(\"Enter password.\")\n", " if attempt == password:\n", " print(\"Login success.\")\n", " break\n", " else:\n", " print(\"Incorrect password, try again!\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Или без `while True` и `break`:" ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Enter password: hse\n", "Enter password: hsep\n", "Enter password: hsepassword\n", "Login success.\n" ] } ], "source": [ "password = \"hsepassword\"\n", "attempt = input(\"Enter password: \")\n", "\n", "while password != attempt:\n", " attempt = input(\"Enter password: \")\n", "print(\"Login success.\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Задача 3\n", "\n", "У питона есть набор любимых чисел.\n", "\n", " favorites = [3, 7, 11, 23, 18, 48, 81]\n", "\n", "Напишите программу, которая просит пользователя ввести целое число, и если оно нравится питону, на экран будет выводиться сообщение: \"Мое любимое число!\", если нет – \"Эх, ну почему?\"." ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Введите целое число: 7\n", "Моё любимое число!\n" ] } ], "source": [ "favorites = [3, 7, 11, 23, 18, 48, 81]\n", "\n", "k = int(input(\"Введите целое число: \"))\n", "\n", "if k in favorites:\n", " print(\"Моё любимое число!\")\n", "else:\n", " print(\"Эх, ну почему?\")" ] } ], "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 }