- Сумма произведений соседних чисел python
- Функция enumerate
- Функция range (перебор членов арифметической прогрессии)
- Упражнения
- A: Ряд
- B: Сумма кубов
- C: Факториал
- D: Число сочетаний
- E: Пингвины
- F: Флаги
- G: Сумма произведений соседних чисел
- H: Чётные числа
- I: Сумма N чисел
- J: Количество нулей
- K: Диофантово уравнение — 1
- L: Диофантово уравнение — 2
- M: Замечательные числа — 1
- N: Замечательные числа — 2
- O: Замечательные числа — 3
- P: Лесенка
- Q: Замечательные числа — 4
- R: Замечательные числа — 5
- S: Остатки
- T: Сумма факториалов
- U: Треугольная последовательность
- Цикл for
- Функция range
Сумма произведений соседних чисел python
Цикл for , также называемый циклом с параметром, в языке Питон богат возможностями. В цикле for указывается переменная и множество значений, по которому будет пробегать переменная. Множество значений может быть задано списком, кортежем, строкой или диапазоном.
Вот простейший пример использования цикла, где в качестве множества значений используется кортеж:
i = 1 for color in 'red', 'orange', 'yellow', 'green', 'cyan', 'blue', 'violet': print(i,'-th color of rainbow is ', color, sep='') i += 1
В этом примере переменная color последовательно принимает значения ‘red’ , ‘orange’ и т.д. В теле цикла выводится сообщение, которое содержит название цвета, то есть значение переменной color , а также номер итерации цикла число, которое сначала равно 1, а потом увеличивается на один (инструкцией i += 1 с каждым проходом цикла).
В списке значений могут быть выражения различных типов, например:
for i in 1, 2, 3, 'one', 'two', 'three': print(i)
При первых трёх итерациях цикла переменная i будет принимать значение типа int , при последующих трёх — типа str .
Функция enumerate
Вернёмся к первому примеру. В случаях, когда вместе с элементами нужны также и их индексы, идеоматический подход в питоне выглядит так:
for i, color in enumerate(('red', 'orange', 'yellow', 'green', 'cyan', 'blue', 'violet')): print(i+1, '-th color of rainbow is ', color, sep='')
Функция enumerate возвращает пары из порядкового номера элемента начиная с нуля и собственно самого элемента. В данном примере ещё лучше воспользоваться параметром start , тогда нумерация начнётся не с нуля, а с указанного в параметре start значения:
for i, color in enumerate(('red', 'orange', 'yellow', 'green', 'cyan', 'blue', 'violet'), start=1): print(i, '-th color of rainbow is ', color, sep='')
Функция range (перебор членов арифметической прогрессии)
Как правило, циклы for используются либо для повторения какой-либо последовательности действий заданное число раз, либо для изменения значения переменной в цикле от некоторого начального значения до некоторого конечного.
Для повторения цикла некоторое заданное число раз n можно использовать цикл for вместе с функцией range :
for i in range(n): Тело цикла
sum = 0 sum_sq = 0 for i in range(3): sq_i = i * i print(i, sq_i) sum += i sum_sq += sq_i print(sum, sum_sq)
В качестве n может использоваться числовая константа, переменная или произвольное арифметическое выражение (например, 2 ** 10 ). Если значение n равно нулю или отрицательное, то тело цикла не выполнится ни разу.
Код выше эквивалентен такому:
sum = 0 sum_sq = 0 i = 0 sq_i = i * i print(i, sq_i) sum += i sum_sq += sq_i i = 1 sq_i = i * i print(i, sq_i) sum += i sum_sq += sq_i i = 2 sq_i = i * i print(i, sq_i) sum += i sum_sq += sq_i print(sum, sum_sq)
В этом примере можно «пощупать» эту конструкцию по шагам.
Если задать цикл таким образом:
for i in range(a, b): Тело цикла
то индексная переменная i будет принимать значения от a до , то есть первый параметр функции range , вызываемой с двумя параметрами, задаёт начальное значение индексной переменной, а второй параметр — значение, которая индексная переменная принимать не будет. Если же a ⩾ b , то цикл не будет выполнен ни разу. Например, для того, чтобы просуммировать значения чисел от 1 до n можно воспользоваться следующей программой:
sum = 0 for i in range(1, n + 1): sum += i
В этом примере переменная i принимает значения 1, 2, . n , и значение переменной sum последовательно увеличивается на указанные значения.
Наконец, чтобы организовать цикл, в котором индексная переменная будет уменьшаться, необходимо использовать функцию range с тремя параметрами. Первый параметр задаёт начальное значение индексной переменной, второй параметр — значение, до которого будет изменяться индексная переменная (не включая его!), а третий параметр — величину изменения индексной переменной. Например, сделать цикл по всем нечётным числам от 1 до 99 можно при помощи функции , а сделать цикл по всем числам от 100 до 1 можно при помощи .
Более формально, цикл при d > 0 задаёт значения индексной переменной i = a , i = a + d , i = a + 2 * d и так для всех значений, для которых i < b . Если же d < 0 , то переменная цикла принимает все значения i >b .
Упражнения
A: Ряд
Дано натуральное число n . Напечатайте все n -значные нечётные натуральные числа в порядке убывания.
B: Сумма кубов
По данному натуральному n вычислите явным суммированием число \(1^3+2^3+3^3+. +n^3\).
C: Факториал
По данному целому неотрицательному n вычислите значение n!.
Напишите программу, которая вычисляет 1,000,000! за одну минуту. Не пытайтесь вывести это число (в нём около 5565709 десятичных цифр, и попытка вывода может занять больше 20 минут). Чтобы проверить правильность ответа посмотрите на длину в двоичной записи. Если ответ хранится в переменной x , то x.bit_length() = 18488885 .
D: Число сочетаний
По данным целым неотрицательным \(n\) и \(k\) вычислите значение числа сочетаний из \(n\) элементов по \(k\), то есть \(\frac\).
Напишите программу, которая вычисляет \(C_<1,000,000>^\) за одну минуту. Чтобы проверить правильность ответа посмотрите на длину в двоичной записи. Если ответ хранится в переменной x , то x.bit_length() = 468987 . Первые пять цифр числа равны 73331.1,000,000>
E: Пингвины
Напишите программу, которая по данному числу n от 1 до 9 выводит на экран n пингвинов. Изображение одного пингвина имеет размер 5×9 символов, между двумя соседними пингвинами также имеется пустой (из пробелов) столбец. Разрешается вывести пустой столбец после последнего пингвина. Для упрощения рисования скопируйте пингвина из примера в среду разработки.
Учтите, что вывод данных на экран производится построчно, а не попингвинно.
Символ обратного слэша «\» в текстовых строках имеет специальное значение. Чтобы включить в состав текстовой строки такой символ, его нужно повторить дважды. Например, для вывода на экран одного такого символа можно использовать такой код: print(«\\») .
F: Флаги
Напишите программу, которая по данному числу n от 1 до 9 выводит на экран n флагов. Изображение одного флага имеет размер 4×4 символов, между двумя соседними флагами также имеется пустой (из пробелов) столбец. Разрешается вывести пустой столбец после последнего флага. Внутри каждого флага должен быть записан его номер — число от 1 до n.
G: Сумма произведений соседних чисел
По данному натуральному n⩾2 вычислите сумму 1×2+2×3+. +(n-1)×n. Ответ выведите в виде вычисленного выражение и его значения в точности, как показано в примере.
H: Чётные числа
По данным двум натуральным числам A и B (A⩽B) выведите все чётные числа на отрезке от A до B. В этой задаче нельзя использовать инструкцию if.
I: Сумма N чисел
Дано несколько чисел. Вычислите их сумму. Сначала вводите количество чисел N, затем вводится ровно N целых чисел.
Какое наименьшее число переменных нужно для решения этой задачи (если не использовать никаких хаков)? Напишите в комментариях сколько и почему.
J: Количество нулей
Дано N чисел: сначала вводится число N, затем вводится ровно N целых чисел. Подсчитайте количество нулей среди введённых чисел и выведите это количество.
K: Диофантово уравнение — 1
Даны числа a, b, c, d. Выведите в порядке возрастания все целые числа от 0 до 1000, которые являются корнями уравнения ax 3 +bx 2 +cx+d=0.
L: Диофантово уравнение — 2
Даны числа a, b, c, d, e. Подсчитайте количество таких целых чисел от 0 до 1000, которые являются корнями уравнения (ax 3 +bx 2 +cx+d)/(x-e)=0, и выведите их количество.
M: Замечательные числа — 1
Найдите и выведите все двузначные числа, которые равны удвоенному произведению своих цифр.
Программа не требует ввода данных с клавиатуры, просто выводит список искомых чисел.
N: Замечательные числа — 2
Квадрат трёхзначного числа оканчивается тремя цифрами, равными этому числу. Найдите и выведите все такие числа.
Программа не требует ввода данных с клавиатуры, просто выводит список искомых чисел.
O: Замечательные числа — 3
Дано натуральное число n. Выведите в порядке возрастания все трёхзначные числа, сумма цифр которых равна n.
P: Лесенка
По данному натуральному n⩽9 выведите лесенку из n ступенек, i-я ступенька состоит из чисел от 1 до i без пробелов.
Q: Замечательные числа — 4
Даны два четырёхзначных числа A и B. Выведите все четырёхзначные числа на отрезке от A до B, запись которых является палиндромом.
R: Замечательные числа — 5
Даны два четырёхзначных числа A и B. Выведите в порядке возрастания все четырёхзначные числа на отрезке от A до B, запись которых содержит ровно три одинаковые цифры.
S: Остатки
В этой задаче нельзя использовать инструкцию if, операторы сравнения ( < и т.д.), должен быть только один цикл.
T: Сумма факториалов
По данному натуральному \(n\) вычислите сумму \(1!+2!+3!+. +n!\). В решении этой задачи можно использовать только один цикл.
U: Треугольная последовательность
Дана монотонная последовательность, в которой каждое натуральное число k встречается ровно k раз: 1, 2, 2, 3, 3, 3, 4, 4, 4, 4, .
По данному натуральному n выведите первые n членов этой последовательности.
Цикл for
Цикл for , также называемый циклом с параметром, в языке Питон богат возможностями. В цикле for указывается переменная и множество значений, по которому будет пробегать переменная. Множество значений может быть задано списком, кортежем, строкой или диапазоном.
Вот простейший пример использования цикла, где в качестве множества значений используется кортеж:
i = 1 for color in 'red', 'orange', 'yellow', 'green', 'cyan', 'blue', 'violet': print(i,'-th color of rainbow is ', color, sep = '') i += 1
В этом примере переменная color последовательно принимает значения ‘red’ , ‘orange’ и т.д. В теле цикла выводится сообщение, которое содержит название цвета, то есть значение переменной color , а также номер итерации цикла число, которое сначала равно 1, а потом увеличивается на один (инструкцией i += 1 с каждым проходом цикла.
В списке значений могут быть выражения различных типов, например:
for i in 1, 2, 3, 'one', 'two', 'three': print(i)
При первых трех итерациях цикла переменная i будет принимать значение типа int , при последующих трех — типа str .
Функция range
Как правило, циклы for используются либо для повторения какой-либо последовательности действий заданное число раз, либо для изменения значения переменной в цикле от некоторого начального значения до некоторого конечного.
Для повторения цикла некоторое заданное число раз n можно использовать цикл for вместе с функцией range :
for i in range(n): Тело цикла
В качестве n может использоваться числовая константа, переменная или произвольное арифметическое выражение (например, 2 ** 10 ). Если значение n равно нулю или отрицательное, то тело цикла не выполнится ни разу.
Если задать цикл таким образом:
for i in range(a, b): Тело цикла
то индексная переменная i будеть принимать значения от a до , то есть первый параметр функции range , вызываемой с двумя параметрами, задает начальное значение индексной переменной, а второй параметр — значение, которая индексная переменная принимать не будет. Если же a ≥ b , то цикл не будет выполнен ни разу. Например, для того, чтобы просуммировать значения чисел от 1 до n можно воспользоваться следующей программой:
sum = 0 for i in range(1, n + 1): sum += i
В этом примере переменная i принимает значения 1, 2, . n , и значение переменной sum последовательно увеличивается на указанные значения.
Наконец, чтобы организовать цикл, в котором индексная переменная будет уменьшаться, необходимо использовать функцию range с тремя параметрами. Первый параметр задает начальное значение индексной переменной, второй параметр — значение, до которого будет изменяться индексная переменная (не включая его!), а третий параметр — величину изменения индексной переменной. Например, сделать цикл по всем нечетным числам от 1 до 99 можно при помощи функции , а сделать цикл по всем числам от 100 до 1 можно при помощи .
Более формально, цикл при d > 0 задает значения индексной переменной i = a , i = a + d , i = a + 2 * d и так для всех значений, для которых i < b . Если же d < 0 , то переменная цикла принимает все значения i >b .