{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Программирование для всех (основы работы с Python)\n", "\n", "*Алла Тамбовцева, НИУ ВШЭ*\n", "\n", "## Набор задач 3 по темам: списки, цикл `for`, методы на строках" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Задача 1\n", "\n", "Даны два списка `a` и `b` (см. ниже).\n", " \n", "1. Выведите на экран первый элемент списка `a`, третий элемент списка `a`, последний элемент списка `a`.\n", "2. Добавьте в конец списка `b` элемент 7.\n", "3. Замените пятый элемент списка `a` на число 8.\n", "4. Создайте список `merged`, который включает в себя все элементы списка `a` и списка `b`.\n", "5. Создайте новый список `с`, который получается заменой последнего элемента списка `a` на число 100. Сам список `a` измениться не должен!" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "a = [1, 0, 9, 12, 18, 34, 89, 91, 33, 127]\n", "b = [2, 8, 9, 11, 76, 25, 44]" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "1 9 127\n" ] } ], "source": [ "# 1\n", "\n", "print(a[0], a[2], a[-1])" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[2, 8, 9, 11, 76, 25, 44, 7]\n" ] } ], "source": [ "# 2 - вариант 1\n", "\n", "b.append(7)\n", "print(b)" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[2, 8, 9, 11, 76, 25, 44, 7, 7]\n" ] } ], "source": [ "# 2 - вариант 2 (но более технично с .append)\n", "\n", "b = b + [7]\n", "print(b)" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[1, 0, 9, 12, 8, 34, 89, 91, 33, 127]\n" ] } ], "source": [ "# 3\n", "\n", "a[4] = 8\n", "print(a)" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[1, 0, 9, 12, 8, 34, 89, 91, 33, 127, 2, 8, 9, 11, 76, 25, 44, 7, 7]\n" ] } ], "source": [ "# 4\n", "\n", "merged = a + b\n", "print(merged)" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[1, 0, 9, 12, 8, 34, 89, 91, 33, 127] [1, 0, 9, 12, 8, 34, 89, 91, 33, 100]\n" ] } ], "source": [ "# 5 – вариант 1\n", "\n", "c = a.copy()\n", "c[-1] = 100\n", "print(a, c)" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[1, 0, 9, 12, 8, 34, 89, 91, 33, 127] [1, 0, 9, 12, 8, 34, 89, 91, 33, 100]\n" ] } ], "source": [ "# 5 – вариант 2\n", "\n", "c = a[:]\n", "c[-1] = 100\n", "print(a, c)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Задача 2\n", "\n", "Есть список имен:" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [], "source": [ "girls = [\"Иветта\", \"Виолетта\", \"Кассандра\", \"Вирджиния\", \"Амелия\", \"Розамунда\", \"Янина\", \"Беатриса\"]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Используя список `girls`, выведите на экран следующие списки:\n", "\n", " [\"Виолетта\", \"Кассандра\", \"Вирджиния\", \"Амелия\"]\n", " [\"Вирджиния\", \"Амелия\", \"Розамунда\", \"Янина\", \"Беатриса\"]\n", " [\"Иветта\", \"Виолетта\", \"Вирджиния\", \"Амелия\"]\n", " [\"Кассандра\", \"Амелия\", \"Розамунда\"]" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "['Виолетта', 'Кассандра', 'Вирджиния', 'Амелия']\n", "['Вирджиния', 'Амелия', 'Розамунда', 'Янина', 'Беатриса']\n", "['Иветта', 'Виолетта', 'Вирджиния', 'Амелия']\n", "['Кассандра', 'Амелия', 'Розамунда']\n" ] } ], "source": [ "print(girls[1:5])\n", "print(girls[3:])\n", "print(girls[0:2] + girls[3:5])\n", "print(girls[2:3] + girls[4:6])" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "['Кассандра', 'Амелия', 'Розамунда']\n" ] } ], "source": [ "# менее красивый вариант для последнего\n", "print([girls[2]] + girls[4:6])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Задача 3\n", "\n", "Дан список `L`:" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [], "source": [ "L = [4, 8, 9, 0, 10, 12, 56, 6, 7]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Напишите программу, которая запрашивает у пользователя с клавиатуры индекс элемента в списке `L`, новое значение этого элемента, а потом заменяет старое значение новым. Список `L` должен измениться.\n", "\n", "**Пример:** пользователь ввел числа 3 и 100, и список `L` стал таким:\n", "\n", " L = [4, 8, 9, 100, 10, 12, 56, 6, 7]" ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Введите индекс: 3\n", "Введите новое значение: 100\n", "[4, 8, 9, 100.0, 10, 12, 56, 6, 7]\n" ] } ], "source": [ "i = int(input(\"Введите индекс: \"))\n", "new = float(input(\"Введите новое значение: \")) # допустим, от пользователя ждем только числа\n", "\n", "L[i] = new\n", "print(L)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Задача 4\n", "\n", "Напишите программу, которая запрашивает у пользователя с клавиатуры целое число $n$ и выводит на экран сумму квадратов целых чисел от 0 до $n$. В процессе решения списки создавать нельзя!" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Enter a number: 4\n", "30\n" ] } ], "source": [ "n = int(input(\"Enter a number: \"))\n", "Sum = 0\n", "\n", "for i in range(1, n + 1):\n", " Sum = Sum + i ** 2\n", "print(Sum)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Задача 5\n", "\n", "Напишите программу, которая берет строку `\"1; 2; 3; 100\"` и возвращает:\n", "\n", "* список из целых чисел;\n", "* список из чисел с плавающей точкой." ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[1, 2, 3, 100]\n" ] } ], "source": [ "# целые числа\n", "\n", "s = \"1; 2; 3; 100\"\n", "nums_raw = s.split(\"; \")\n", "nums = []\n", "\n", "for i in nums_raw:\n", " nums.append(int(i))\n", "print(nums)" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[1, 2, 3, 100]\n" ] } ], "source": [ "# вариант с созданием промежуточной переменной\n", "\n", "s = \"1; 2; 3; 100\"\n", "nums_raw = s.split(\"; \")\n", "nums = []\n", "\n", "for i in nums_raw:\n", " new = int(i)\n", " nums.append(new)\n", "print(nums)" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[1.0, 2.0, 3.0, 100.0]\n" ] } ], "source": [ "# числа с плавающей точкой\n", "\n", "s = \"1; 2; 3; 100\"\n", "nums_raw = s.split(\"; \")\n", "nums = []\n", "\n", "for i in nums_raw:\n", " nums.append(float(i))\n", "print(nums)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Задача 6\n", "\n", "Напишите программу, которая принимает на вход список слов такого вида:" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [], "source": [ "words = [\"Talk \",\"to\", \"me \", \"of\", \"Florence\" ,\n", " \"And \", \"of\", \"the\", \"Renaissance\"]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "а возвращает список:\n", "\n", " words_clean = [\"talk\", \"to\", \"me\", \"of\", \"florence\", \"and\", \"of\", \"the\", \"renaissance\"]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Другими словами, программа убирает пробелы в словах и приводит все слова к нижнему регистру.\n", "\n", "**Подсказка:** запросите `help()` по методам `.strip()` и `.lower()`." ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "['talk', 'to', 'me', 'of', 'florence', 'and', 'of', 'the', 'renaissance']\n" ] } ], "source": [ "# методы можно «наслаивать» друг на друга\n", "# применять к предыдущему результату\n", "\n", "words_clean = []\n", "\n", "for w in words:\n", " words_clean.append(w.strip().lower())\n", " \n", "print(words_clean)" ] } ], "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 }