Цикл for

Часто требуется повторить одну и ту же последовательность команд несколько раз. Для этого используется оператор цикла. Цикл for, также называемый циклом с параметром, в языке Python богат возможностями.

В цикле 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 до b - 1, то есть первый параметр функции range, вызываемой с двумя параметрами, задает начальное значение индексной переменной, а второй параметр — значение, которая индексная переменная принимать не будет. Если же ba, то цикл не будет выполнен ни разу. Например, для того, чтобы просуммировать значения чисел от 1 до n можно воспользоваться следующей программой:

sum = 0
for i in range(1, n + 1):
    sum += i

В этом примере переменная i принимает значения 1, 2, ..., n, и значение переменной sum последовательно увеличивается на указанные значения.

Наконец, чтобы организовать цикл, в котором индексная переменная будет уменьшаться, необходимо использовать функцию range с тремя параметрами. Первый параметр задает начальное значение индексной переменной, второй параметр — значение, до которого будет изменяться индексная переменная (не включая его!), а третий параметр — величину изменения индексной переменной. Например, сделать цикл по всем нечетным числам от 1 до 99 можно при помощи функции range(1, 100, 2), а сделать цикл по всем числам от 100 до 1 можно при помощи range(100, 0, -1).

Более формально, цикл for i in range(a, b, d) при d > 0 задает значения индексной переменной i = a, i = a + d, i = a + 2 * d и так для всех значений, для которых i < b (если же d < 0, то переменная цикла принимает значения, для которых i > b).

Упражнения

A: Ряд - 1

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

Ввод Вывод
1
5
1 2 3 4 5

B: Ряд - 2

Даны два целых числа A и В. Выведите все числа от A до B включительно, в порядке возрастания, если A < B, или в порядке убывания в противном случае.

Ввод Вывод
5
1
5 4 3 2 1

C: Ряд - 3

Дано натуральное число n. Напечатайте все n-значные нечетные натуральные числа в порядке убывания.

Ввод Вывод
1
9 7 5 3 1

D: Сумма квадратов

По данному натуральном n вычислите сумму 12+22+32+...+n2.

Ввод Вывод
3
14

F: Факториал

По данному целому неотрицательному n вычислите значение n!.

Ввод Вывод
5
120

H: Пингвины

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

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

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

Ввод Вывод
3
   _~_       _~_       _~_    
  (o o)     (o o)     (o o)   
 /  V  \   /  V  \   /  V  \  
/(  _  )\ /(  _  )\ /(  _  )\ 
  ^^ ^^     ^^ ^^     ^^ ^^   
1
   _~_   
  (o o)  
 /  V  \ 
/(  _  )\
  ^^ ^^  

I: Флаги*

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

Ввод Вывод
3
+___ +___ +___ 
|1 / |2 / |3 / 
|__\ |__\ |__\ 
|    |    |    
1
+___
|1 /
|__\
|   

J: Сумма произведений соседних чисел

По данному натуральному n≥2 вычислите сумму 1×2+2×3+...+(n-1)×n. Ответ выведите в виде выписанного выражения и его вычисленного значения в точности, как показано в примере.

Ввод Вывод
4
1*2+2*3+3*4=20
2
1*2=2

K: Четные числа

По данным двум натуральным числам A и B (A≤B) выведите все чётные числа на отрезке от A до B. В этой задаче нельзя использовать инструкцию if.

Ввод Вывод
1
10
2 4 6 8 10

L: Сумма десяти чисел

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

Ввод Вывод
0
1
2
3
4
5
6
7
8
9
45

M: Сумма N чисел

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

Ввод Вывод
3
1
20
300
321

N: Количество нулей

Дано N чисел: сначала вводится число N, затем вводится ровно N целых чисел. Подсчитайте количество нулей среди введенных чисел и выведите это количество.

Ввод Вывод
5
0
7
0
2
2
2

O: Диофантово уравнение - 1

Даны числа a, b, c, d. Выведите в порядке возрастания все целые числа от 0 до 1000, которые являются корнями уравнения ax3+bx2+cx+d=0.

Ввод Вывод
-1
1
-1
1
1
1
1
1
1
 

P: Диофантово уравнение - 2

Даны числа a, b, c, d, e. Подсчитайте количество таких целых чисел от 0 до 1000, которые являются корнями уравнения (ax3+bx2+cx+d)/(x-e)=0, и выведите их количество.

Ввод Вывод
1
-2
1
0
1
1
1
1
1
1
1
0

Q: Замечательные числа - 1

Найдите и выведите все двузначные числа, которые равны удвоенному произведению своих цифр.

Программа не требует ввода данных с клавиатуры, просто выводит список искомых чисел.

R: Замечательные числа - 2

Квадрат трехзначного числа оканчивается тремя цифрами, равными этому числу. Найдите и выведите все такие числа.

Программа не требует ввода данных с клавиатуры, просто выводит список искомых чисел.

S: Замечательные числа - 3

Дано натуральное число n. Выведите в порядке возрастания все трехзначные числа, сумма цифр которых равна n.

Ввод Вывод
3
102
111
120
201
210
300

T: Лесенка

По данному натуральному n≤9 выведите лесенку из n ступенек, i-я ступенька состоит из чисел от 1 до i без пробелов.

Ввод Вывод
3
1
12
123

U: Замечательные числа - 4

Даны два четырёхзначных числа A и B. Выведите все четырёхзначные числа на отрезке от A до B, запись которых является палиндромом.

Ввод Вывод
1600
2100
1661
1771
1881
1991
2002

V: Замечательные числа - 5

Даны два четырёхзначных числа A и B. Выведите в порядке возрастания все четырёхзначные числа на отрезке от A до B, запись которых содержит ровно три одинаковые цифры.

Ввод Вывод
1900
2100
1911
1999
2000
2022

W: Остатки*

Даны целые неотрицательные числа a, b, c, d, при этом 0≤c<d. Выведите в порядке возрастания все числа от a до b, которые дают остаток c при делении на d.

В этой задаче нельзя использовать инструкцию if.

Ввод Вывод
1
4
1
2
1 3
1
5
0
4
4

Y: Треугольная последовательность*

Дана монотонная последовательность, в которой каждое натуральное число k встречается ровно k раз: 1, 2, 2, 3, 3, 3, 4, 4, 4, 4, ...

По данному натуральному n выведите первые n членов этой последовательности. Попробуйте обойтись только одним циклом for.

Ввод Вывод
2
1 2
5
1 2 2 3 3

Z: Потерянная карточка*

Для настольной игры используются карточки с номерами от 1 до N. Одна карточка потерялась. Найдите ее, зная номера оставшихся карточек.

Дано число N, далее N-1 номер оставшихся карточек (различные числа от 1 до N). Программа должна вывести номер потерянной карточки.

Для самых умных – массивами и аналогичными структурами данных пользоваться нельзя.

Ввод Вывод
5
1
2
3
4
5
4
3
2
4
1

Дополнительные задачи для тех, кто совсем все решил - это первые четыре задачи Московской олимпиады 6-9 классов прошлого года, условия можно посмотреть также здесь: номер один, номер два, номер три, номер четыре.
Эти задачи можно сдавать в наш контест под именами ZA, ZB, ZC, ZD. Есть важное изменение в условии - числа вводятся по одному числу в строке. Для решения 4-й задачи вам понадобится чуть-чуть прочитать про строки