{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Программирование на языке Python для сбора и анализа данных\n", "\n", "*Семинары ведут: Щуров И.В., Будылин Р.Я., НИУ ВШЭ*\n", "\n", "Данный notebook является набором задач по курсу \n", "«Программирование на языке Python для сбора и анализа данных» \n", "(НИУ ВШЭ, 2014-15). Тексты задач взяты с сайта http://informatics.mccme.ru/. \n", "На [странице курса](http://math-info.hse.ru/s15/m) находятся другие материалы.\n", " " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Домашнее задание №2\n", "За разные задачи можно получить разное число баллов. Максимум за ДЗ можно набрать 14 баллов. Вы можете решить больше задач, чем требуется, чтобы набрать 14 баллов, чтобы подстраховаться.\n", "\n", "В задачах **A** и **B** вы можете использовать один из двух подходов к решению: либо использовать продвинутые средства Python для работы со списками, как это обсуждалось на лекции (включая срезы, присваивание срезам, метод `insert()`, функцию `del`), либо решать эти задачу «вручную», то есть пользоваться только присваиванием одного элемента списка другому элементу, добавлением элемента в конец с помощью `append()` и удалением элемента из конца с помощью `pop()`. В первом случае вы получите за эти задачи 1 балл, во втором случае (он технически сложнее и требует некоторых размышлений) — 2 балла.\n", "\n", "При решении задач **A** и **B** на два балла можно использовать один или два раза `split()` (исключительно для получения входного списка) и один раз `join()` для вывода итогового списка (если вы знаете, что это такое).\n", "\n", "### Подсказки\n", "- У срезов и функции `range` бывает третий аргумент, то есть можно сделать не только `A[1:10]`, но и `A[1:10:3]`, а также `range(1,10,3)`. Посмотрите, что получится.\n", "- Чтобы превратить строчку `\"1 2 45 hello\"` в список `['1', '2', '45', 'hello']`, можно использовать метод `split()` строки. Например:" ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "['1', '2', '45', 'hello']" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "s = \"1 2 45 hello\"\n", "s.split()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Ограничения\n", "Во всех задачах **нельзя** использовать функции `sum`, `min`, `max`, а также какие-либо `import`." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### [Задача A](http://informatics.mccme.ru/mod/statements/view3.php?id=16876&chapterid=3169) (1-2 балла)\n", "\n", "
\n", "
\n", "

Дан список целых чисел, число k и значение C. Необходимо вставить в список на позицию с индексом k элемент, равный C, сдвинув все элементы имевшие индекс не менее k вправо.

Посколько при этом количество элементов в списке увеличивается, после считывания списка в его конец нужно будет добавить новый элемент, используя метод `append()`.

Вставку необходимо осуществлять уже в считанном списке, не делая этого при выводе и не создавая дополнительного списка.

\n", "
\n", "
\n", "
\n", " Входные данные\n", "
\n", "

Вводится список чисел. Все числа списка находятся на одной строке. На второй строке вводятся числа k и C.

\n", "
\n", "
\n", "
\n", " Выходные данные\n", "
\n", "

Выведите ответ на задачу.

\n", "
\n", "
Примеры
Входные данные
7 6 5 4 3 2 1\n",
    "2 0\n",
    "
Выходные данные
7 6 0 5 4 3 2 1 \n",
    "
" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### [Задача B](http://informatics.mccme.ru/mod/statements/view3.php?id=16876&chapterid=3168) (1-2 балла)\n", "\n", "
\n", "
\n", "

Дан список из чисел и индекс элемента в списке k. Удалите из списка элемент с индексом k, сдвинув влево все элементы, стоящие правее элемента с индексом k.

\n", "
\n", "
\n", "
\n", " Входные данные\n", "
\n", "

Программа получает на вход список, затем число k. Программа сдвигает все элементы, а после этого удаляет последний элемент списка при помощи метода `pop()`.

Программа должна осуществлять сдвиг непосредственно в списке, а не делать это при выводе элементов. Также нельзя использовать дополнительный список.

\n", "
\n", "
\n", "
\n", " Выходные данные\n", "
\n", "

Выведите ответ на задачу.

\n", "
\n", "
Примеры
Входные данные
7 6 5 4 3 2 1\n",
    "2\n",
    "
Выходные данные
7 6 4 3 2 1 \n",
    "
" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### [Задача C](http://informatics.mccme.ru/mod/statements/view3.php?id=16876&chapterid=3828) (1 балл)\n", "\n", "
\n", "
\n", "

Выведите все элементы списка с четными индексами\n", "(то есть A[0], A[2], A[4], ...).

\n", "

Программа должна быть эффективной и не выполнять лишних действий!

\n", "
\n", "
\n", "
\n", " Входные данные\n", "
\n", "

Вводится список чисел. Все числа списка находятся на одной строке.

\n", "
\n", "
\n", "
\n", " Выходные данные\n", "
\n", "

Выведите ответ на задачу.

\n", "
\n", "
Примеры
Входные данные
1 2 3 4 5\n",
    "
Выходные данные
1 3 5 \n",
    "
" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### [Задача D](http://informatics.mccme.ru/mod/statements/view3.php?id=16876&chapterid=3528) (1 балл)\n", "\n", "
\n", "
\n", "

Даны два целых числа A и B (при этом A≤B). Выведите все числа от A до B включительно.\n", "\n", "

\n", "
\n", "
\n", " Входные данные\n", "
\n", "

Вводятся два целых числа.

\n", "
\n", "
\n", "
\n", " Выходные данные\n", "
\n", "

Выведите ответ на задачу.

\n", "
\n", "
Примеры
Входные данные
1\n",
    "10\n",
    "
Выходные данные
1 2 3 4 5 6 7 8 9 10 \n",
    "
" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### [Задача E](http://informatics.mccme.ru/mod/statements/view3.php?id=16876&chapterid=3539) (2 балла)\n", "\n", "
\n", "
\n", "

Дано 10 целых чисел. Вычислите их сумму. Напишите программу, использующую наименьшее число переменных.

\n", "
\n", "
\n", "
\n", " Входные данные\n", "
\n", "

Вводятся 10 целых чисел. Каждое число вводится в отдельной строке.

\n", "
\n", "
\n", "
\n", " Выходные данные\n", "
\n", "

Выведите ответ на задачу.

\n", "
\n", "
Примеры
Входные данные
0\n",
    "1\n",
    "2\n",
    "3\n",
    "4\n",
    "5\n",
    "6\n",
    "7\n",
    "8\n",
    "9\n",
    "
Выходные данные
45\n",
    "
" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### [Задача F](http://informatics.mccme.ru/mod/statements/view3.php?id=16876&chapterid=3540) (2 балла)\n", "\n", "
\n", "
\n", "

Дано несколько чисел. Вычислите их сумму. Сначала вводите количество чисел N, затем вводится ровно N целых чисел.\n", "Какое наименьшее число переменных нужно для решения этой задачи?

\n", "
\n", "
\n", "
\n", " Входные данные\n", "
\n", "

В первой строке вводится натуральное число N - количество чисел. В следующих N строках вводится по одному целому числу.

\n", "
\n", "
\n", "
\n", " Выходные данные\n", "
\n", "

Выведите ответ на задачу.

\n", "
\n", "
Примеры
Входные данные
2\n",
    "235\n",
    "56\n",
    "\n",
    "
Выходные данные
291\n",
    "
" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### [Задача G](http://informatics.mccme.ru/mod/statements/view3.php?id=16876&chapterid=3531) (2 балла)\n", "\n", "
\n", "
\n", "

По данному натуральном $n$ вычислите сумму \n", "$1^2+2^2+3^2+...+n^2$.\n", "\n", "

\n", "
\n", "
\n", " Входные данные\n", "
\n", "

Вводится натуральное число.

\n", "
\n", "
\n", "
\n", " Выходные данные\n", "
\n", "

Выведите ответ на задачу.

\n", "
\n", "
Примеры
Входные данные
3\n",
    "
Выходные данные
14\n",
    "
" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### [Задача H](http://informatics.mccme.ru/mod/statements/view3.php?id=16876&chapterid=3447) (2 балла)\n", "\n", "
\n", "
\n", "

Вот ряд, в котором вычисляется значение дзета-функции для числа 2:\n", "\n", "$$\n", "\\frac{\\pi^2}{6} = \\frac{1}{1^2}+\\frac{1}{2^2}+\\frac{1}{3^2}+\\frac{1}{4^2}+ ...\n", "$$\n", "\n", "

\n", "

\n", "Вычислите приближение к числу $\\pi$, используя первые 10 членов этого ряда.\n", "

\n", "
\n", "
" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### [Задача I](http://informatics.mccme.ru/mod/statements/view3.php?id=16876&chapterid=3841) (2 балла)\n", "\n", "
\n", "
\n", "

Переставьте соседние элементы списка (A[0] c A[1],\n", "A[2] c A[3] и т.д.).\n", "Если элементов нечетное число, то последний элемент остается на своем месте.

\n", "
\n", "
\n", "
\n", " Входные данные\n", "
\n", "

Вводится список чисел. Все числа списка находятся на одной строке.

\n", "
\n", "
\n", "
\n", " Выходные данные\n", "
\n", "

Выведите ответ на задачу.

\n", "
\n", "
Примеры
Входные данные
1 2 3 4 5\n",
    "
Выходные данные
2 1 4 3 5 \n",
    "
" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### [Задача J](http://informatics.mccme.ru/mod/statements/view3.php?id=16876&chapterid=3551) (3 балла)\n", "\n", "
\n", "
\n", "

По данному натуральном $n$ вычислите сумму $1!+2!+3!+...+n!$.\n", "В решении этой задачи можно использовать\n", "только один цикл и нельзя использовать `import`.

\n", "
\n", "
\n", "
\n", " Входные данные\n", "
\n", "

Вводится натуральное число n.

\n", "
\n", "
\n", "
\n", " Выходные данные\n", "
\n", "

Выведите ответ на задачу.

\n", "
\n", "
Примеры
Входные данные
3\n",
    "
Выходные данные
9\n",
    "
" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### [Задача K](http://informatics.mccme.ru/mod/statements/view3.php?id=16876&chapterid=3609) (2 балла)\n", "\n", "
\n", "
\n", "

Дано положительное действительное число X. Выведите его первую цифру после десятичной точки.\n", "При решении этой задачи нельзя пользоваться условной инструкцией и циклом.

\n", "
\n", "
\n", "
\n", " Входные данные\n", "
\n", "

Вводится положительное действительное число.

\n", "
\n", "
\n", "
\n", " Выходные данные\n", "
\n", "

Выведите ответ на задачу.

\n", "
\n", "
Примеры
Входные данные
1.79\n",
    "
Выходные данные
7\n",
    "
" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### [Задача L](http://informatics.mccme.ru/mod/statements/view3.php?id=16876&chapterid=3535) (4 балла)\n", "\n", "
\n", "
\n", "

Напишите программу, которая по данному числу n от 1 до 9 выводит на экран n пингвинов. Изображение одного пингвина\n", "имеет размер 5×9 символов, между двумя соседними пингвинами также имеется пустой (из пробелов) столбец. Разрешается\n", "вывести пустой столбец после последнего пингвина. Для упрощения рисования скопируйте пингвина из примера в среду\n", "разработки.\n", "\n", "

\n", "
\n", "
\n", " Входные данные\n", "
\n", "

Вводится натуральное число.

\n", "
\n", "
\n", "
\n", " Выходные данные\n", "
\n", "

Выведите ответ на задачу.

\n", "
\n", "
\n", "\tПримечание\n", "
\n", "

Учтите, что вывод данных на экран производится построчно, а не попингвинно.

\n", "

В некоторых языках программирования символ обратного слэша “\\” в текстовых строках\n", "\tимеет специальное значение. Чтобы включить в состав текстовой\n", "\tстроки такой символ, его нужно повторить дважды. Например,\n", "\tдля вывода на экран одного такого символа можно использовать\n", "\tтакой код: print(\"\\\\\").

\n", "
\n", "
\n", "
Примеры
Входные данные
3\n",
    "
Выходные данные
\n", "
   _~_       _~_       _~_    \n",
    "  (o o)     (o o)     (o o)   \n",
    " /  V  \\   /  V  \\   /  V  \\  \n",
    "/(  _  )\\ /(  _  )\\ /(  _  )\\ \n",
    "  ^^ ^^     ^^ ^^     ^^ ^^   \n",
    "
Входные данные
1\n",
    "
Выходные данные
   _~_    \n",
    "  (o o)   \n",
    " /  V  \\  \n",
    "/(  _  )\\ \n",
    "  ^^ ^^   \n",
    "
" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language": "python", "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.4.3" } }, "nbformat": 4, "nbformat_minor": 0 }