Циклы

Циклы

programmer's town

Практически каждый язык программирования содержит какую-нибудь конструкцию цикла. Такая есть и в Python.

Цикл for:

Мы используем цикл в тех случаях, когда вам нужно повторить что-нибудь n-ное количество раз. Это проще понять, если взглянуть на пример. Мы используем встроенную функцию range. Функция range создаст список длинной в «n» элементов. В Python версии 2 существует другая функция под названием xrange, которая является генератором чисел и не такая ресурсоемкая, как range.

Давайте посмотрим на пример:

a = range(5, 10)
print(a) # range(5, 10)

b = list(range(1, 10, 2))
print(b) # [1, 3, 5, 7, 9]

(# - это комментарий. Комментарии - это то, что программисты добавляют для пояснения самому себе или другому программисту. Комментарии не влияют на исполнение кода.)

В первом примере показано, что вы можете передать начальное и конечное значение, и функция range вернет числа, начиная с начального значения вплоть до (но не включая) последнее значение. Например, при запросе 5-10 мы получим 5-9. Во втором примере видно, как использовать функцию списка (list) для того, чтобы функция range вернула каждый второй элемент, между 1 и 10. Так что она начинает с 1, пропускает 2 и так далее.

Давайте посмотрим на другой пример кода, но уже с циклом for:

for number in range(5):
    print(number)

Что здесь произошло? Давайте почитаем слева на право, чтобы понять это. Для каждого числа в диапазоне 5 мы вводим число. Мы знаем, что если мы вызываем range со значением 5, мы получим список из 5 элементов. Так что каждый раз, проходя через цикл, она выводит каждый из элементов. (Блоки циклов for также как и блоки if-elif-else пишутся отступая 4 пробела или нажатием клавиши Tab на клавиатуре.)

Следующий пример:

a_dict = {1:"one", 2:"two", 3:"three"}
keys = a_dict.keys()
 
keys = sorted(keys)
for key in keys:
    print(key)

Результат:

1
2
3

Давайте остановимся и разберемся с тем, что делает этот код. Во-первых, мы создали словарь, в котором ключи выступают в качестве целых чисел, вместо строк. Далее, мы извлекли ключи из словаря. Каждый раз, когда вы взываете метод keys(), он возвращает неупорядоченный список ключей. Если вы выведите их, и увидите, что они расположен в порядке по возрастанию, то это просто случайность. Теперь у нас есть доступ к ключам словаря, которые хранятся в переменной, под названием keys. Мы сортируем наш список, после чего используем цикл for в нем. 

Цикл while:

Цикл while также используется для повторения частей кода, но вместо зацикливания на n количество раз, он выполняет работу до тех пор, пока не достигнет определенного условия. Давайте взглянем на пример:

i = 0
while i < 10:
    print(i)
    i = i + 1

Цикл while является своего рода условным оператором. Вот что значит этот код: пока переменная i меньше единицы, её нужно выводить на экран. Далее, в конце, мы увеличиваем её значение на единицу. Если вы запустите этот код, он выдаст от 0 до 9, каждая цифра будет в отдельной строке, после чего задача будет выполнена. Если вы удалите ту часть, в которой мы увеличиваем значение i, то мы получим бесконечный цикл. Как правило – это плохо. Бесконечные циклы известны как логические ошибки, и их нужно избегать. Существует другой способ вырваться из цикла, для этого нужно использовать встроенную функцию break. Но как же это работает?

while i < 10:
    print(i)
    
    if i == 5:
        break
    i += 1

В этой части кода мы добавили условное выражение для проверки того, равняется ли когда-либо переменная i цифре 5. Если нет, тогда мы разрываем цикл. Как вы видите в выдаче кода, как только значение достигает пяти, код останавливается, даже если мы ранее указали while продолжать цикл, пока переменная не достигнет значения 10. Обратите внимание на то, что мы изменили то, как мы увеличиваем значение при помощи +=. Это удобный ярлык, который вы можете также использовать в других операциях, таких как вычитание -= и умножение *=. Встроенный break также известен как инструмент управления потока. Существует еще один, под названием continue, который в основном используется для пропуска итерации, или перейти к следующей итерации. 

Также нужно сказать про оператор else, который выполняется только в том случае, если цикл выполнен успешно.

Домашнее задание:

Задание 1

Выясните, что выведет эта программа:

a=0
while a!=10:
a=a+1
if a==5:
continue
print (a)
if a==7:
break
print ("всё!")

Задание 2

Определите, что выведет эта программа:

a=0
n=10
for i in range(1,n+1,2):
a=a+1
if a==5:
continue
print (a)
if a==7:
break
print ("всё!")











Report Page