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

Циклы в 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

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

Что такое прокси-сервер: пояснение простыми словами, зачем нужны прокси

Прокси (proxy), или прокси-сервер — это программа-посредник, которая обеспечивает соединение между пользователем и интернет-ресурсом. Принцип…

21.11.2024

Что такое PWA приложение? Зачем необходимо прогрессивное веб-приложение

Согласитесь, было бы неплохо соединить в одно сайт и приложение для смартфона. Если вы еще…

19.11.2024

Как создать игру на телефоне: программирование с помощью конструктора

Повсеместное распространение смартфонов привело к огромному спросу на мобильные игры и приложения. Миллиарды пользователей гаджетов…

17.11.2024

Google Bard: эффективный аналог ChatGPT

В перечне популярных чат-ботов с искусственным интеллектом Google Bard (Gemini) еще не пользуется такой популярностью…

14.11.2024

Скрипт и программирование: что это такое простыми словами

Скрипт (англ. — сценарий), — это небольшая программа, как правило, для веб-интерфейса, выполняющая определенную задачу.…

12.11.2024

Дедлайн в разработке: что это такое простыми словами

Дедлайн (от англ. deadline — «крайний срок») — это конечная дата стачи проекта или задачи…

11.11.2024