#!/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 #
Дан список из чисел и индекс элемента в списке k. Удалите из списка элемент с индексом k, сдвинув влево все элементы, стоящие правее элемента с индексом k.
#Программа получает на вход список, затем число k. Программа сдвигает все элементы, а после этого удаляет последний элемент списка при помощи метода `pop()`.
Программа должна осуществлять сдвиг непосредственно в списке, а не делать это при выводе элементов. Также нельзя использовать дополнительный список.
#Выведите ответ на задачу.
#7 6 5 4 3 2 1 # 2 #
7 6 4 3 2 1 #
Выведите все элементы списка с четными индексами
# (то есть A[0]
, A[2]
, A[4]
, ...).
Программа должна быть эффективной и не выполнять лишних действий!
#Вводится список чисел. Все числа списка находятся на одной строке.
#Выведите ответ на задачу.
#1 2 3 4 5 #
1 3 5 #
Даны два целых числа A и B (при этом A≤B). Выведите все числа от A до B включительно. # #
Вводятся два целых числа.
#Выведите ответ на задачу.
#1 # 10 #
1 2 3 4 5 6 7 8 9 10 #
Дано 10 целых чисел. Вычислите их сумму. Напишите программу, использующую наименьшее число переменных.
#Вводятся 10 целых чисел. Каждое число вводится в отдельной строке.
#Выведите ответ на задачу.
#0 # 1 # 2 # 3 # 4 # 5 # 6 # 7 # 8 # 9 #
45 #
Дано несколько чисел. Вычислите их сумму. Сначала вводите количество чисел N, затем вводится ровно N целых чисел. # Какое наименьшее число переменных нужно для решения этой задачи?
#В первой строке вводится натуральное число N - количество чисел. В следующих N строках вводится по одному целому числу.
#Выведите ответ на задачу.
#2 # 235 # 56 # #
291 #
По данному натуральном $n$ вычислите сумму # $1^2+2^2+3^2+...+n^2$. # #
Вводится натуральное число.
#Выведите ответ на задачу.
#3 #
14 #
Вот ряд, в котором вычисляется значение дзета-функции для числа 2: # # $$ # \frac{\pi^2}{6} = \frac{1}{1^2}+\frac{1}{2^2}+\frac{1}{3^2}+\frac{1}{4^2}+ ... # $$ # #
## Вычислите приближение к числу $\pi$, используя первые 10 членов этого ряда. #
#Переставьте соседние элементы списка (A[0]
c A[1]
,
# A[2]
c A[3]
и т.д.).
# Если элементов нечетное число, то последний элемент остается на своем месте.
Вводится список чисел. Все числа списка находятся на одной строке.
#Выведите ответ на задачу.
#1 2 3 4 5 #
2 1 4 3 5 #
По данному натуральном $n$ вычислите сумму $1!+2!+3!+...+n!$. # В решении этой задачи можно использовать # только один цикл и нельзя использовать `import`.
#Вводится натуральное число n.
#Выведите ответ на задачу.
#3 #
9 #
Дано положительное действительное число X. Выведите его первую цифру после десятичной точки. # При решении этой задачи нельзя пользоваться условной инструкцией и циклом.
#Вводится положительное действительное число.
#Выведите ответ на задачу.
#1.79 #
7 #
Напишите программу, которая по данному числу n от 1 до 9 выводит на экран n пингвинов. Изображение одного пингвина # имеет размер 5×9 символов, между двумя соседними пингвинами также имеется пустой (из пробелов) столбец. Разрешается # вывести пустой столбец после последнего пингвина. Для упрощения рисования скопируйте пингвина из примера в среду # разработки. # #
Вводится натуральное число.
#Выведите ответ на задачу.
#Учтите, что вывод данных на экран производится построчно, а не попингвинно.
#В некоторых языках программирования символ обратного слэша “\” в текстовых строках
# имеет специальное значение. Чтобы включить в состав текстовой
# строки такой символ, его нужно повторить дважды. Например,
# для вывода на экран одного такого символа можно использовать
# такой код: print("\\")
.
3 #
_~_ _~_ _~_ # (o o) (o o) (o o) # / V \ / V \ / V \ # /( _ )\ /( _ )\ /( _ )\ # ^^ ^^ ^^ ^^ ^^ ^^ #
1 #
_~_ # (o o) # / V \ # /( _ )\ # ^^ ^^ #