Цикл for
Цикл
Цикл - это многократное выполнение одного и то же действия. Цикл может повторяться 1, 10, 100 раз, или бесконечно, или пока выполняется какое то условие.
В Python цикл for - это цикл перебора последовательности. Он состоит из двух компонентов: переменной цикла и последовательности. Приведу пример:
for item in 'один', 'два', 'три':
print(item)
# Вывод
>> один
>> два
>> три
В приведенном выше примере переменная цикла item по очереди принимает каждое значение последовательности, которая записана после служебного слова in. На первом повторении переменная item равна строке ‘один’, на втором - строке ‘два’, на третьем - строке ‘три’.
Еще несколько примеров:
for element in '1', 'hello', 2, 1990, True, False:
print(element)
# Вывод:
>> 1
>> hello
>> 2
>> 1990
>> True
>> False
for letter in 'Hello world':
print(letter)
>> H
>> e
>> l
>> l
>> o
>>
>> w
>> o
>> r
>> l
>> d
Функция range()
Во многих других ЯП(языки программирования), цикл for используется в качестве счетчика где есть начальное значение, шаг с которым оно изменяется и конечное значение.
Если мы в Python захотим просто перебрать значение от 0 до 100, то следуя из примера выше нам необходимо будет создать список 0,1,2,3…99,100, что не очень удобно. Но как же нам быть если нам нужен, чтобы цикл выполнился определенное количество раз, но при этом не писать много кода.
Функция range() возвращает диапазон целых чисел, согласно аргументам range(start, stop, step). Главное помнить последнее значение будет stop-1, т.е если stop = 100, то последнее значение которое выдаст функция будет 99.
# range() с одним аргументом
# range(start)
for x in range(3):
print(x)
# Вывод:
>> range(3) -> 0, 1, 2
>> 0
>> 1
>> 2
# range() с двумя аргументами
# range(start, stop)
for x in range(3, 5):
print(x)
# Вывод:
>> range(3, 5) -> 3, 4
>> 3
>> 4
# range() с тремя аргументами:
# range(start, stop, step)
print('range(0, 10, 2)')
for x in range(0, 10, 2):
print(x)
>> range(0, 10, 2)
>> 0
>> 2
>> 4
>> 6
>> 8
print('range(0, 100, 10)')
for x in range(0, 100, 10):
print(x)
>> range(0, 100, 10)
>> 0
>> 10
>> 20
>> 30
>> 40
>> 50
>> 60
>> 70
>> 80
>> 90
Как же сделать так, чтобы при range(0, 10) получить диапазон от 0 до 10, а не до 9.
for x in range(0, 10+1):
print(x)
>> 0
>> 1
>> 2
>> 3
>> 4
>> 5
>> 6
>> 7
>> 8
>> 9
>> 10
Задачи
-
Вывод чисел от 0 до N.
Пользователь вводит число N. Выведите все числа от 0 до N включительно.
# Ввод: >> 4 # Вывод: >> 0 >> 1 >> 2 >> 3 >> 4
-
Вывод чисел от K до N.
Пользователь вводит числа K и N. Выведите все числа от K до N включительно.
# Ввод: >> 2 >> 7 # Вывод: >> 2 >> 3 >> 4 >> 5 >> 6 >> 7
-
Сумма от K до N.
Пользователь вводит числа K и N. Выведите сумму чисел от K до N включительно.
# Ввод: >> 1 >> 5 # Вывод: >> 15
-
Сумма четных от K до N.
Пользователь вводит числа K и N. Выведите сумму только четных чисел от K до N включительно.
# Ввод: >> 1 >> 5 # Вывод: >> 6 # 2 + 4
-
Цикл в цикле.