Часто возникают ситуации, в которых необходимо выполнить блок кода несколько раз. Как правило, команды выполняются одна вслед за другой, но существуют способы зациклить код. Во многих языках программирования для этой цели используются инструкции циклов.
Сегодня мы рассмотрим циклы в языке Python, а именно циклы for и while, операторах break и continue, а также слово else, которое, будучи употребленное с циклом, может сделать программный код несколько более понятным.
Цикл со счетчиком for
Этот цикл проходится по любому итерируемому объекту (например строке или списку), и во время каждого прохода выполняет тело цикла.
Как правило, цикл for используются либо для повторения какой-либо последовательности действий заданное число раз, либо для изменения значения переменной в цикле от некоторого начального значения до некоторого конечного. Например:
for i in 'hello world':
print(i * 2, end='')
#выведет
hheelllloo wwoorrlldd
Рассмотри пример — вывод чисел определенного диапазона:
for i in range(10):
print(i, end=" ")
print()
# Выведет: 0 1 2 3 4 5 6 7 8 9
for i in range(0, 50, 5):
print(i, end=" ")
print()
# Выведет: 0 5 10 15 20 25 30 35 40 45
for i in range(10, 0, -1):
print(i, end=" ")
print()
# Выведет: 10 9 8 7 6 5 4 3 2 1
input("Нажмите Enter для выхода")
Первый цикл for выводит значения от 0 до 9. Указываем только верхнюю границу. Если нижняя граница не указана, то подразумевается, что это 0.
Второй цикл for работает от 0 до 50, а увеличение счетчика происходит сразу на 5 единиц.
Третий цикл работает от 10 до 0, уменьшение счетчика происходит на единицу (-1). Поэтому числа будут выведены в обратном порядке.
Функция range() возвращает последовательность цифр.
Второй цикл for работает от 0 до 50, а увеличение счетчика происходит сразу на 5 единиц.
Третий цикл работает от 10 до 0, уменьшение счетчика происходит на единицу (-1). Поэтому числа будут выведены в обратном порядке.
Функция range() возвращает последовательность цифр.
Цикл while
While — один из самых универсальных циклов в Python, поэтому довольно медленный. Он выполняет тело цикла до тех пор, пока условие цикла истинно. Например:
i = 5
while i < 15:
print(i)
i = i + 2
# выведет
5
7
9
11
13
Напишем небольшую программу с помощью цикла while. Листинг:
print("Угадай лучший автомобиль")
print("Название автомобиля нужно вводить строчными буквами")
response = ""
while response != "toyota":
response = input("Какой авто самый лучший? ")
print("Ура! Правильно!")
input()
Вывод программы:
В коде мы создаем переменную «response». Цикл while будет выполняться до тех пор, пока значение нашей переменной не будет равно «toyota».
Как и в случае с оператором if, тело цикла может состоять из нескольких операторов, заключенных в один блок. Блоком считаются строки, следующие друг за другом, с одинаковым отступом.
С помощью оператора if вы можете улучшить нашу программу или придумать свою. Пишите в комментариях свои примеры программ с циклом while.
Бесконечный цикл
Неправильно составленное условие может привести к бесконечному циклу. Рассмотрим пример:
k = 10
while k > 5:
print(k)
k = k + 1
Цикл будет выполняться, пока k больше 5. Изначально k больше 5, далее значение k только увеличивается, поэтому получается бесконечный цикл.
Оператор continue
Оператор continue начинает следующий проход цикла, минуя оставшееся тело цикла (for или while). Например:
for i in 'hello world':
if i == 'o':
continue
print(i * 2, end='')
# выведет
hheellll wwrrlldd
Оператор break
Оператор break досрочно прерывает цикл. Например:
for i in 'hello world':
if i == 'o':
break
print(i * 2, end='')
# выведет
hheellll
else
else, примененное в цикле for или while, проверяет, был ли произведен выход из цикла инструкцией break, или же «естественным» образом.
Блок инструкций внутри else выполнится только в том случае, если выход из цикла произошел без помощи break. Например:
for i in 'hello world':
if i == 'a':
print('Буква существует!')
break
else:
print('Буквы a в строке нет')
break
input()
#выведет
Буквы a в строке нету
Программа «Уровень доступа»
Создадим небольшую программу используя логические операторы. Листинг:
level = 0
login = ""
while not login:
login = input("Логин: ")
password = ""
while not password:
password = input("Пароль: ")
if login == "root" and password == "qwerty":
level = "Бог"
elif login == "max" and password == "max":
level = "Ламер"
if level:
print("Привет, ", login)
print("Твой уровень доступа: ", level)
else:
print("Хакерам здесь не рады!")
input()
По умолчанию уровень доступа равен 0. Если это так, то доступ закрыт. Если уровень отличается от 0, то программа выводит приветствие и сообщает уровень доступа.
В начале мы в двух циклах while запрашиваем логин и пароль. Благодаря наличию not мы будем запрашивать логин и пароль до тех пор, пока они не будут введены.
Далее мы сравниваем введенные значения с определенными константами и определяем уровень доступа.
Вывод программы:
В начале мы в двух циклах while запрашиваем логин и пароль. Благодаря наличию not мы будем запрашивать логин и пароль до тех пор, пока они не будут введены.
Далее мы сравниваем введенные значения с определенными константами и определяем уровень доступа.
Вывод программы:
Цикл For:
Цикл While: