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

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

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

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

#
#
#
# Входные данные #
#

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

#
#
#
# Выходные данные #
#

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

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

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

#
#
#
# Входные данные #
#

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

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

#
#
#
# Выходные данные #
#

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

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

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

#

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

#
#
#
# Входные данные #
#

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

#
#
#
# Выходные данные #
#

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

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

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

#
#
# Входные данные #
#

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

#
#
#
# Выходные данные #
#

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

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

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

#
#
#
# Входные данные #
#

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

#
#
#
# Выходные данные #
#

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

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

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

#
#
#
# Входные данные #
#

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

#
#
#
# Выходные данные #
#

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

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

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

#
#
# Входные данные #
#

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

#
#
#
# Выходные данные #
#

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

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

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

#

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

#
#
# ### [Задача I](http://informatics.mccme.ru/mod/statements/view3.php?id=16876&chapterid=3841) (2 балла) # #
#
#

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

#
#
#
# Входные данные #
#

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

#
#
#
# Выходные данные #
#

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

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

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

#
#
#
# Входные данные #
#

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

#
#
#
# Выходные данные #
#

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

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

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

#
#
#
# Входные данные #
#

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

#
#
#
# Выходные данные #
#

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

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

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

#
#
# Входные данные #
#

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

#
#
#
# Выходные данные #
#

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

#
#
# Примечание #
#

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

#

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

#
#
#
Примеры
Входные данные
3
# 
Выходные данные
#
   _~_       _~_       _~_    
#   (o o)     (o o)     (o o)   
#  /  V  \   /  V  \   /  V  \  
# /(  _  )\ /(  _  )\ /(  _  )\ 
#   ^^ ^^     ^^ ^^     ^^ ^^   
# 
Входные данные
1
# 
Выходные данные
   _~_    
#   (o o)   
#  /  V  \  
# /(  _  )\ 
#   ^^ ^^   
#