Рубріки: Теория

Циклы в Python: как работать с while и for

Светлана Лазутина

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

Если вкратце: циклы нужны для того, чтобы пользоваться созданным элементом, но при этом не писать одну и ту же строку кода несколько раз.

Основные типы циклов

В языке Python существуют 2 основных цикла: while и for.Рассмотрим подробно работу каждого из них.

Цикл while

Цикл while — один из самых распространенных в Python. Он позволяет воспроизводить элемент кода снова и снова, пока заданное условие остается верным (true). Чтобы цикл правильно работал, нужен фрагмент кода, который вы хотите использовать повторно, условие true или false и ключевое слово while.

Главное отличие цикла while от for состоит в том, что while может повторять код бесконечное количество раз, пока выполняется условие его применения.

Например:

# Take user input

number = 2 


# Condition of the while loop

while number < 5 :  

    # Find the mod of 2

    if number%2 == 0:  

        print("The number "+str(number)+" is even")

    else:

        print("The number "+str(number)+" is odd")


    # Increment `number` by 1

    number = number+1

Результат:

The number 2 is even

The number 3 is odd

The number 4 is even

Освоить язык программирования Python вам могут помочь онлайн курсы от наших партнеров Mate Academy и Powercode. Получите качественный уровень знаний от практикующих специалистов.

Цикл for

Цикл for выполняет ту же функцию, что и while — повторяет указанные строки кода. Но в отличие от while, для работы for не требуется никаких условий. For используется для перебора последовательности, например, списка, и работает строго определенное количество раз. 

Так выглядит код с использованием цикла for

languages = ['R', 'Python',  'Scala', 'Java', 'Julia']

for index in range(len(languages)):

   print('Current language:', languages[index])

Результат: 

Current language: R

Current language: Python

Current language: Scala

Current language: Java

Current language: Julia

Функция range

Функция range используется при работе со строками цикла for, а также для создания последовательностей чисел. Рассмотрим на примере кода, как эта функция работает с целыми числами: 

for number in range(5,10,2) :  

    print("I am number : "+str(number))

Результат:

I am number : 5

I am number : 7

I am number : 9

Для работы функции range указываются 2 или 3 числа:

  • Первое число — start — с него функция начинает отсчет.
  • Второе число называется stop и обозначает конец выбранного промежутка чисел. В примере это цифра 10, поэтому функция не может показать число больше 10.
  • Третье число называется step: это шаг, который делает функция при переборе чисел. Можно не указывать шаг, и тогда в нашем примере функция покажет все числа от 5 до 10.

Заданный пример начинается с 5, к этому числу прибавляется по 2, пока мы не упремся в потолок функции. Так, получается следующая последовательность чисел:

  • 5;
  • 5+2=7;
  • 7+2=9.

Range также можно использовать с отрицательными числами и выполнять вычитание. Например: 

for i in range(10, -5, -2):

    print(i)

Результат: 

10

8

6

4

2

0

-2

-4

Вложенные циклы

Циклы while и for можно как использовать по отдельности, так и комбинировать. Можно вложить цикл for внутрь внешнего цикла while и наоборот, а также вкладывать циклы одного вида друг в друга. 

Вложенные циклы работают по следующей схеме: программа сначала сталкивается с внешним циклом и начинает выполнять его условия. Затем запускается внутренний вложенный цикл, который выполняется до своего завершения. Программа будет завершать внутренний цикл и возвращаться к началу внешнего до тех пор, пока последовательность не будет завершена или другой оператор не нарушит этот процесс. 

Вложенный цикл for

Рассмотрим на примере вложенного цикла for, как это работает на практике:

num_list = [1, 2, 3]

alpha_list = ['a', 'b', 'c']

for number in num_list:

    print(number)

    for letter in alpha_list:

        print(letter)

Результат:

1

a

b

c

2

a

b

c

3

a

b

c

По результату выполнения кода видно, что программа завершает первую итерацию внешнего цикла на цифре 1 и затем запускает завершение внутреннего цикла, печатая a, b, c. Как только внутренний цикл завершен, программа возвращается к началу внешнего цикла и печатает цифру 2, а после снова воспроизводит вложенный цикл.

Вложенный цикл while

Вложенный цикл while выглядит так:

i=1

while i<=3 :

    print(i,"Outer loop is executed only once")

    j=1

    while j<=3:

        print(j,"Inner loop is executed until to completion")

        j+=1

    i+=1;

Результат:

1 Outer loop is executed only once

1 Inner loop is executed until to completion

2 Inner loop is executed until to completion

3 Inner loop is executed until to completion

2 Outer loop is executed only once

1 Inner loop is executed until to completion

2 Inner loop is executed until to completion

3 Inner loop is executed until to completion

3 Outer loop is executed only once

1 Inner loop is executed until to completion

2 Inner loop is executed until to completion

3 Inner loop is executed until to completion

Выход из цикла

Если вам нужно пропустить какую-то часть цикла, то прервать его выполнение можно с помощью двух операторов: break или continue

Break позволяет выйти из вложенного цикла сразу во внешний: 

for number in range(3) : 

    print("-------------------------------------------")

    print("I am outer loop iteration "+str(number))

    for another_number in range(3):

        print("****************************")

        print("I am inner loop iteration "+str(another_number))

        break

Результат: 

-------------------------------------------

I am outer loop iteration 0

****************************

I am inner loop iteration 0

-------------------------------------------

I am outer loop iteration 1

****************************

I am inner loop iteration 0

-------------------------------------------

I am outer loop iteration 2

****************************

I am inner loop iteration 0

Если не использовать оператор break в этой части кода, то результат бы выглядел вот так:

-------------------------------------------

I am outer loop iteration 0

****************************

I am inner loop iteration 0

****************************

I am inner loop iteration 1

****************************

I am inner loop iteration 2

-------------------------------------------

I am outer loop iteration 1

****************************

I am inner loop iteration 0

****************************

I am inner loop iteration 1

****************************

I am inner loop iteration 2

-------------------------------------------

I am outer loop iteration 2

****************************

I am inner loop iteration 0

****************************

I am inner loop iteration 1

****************************

I am inner loop iteration 2

Оператор continue позволяет вернуться ко внешнему циклу, полностью пропуская вложенный цикл. В коде continue ставится в конце внешнего цикла:

for number in range(3) :  

    print("-------------------------------------------")

    print("I am outer loop iteration "+str(number))

    continue

    for another_number in range(3):

        print("****************************")

        print("I am inner loop iteration "+str(another_number))

        break

В результате мы видим, что отсутствует внутренний цикл for, а повторяется только внешний элемент цикла: 

-------------------------------------------

I am outer loop iteration 0

-------------------------------------------

I am outer loop iteration 1

-------------------------------------------

I am outer loop iteration 2

Останні статті

Обучение Power BI – какие онлайн курсы аналитики выбрать

Сегодня мы поговорим о том, как выбрать лучшие курсы Power BI в Украине, особенно для…

13.01.2024

Work.ua назвал самые конкурентные вакансии в IТ за 2023 год

В 2023 году во всех крупнейших регионах конкуренция за вакансию выросла на 5–12%. Не исключением…

08.12.2023

Украинская IT-рекрутерка создала бесплатный трекер поиска работы

Unicorn Hunter/Talent Manager Лина Калиш создала бесплатный трекер поиска работы в Notion, систематизирующий все этапы…

07.12.2023

Mate academy отправит работников в 10-дневный оплачиваемый отпуск

Edtech-стартап Mate academy принял решение отправить своих работников в десятидневный отпуск – с 25 декабря…

07.12.2023

Переписки, фото, история браузера: киевский программист зарабатывал на шпионаже

Служба безопасности Украины задержала в Киеве 46-летнего программиста, который за деньги устанавливал шпионские программы и…

07.12.2023

Как вырасти до сеньйора? Девелопер создал популярную подборку на Github

IT-специалист Джордан Катлер создал и выложил на Github подборку разнообразных ресурсов, которые помогут достичь уровня…

07.12.2023