Тема 4 «Цикл for»
Видеолекция по теме «Циклы for и while»
Теоретический материал - Цикл for в Python
Цикл 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 до b - 1, то есть первый параметр функции range, вызываемой с двумя параметрами, задает начальное значение индексной переменной, а второй параметр — значение, которая индексная переменная принимать не будет. Если же a ≥ b, то цикл не будет выполнен ни разу. Например, для того, чтобы просуммировать значения чисел от 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.
Задача №3528. Ряд - 1
Даны два целых числа A и B (при этом A ≤ B). Выведите все числа от A до B включительно.
Входные данные
Вводятся два целых числа.
Выходные данные
Выведите ответ на задачу.
Примеры
Ввод | Вывод |
1 10 |
1 2 3 4 5 6 7 8 9 10 |
Решение 1
a = int(input())
b = int(input())
for i in range(a,b+1):
print(i)
Решение 2
a = int(input())
b = int(input())
print(*list(range(a,b+1)))
Задача №3529. Ряд - 2
Даны два целых числа A и В. Выведите все числа от A до B включительно, в порядке возрастания, если A < B, или в порядке убывания в противном случае.
Входные данные
Вводятся два целых числа.
Выходные данные
Выведите ответ на задачу.
Примеры
Ввод | Вывод |
1 10 |
1 2 3 4 5 6 7 8 9 10 |
Решение 1
a = int(input())
b = int(input())
if a > b:
for i in range(a, b - 1, -1):
print(i, end = ' ')
else:
for i in range(a, b + 1):
print(i, end = ' ')
Решение 2
a, b = int(input()), int(input())
if b > a:
for i in range(a, b + 1):
print(i, end=" ")
if a >= b:
for i in range(a, b - 1, -1):
print(i, end=" ")
Задача №3530. Ряд - 3
Дано натуральное число n. Напечатайте все n-значные нечетные натуральные числа в порядке убывания.
Входные данные
Вводится натуральное число.
Выходные данные
Выведите ответ на задачу.
Примеры
Ввод | Вывод |
1 | 9 7 5 3 1 |
Решение
n = int(input())
for i in range(10 ** n - 1, 10 ** (n - 1) - 1, -2):
print(i, end=" ")
Задача №3531. Сумма квадратов
По данному натуральном n вычислите сумму 12 + 22 + 32 + ... + n2.
Входные данные
Вводится натуральное число.
Выходные данные
Выведите ответ на задачу.
Примеры
Ввод | Вывод |
3 | 14 |
Решение
n = int(input())
a = 0
for i in range(n + 1):
a += i ** 2
print(a)
Задача №3532. Сумма кубов
По данному натуральном n вычислите сумму 13 + 23 + 33 + ... + n3.
Входные данные
Вводится число n.
Выходные данные
Выведите ответ на задачу.
Примеры
Ввод | Вывод |
1 | 1 |
Ввод | Вывод |
3 | 36 |
Решение
n = int(input())
a = 0
for i in range(n + 1):
a += i ** 3
print(a)
Задача №3533. Факториал
По данному целому неотрицательному n вычислите значение n!.
N! = 1 * 2 * 3 * ... * N (произведение всех чисел от 1 до N)
0! = 1
Входные данные
Вводится число n.
Выходные данные
Выведите ответ на задачу.
Примеры
Ввод | Вывод |
3 | 6 |
Решение
n = int(input())
a = 1
for i in range(1, n + 1):
a *= i
print(a)
Задача №3538. Чётные числа
По данным двум натуральным числам A и B (A ≤ B) выведите все чётные числа на отрезке от A до B. В этой задаче нельзя использовать инструкцию if.
Входные данные
Вводятся два натуральных числа A и B.
Выходные данные
Выведите ответ на задачу.
Примеры
Ввод | Вывод |
1 10 |
2 4 6 8 10 |
Решение
a = int(input())
b = int(input())
for i in range(a, b + 1 - (b % 2), 2):
print(i % 2 + i, end=" ")
Задача №3539. Сумма десяти чисел
Дано 10 целых чисел. Вычислите их сумму. Напишите программу, использующую наименьшее число переменных.
Входные данные
Вводятся 10 целых чисел. Каждое число вводится в отдельной строке.
Выходные данные
Выведите ответ на задачу.
Примеры
Ввод | Вывод |
0 1 2 3 4 5 6 7 8 9 |
45 |
Решение
x = 0
for i in range(10):
b = int(input())
x += b
print(x)
Задача №3540. Сумма N чисел
Дано несколько чисел. Вычислите их сумму. Сначала вводите количество чисел N, затем вводится ровно N целых чисел. Какое наименьшее число переменных нужно для решения этой задачи?
Входные данные
В первой строке вводится натуральное число N - количество чисел. В следующих N строках вводится по одному целому числу.
Выходные данные
Выведите ответ на задачу.
Примеры
Ввод | Вывод |
2 235 56 |
291 |
Решение
n = int(input())
x = 0
for i in range(n):
x += int(input())
print(x)
Задача №3541. Количество нулей
Дано несколько чисел. Подсчитайте, сколько из них равны нулю, и выведите это количество.
Входные данные
Сначала вводится число N, затем вводится ровно N целых чисел.
Выходные данные
Выведите ответ на задачу.
Примеры
Ввод | Вывод |
5 0 7 0 2 2 |
2 |
Решение 1
n = int(input())
a = 0
b = 0
for i in range(n):
b = int(input())
if b == 0:
a += 1
print(a)
Решение 2
a = 0
for i in range(int(input())):
if int(input()) == 0:
a += 1
print(a)
Задача №3547. Лесенка
По данному натуральному n ≤ 9 выведите лесенку из n ступенек, i-я ступенька состоит из чисел от 1 до i без пробелов.
Входные данные
Вводится натуральное число.
Выходные данные
Выведите ответ на задачу.
Примеры
Ввод | Вывод |
3 | 1 121 123 |
Решение 1
n = int(input())
s = ''
for i in range(1, n + 1):
s = s + str(i)
print(s)
Решение 2
n = int(input())
s = 0
for i in range(1, n + 1):
s = s * 10 + i
print(s)
Задача №3551. Сумма факториалов
По данному натуральном n вычислите сумму 1! + 2! + 3! + ... + n!. В решении этой задачи можно использовать только один цикл.
Входные данные
Вводится натуральное число n.
Выходные данные
Выведите ответ на задачу.
Примеры
Ввод | Вывод |
3 | 9 |
Решение
n = int(input())
prev = 1
s = 0
for i in range(1, n + 1):
prev *= i
s += prev
print(s)