Введение в Python

Цикл for и цикл while в Python — 9 примеров

Цикл for и цикл while в Python — 9 примеров
В: Введение в Python

Как устроены циклы в Python?

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

Синтаксис цикла for в Python

Цикл for в Python итерирует по заданной последовательности и обладает следующим синтаксисом:

for <variable> in <iterable>:
for <variable> in range(<number>):
for <variable> in range(<start_number>, <end_number>):
for <variable> in range(<start_number>, <end_number>, <step_size>):
for i, <variable> in enumerate(<iterable>): # с индексом i
for <variable1>, <variable2> in zip(<iterable1>, <iterable2>):

Синтаксис цикла while в Python

Цикл while в Python повторяется, пока выполняется определенное логическое условие и обладает следующим синтаксисом:

while <boolean expression>:
  ...

Как работать с циклами в Python?

Ниже собраны примеры решений основных задач, с которыми сталкиваются Python разработчики и дата-саентисты:

Как перебрать значения списка циклом for?

Циклы for перебирают коллекцию элементов, таких как list или dict, и запускают блок кода с каждым элементом из коллекции.

for i in [0, 1, 2, 3, 4]:
	print(i)

# 0
# 1
# 2
# 3
# 4

Вышеприведенный цикл for выполняет итерацию по списку чисел.
Каждая итерация устанавливает значение i для следующего элемента списка. Итак, сначала это будет 0, затем 1, затем 2 и т.д

Аналогично, цикл работает с любыми типами списков, например, со списком строк:

Часто, необходимо сгенерировать последовательность чисел и обойти ее, для этого удобно использовать функцию range:

for x in range(1, 6):
	print(x)

# 1
# 2
# 3
# 4
# 5

Как получить индекс элемента в цикле for в Python?

Если вы хотите зациклить как элементы списка, так и индекс для элементов, вы можете использовать функцию enumerate:

for index, item in enumerate(['one', 'two', 'three', 'four']):
	print(index, '::', item)

# (0, '::', 'one')
# (1, '::', 'two')
# (2, '::', 'three')
# (3, '::', 'four')

Функция enumerate генерирует кортежи, которые распаковываются в индекс (целое число) и элемент (фактическое значение из списка).

Как перебрать словарь (dict) циклом for?

Ключи словаря в Python можно перебрать циклом for следующим образом:

Это эквивалентно использованию метода словаря keys:

Для перебора значений словаря в Python необходимо использовать метод словаря values:

d = {"a": 1, "b": 2, "c": 3}
for value in d.values():
    print(values)
# Вывод:
# 1
# 2
# 3

Для перебора ключей и значений словаря используйте метод items:

Метод items возвращает последовательность кортежей, использование for с несколькими переменными (key, value) называется распаковкой. Ее можно применять и для списков:

collection = [('a', 'b', 'c'), ('x', 'y', 'z'), ('1', '2', '3')]
for i1, i2, i3 in collection:
    print('i1 =', i1, ':: i2 =', i2, ':: i3 =', i3)
    
# Вывод:
# i1 = a :: i2 = b :: i3 = c
# i1 = x :: i2 = y :: i3 = z
# i1 = 1 :: i2 = 2 :: i3 = 3

Как работает цикл while в Python?

Цикл while будет повторять код в блоке, пока условие цикла не станет False. Следующий код выполнит код в блоке цикла 4 раза:

i = 0 
while i < 4:
    i = i + 1

Если условие всегда истинно, цикл while будет выполняться бесконечно. Бесконечный цикл можно завершить оператором break, return или исключением.

while True:
    print "Infinite loop"

# Вывод:
# Infinite loop
# Infinite loop
# Infinite loop
# ...

Что такое pass в Python или как ничего не делать в цикле?

pass — это нулевой оператор и используется, когда оператор требуется синтаксисом Python (например, в теле цикла for или while), но никакие действия не нужны. Этот оператор можно использовать как заполнитель для кода, который ещё не написан.

for x in range(10):
	pass # нам не нужно ничего выполнять или пока не знаем что здесь должно быть, поэтому используем pass

В этом примере ничего не произойдёт. Цикл for завершится без ошибок, но никакие команды или код не будут выполнены. pass позволяет нам успешно выполнять наш код без полной реализации всех команд и действий.

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

while x == y:
	pass

Как выполнить следующий проход цикла используя оператор continue?

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

Обратите внимание, что 2 и 4 не выводятся. Это происходит потому, что continue переходит к следующей итерации, а не продолжает выводить i, когда i==2 или i==4.

Как досрочно выйти из цикла используя оператор break?

Оператор break моментально прерывает дальнейшее выполнение кода внутри цикла:

Использование операторы break, как и в случае с continue, допускаются только внутри циклов.

Оператор break также доступен внутри циклов for:

Обратите внимание, что 3 и 4 не выводятся после окончания цикла.

Если цикл имеет условие else, оно не выполняется, когда цикл завершается с помощью оператора break.

Как выполнить код после завершения цикла используя оператор else?

Циклы for и while могут иметь условие else.

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

Пример условия else в цикле for:

for i in range(3):
	print(i)
else:
	print('done')

# 0
# 1
# 2
# done

Пример условия else в цикле while:

Условие else не выполняется, если цикл завершается принудительно (например, с помощью оператора break или путем вызова исключения):

Зачем использовать конструкцию for/while ... else?

Частой задачей на использование конструкции for ... else является реализация поиска, например:

a = [1, 2, 3, 4]
for i in a:
    if type(i) is not int:
        print(i)
        break
else:
    print("no exception") 
# Вывод:
# no exception

Для простоты восприятия, можно читать эту конструкцию как «if not break» или «if not found».

Как вернуть значение из цикла оператором return?

Оператор return выводит значение из функции, не выполняя следующий за нем код.

Если у вас есть цикл внутри функции, использование return внутри цикла эквивалентно break, поскольку остальная часть кода цикла не выполняется. Код следующий за циклом также не выполняется:

Если вы используете return во вложенных циклах, оператор return прервёт все циклы:

Упражнение для закрепления

Обойдите и распечатайте массив всех четных чисел из списка в том же порядке, в котором они были получены. Не выводите  цифры, которые появятся в последовательности после 237.

Решение упражнения

numbers = [951, 402, 984, 651, 360, 69, 408, 319, 601, 485, 980, 507,
           725, 547, 544, 615, 83, 165, 141, 501, 263, 617, 865, 575,
           219, 390, 984, 592, 236, 105, 942, 941, 386, 462, 47, 418,
           907, 344, 236, 375, 823, 566, 597, 978, 328, 615, 953, 345,
           399, 162, 758, 219, 918, 237, 412, 566, 826, 248, 866, 950,
           626, 949, 687, 217, 815, 67, 104, 58, 512, 24, 892, 894, 767,
           553, 81, 379, 843, 831, 445, 742, 717, 958, 609, 842, 451, 688,
           753, 854, 685, 93, 857, 440, 380, 126, 721, 328, 753, 470,743, 527]

# your code goes here
output = []

for number in numbers:
  if number == 237:
    break

  if number % 2 == 1:
    continue

  output.append(number)
print(output)
Еще от кодкамп
Оглавление
Замечательно! Вы успешно подписались.
Добро пожаловать обратно! Вы успешно вошли
Вы успешно подписались на кодкамп.
Срок действия вашей ссылки истек.
Ура! Проверьте свою электронную почту на наличие волшебной ссылки для входа.
Успех! Ваша платежная информация обновлена.
Ваша платежная информация не была обновлена.