Сколько инструкций может выполнить цикл за одну итерацию

Следующая тема: БРу. Вложенные списки

Вернуться в раздел: Базовый Python

Вернуться в оглавление: Я.Практикум

4. Цикл ‘for’

 4.1 Введение.

 4.2 Понятие цикла. Перебор элементов списка.

duration_list = [142, 175, 152, 195]
for i in duration_list:# напишите цикл for здесь
    print(i)

 4.3 Перебор элементов списка. Функция range()

Задание 1

Инопланетяне оставляют загадочные послания каждый день. Помогите им: напечатайте сообщение ALIENS на экране 100 раз с помощью цикла for.

for i in range(100): 
    print('ALIENS') # напечатайте ваш код здесь
movies_duration = [142, 175, 152, 195, 201]
for i in range(len(movies_duration)): # напишите ваш код здесь
    movies_duration[i] += 2
print(movies_duration)

 4.4 Циклы и встроенные функции для обработки списков.

Встроенная функция max(), min():

movies_duration = [142, 175, 152, 195, 201, 154, 178, 139, 133, 163, 136]
max_duration = max(movies_duration)
print (max_duration) 
marks = [90, 85, 83, 92]
total = sum(marks) # напишите ваш код здесь
print(total)

 4.5 Обработка списков с помощью циклов. Продолжение.

number = 10
fact = 1 # присвойте начальное значение
# напишите цикл
for i in range(1,number+1):
    fact *= i
print (fact)
import math
number = 10
fact = math.factorial(number) # напишите ваш код здесь
print(fact)

 4.6 Заключение

Шпаргалка темы.

 4.7 Проверочные задания. Цикл for

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

Итерации

💡 Итерация — это повтор какого-либо действия. То есть один шаг цикла. Например, цикл из пяти повторений — пять итераций.

💡 Итератор — это интерфейс, который позволяет получить следующий объект последовательности.

💡 Итерируемые объекты — это объекты, которые можно повторять.

В Python проводят итерации только по тем объектам, которые реализуют интерфейс итератора. Это значит, что объект должен переопределять и реализовывать методы __iter__ и __next__.

Метод __iter__ возвращает self — ссылку на экземпляр. С помощью __next__ получают следующий элемент последовательности.

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

Схема работы цикла for

Непрофессионалу сложно разобраться в этих значениях. Но если нравится программирование и хотите его изучать, приходите на курс «Python-разработчик». Вы не только поймете все тонкости работы, но и выполните типовые проекты разработчика, добавите их в портфолио и получите диплом установленного образца. А еще вас ждут консультации центра карьеры, которые помогут быстро найти хорошее место работы.

Виды циклов

В Python есть два вида циклов: for и while.

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

Цикл while — выполнять инструкции до тех пор, пока проверка во главе цикла будет истинной. Его используют, когда заранее не знают количества итераций, поэтому еще его называют циклом с проверкой условия.

Пример:

int i = 0
while i < 10:
    print(“Hello, World!”)
    i++

Он выглядит так:

for (<объявление условия>)
    <условие 1>
        <тело цикла>
    <условие 2>
        <тело цикла>
    <условие n>
        <тело цикла>

    <код, который выполняет каждый шаг>
<код, который выполняется после итерации>

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

Цикл for работает со встроенными типами данных. Например, строки, списки, множества, кортежи, словари и даже файлы.

Всему этому научитесь на первом модуле курса «Python-разработчик». И даже примените новые знания при создании программы, которая позволит расшифровать азбуку Морзе.

🚀 По списку

Чтобы вывести на экран все элементы списка, напишите код:

# список
elems = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

# итерация по списку
for item in elems:
    print(item)
...
0
1
2
3
4
5
6
7
8
9

Такого же результата можно добиться с помощью функции range, которая генерирует последовательность чисел.

# итерация по числам с нуля до 10 не включительно
for i in range(0, 10):
    print(i)
...
0
1
2
3
4
5
6
7
8
9

🚀 С шагом

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

получаем размерность множества;

отнимаем от этого числа единицу;

итерируемся по множеству чисел с нуля до полученного числа включительно;

получаем элементы списка, используя индексацию.

Python для начинающих аналитиков | Урок 2 | Цикл For in, list, метод Split(), tuple

Изучайте Python на онлайн-курсе от Skypro «Python-разработчик». Программа рассчитана на новичков без опыта программирования и технического образования. Курс проходит в формате записанных коротких видеолекций. Будет много проверочных заданий и мастер-классов. В конце каждой недели — живая встреча с экспертами в разработке для ответов на вопросы и разбора домашек.

Каждый шаг цикла делим индекс на 2 с остатком. Если остатка не будет, выводим число на печать. Вот так:

# кортеж
elems = (0, 1, 2, 3, 4, 5, 6, 7, 8, 9)

# получаем размерность
length = len(elems)

# нам не нужно отнимать единицу, так как
# крайнее число в range не входит в последовательность
# первое число тоже не указываем
# по умолчанию — оно равно нулю

for i in range(length):
    # если остатка нет — выводим число
    if i % 2 == 0:
        print(elems[i])
...
0
2
4
6
8

Этот же пример можно выполнить с помощью функции enumerate. На каждой итерации эта функция возвращает индекс элемента и его значение.

# множество
elems = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}

# применяется распаковка кортежа вида (индекс, элемент)
for index, elem in enumerate(elems):
    if index % 2 == 0:
        print(elem)
...
0
2
4
6
8

Так это делают с помощью шага в функции range:

</p>
# каждое второе число от 0 до 10
for i in range(0, 10, 2):
    print(i)
...
0
2
4
6
8

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

Пример:

for chr in "The t3st string"
    if chr.isdigit():
        break

    print(chr)
...
T
h
e

t

# дальше вывод не пойдет, так как слово t3st написано через тройку

Перейти на следующий шаг цикла можно с помощью инструкции continue.

Пример:

for i in range(10):
    if i % 3 == 0:
        continue

    print(i)
...
1
2
4
5
7
8

🚀 По строке

Иногда в алгоритмах нужно применять альтернативные инструкции для объектов, которые не проходят проверку. Выведем на печать каждый символ строки, меняя нижний регистр на верхний:

for chr in "THis is THe TEst sTRinG":
    if chr.islower():
        print(chr.upper())
    else:
        print(chr)
...
T
H
I
S

I
S

T
H
E

T
E
S
T

S
T
R
I
N
G

Если вы хотите прочитать каждую строку файла:

with open('file.txt', 'r') as f:
    for line in f:
        print(line)

🚀 По словарю

Итерацию по словарю проводят тремя способами. Первый и второй способ дают очередной ключ и очередное значение словаря на каждом шаге. Третий — и ключ, и значение за один шаг.

mydict = {1: "one", 2: "two", 3: "three", 4: "four", 5: "five"}
# итерация по ключам
for key in mydict:
    print(f"{key} :: {mydict[key]}")
# вывод вида <ключ :: значение>
...
1 :: one
2 :: two
3 :: three
4 :: four
5 :: five
# по ключам с явным указанием
for key in mydict.keys():
    print(f"{key} :: {mydict[key]}")
# вывод вида <ключ :: значение>
...
1 :: one
2 :: two
3 :: three
4 :: four
5 :: five
# итерация по значениям
for value in mydict.values():
    print(value)
...
one
two
three
four
five
# итерация по ключам и значениям
# применяется распаковка кортежа вида (ключ, значение)
for key, value in mydict.items():
    print(key, value)
...
1 one
2 two
3 three
4 four
5 five

🚀 Обратный цикл

Встроенная функция reversed и слайсинги позволяют проводить итерацию по объекту в обратном порядке.

elems = (0, 1, 2, 3, 4, 5, 6, 7, 8, 9)
# пример
for item in reversed(elems):
    print(item)
...
9
8
7
6
5
4
3
2
1
0

# пример использования слайсингов
for item in elems[::-1]:
    print(item)
...
9
8
7
6
5
4
3
2
1
0

🚀 Генератор

Инструкция for есть в различных выражениях-генераторах, например генераторе списка или словаря.

Разобраться во всех тонкостях языка проще на курсе «Python-разработчик». Вам помогут опытные преподаватели и наставники, вы попрактикуетесь, составите сильное портфолио и резюме, а еще получите диплом установленного образца.

# так мы сделаем список из 20 случайно сгенерированных чисел
mylist = [random.randint(0, 11) for _ in range(20)]

[webinars]

Главное о цикле for

  • For перебирает элементы и выполняет код, который записан в теле цикла. В его основе лежат последовательности.
  • Главное условие успешной работы цикла — объект должен быть итерируемым.
  • Итерацию проводят по многим встроенным структурам данных: строки, словари, списки, множества, кортежи. Внутри инструкции создают ветвления в алгоритме с помощью проверок.
  • Чтобы прервать цикл, используйте ключевое слово break. Чтобы пропустить элемент итерируемого множества — continue.
  • Изучайте Python на онлайн-курсе от Skypro «Python-разработчик». Научитесь писать чистый код, разрабатывать сложную архитектуру сервисов. Даем только актуальные знания: исследовали 1230 вакансий, составили список самых частых требований к разработчикам без опыта и включили их в программу. В конце курса станете уверенным начинающим программистом и найдете работу в IT.

В статье рассказывается:

Что это такое? Циклы в Python – инструменты, упрощающие работу с кодом. В программировании все циклично и последовательно. Написание любой программы состоит из прохождения определенных этапов, задачи в которых могут повторяться. Вот чтобы не тратить время на повторяющиеся элементы и были придуманы циклы. К слову, они есть в любом языке программирования, не только в Python.

Какие бывают? В Python основных циклов всего два – «while» и «for». Первый используется тогда, когда заранее известно количество итераций, а второй – когда нужно выполнить перебор элементов. Но мало знать принципы работы циклов, в работе необходимы еще и операторы, которые делают «while» и «for» бесконечными или вложенными, прерывают их или меняют. Ниже в статье постарались объяснить все это доступным языком с примерами.

В статье рассказывается:

  1. Что такое циклы в языке программирования Python
  2. Зачем нужны циклы в Python
  3. 2 цикла в Python
  4. Примеры циклов в Python
  5. Выход из цикла Python или его смена
  6. Бесконечные и вложенные циклы в Python
  7. Пройди тест и узнай, какая сфера тебе подходит:
    айти, дизайн или маркетинг.

    Бесплатно от Geekbrains

Цикличные задачи имеют место даже в повседневной жизни. Например, различные списки продуктов, целей на день, назначенных встреч и т. д. Приходя в супермаркет, человек ориентируется на список, покупая все товары, которые в нем указаны.

Циклы в языке программирования Python

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

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

В рамках данной темы можно выделить ряд базовых понятий:

  • Единоразовое выполнение — так называемая итерация.
  • Тело цикла — последовательность кода, которую можно исполнить многократно.

Топ-30 самых востребованных и высокооплачиваемых профессий 2023

Поможет разобраться в актуальной ситуации на рынке труда

Подборка 50+ бесплатных нейросетей для упрощения работы и увеличения заработка

Только проверенные нейросети с доступом из России и свободным использованием

ТОП-100 площадок для поиска работы от GeekBrains

Список проверенных ресурсов реальных вакансий с доходом от 210 000 ₽

Уже скачали 34282

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

Зачем нужны циклы в Python

Циклы в Python позволяют сделать из сложных задач более простые. С помощью них вы можете настроить поток программы так, чтобы код повторялся определенное количество раз. Иными словами, вам не придется постоянно прописывать один и тот же код. Допустим, что перед вами стоит задача вывода первых 20 натуральных чисел. Вы, конечно, можете применить оператор «print» 20 раз, но гораздо более удобный вариант — вывести их внутри цикла, который выполняет до 20 итераций.

Читайте также!

Язык программирования Python: особенности и перспективы

Язык программирования Python: особенности и перспективы

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

  1. Возможность перебора элементов структур данных (массивов или связанных списков).
  2. Возможность многократного использования кода.
  3. Отсутствие необходимости прописывать один и то же код несколько раз.

Скачать
файл

Эти преимущества циклов присущи и другим языкам.

2 цикла в Python

Теперь стоит понять, какие циклы существуют в Python. Выделяют две разновидности: «for» и «while». «For» чаще всего применяется в ситуациях, когда необходимо разработать программу, состоящую из множества уровней при наличии большого количества условий.

Оператор цикла Описание
«For» Данный цикл применяется в том случае, если нужно выполнять тот или иной фрагмент вплоть до момента, когда будет исполнено заданное условие. Цикл «for», который иногда называют циклом с предусловием, рекомендуется применять в тех ситуациях, когда вы заранее знаете численность итераций.
«While» Этот цикл применяется в тех случаях, когда численность итераций заранее не известна. Блок операторов выполняется до тех пор, пока не будет выполнено условие, указанное в цикле. У него есть альтернативное название — цикл с предварительной проверкой условия.
«do-while» Он продолжается вплоть до момента, когда будет выполнено заданное условие. Альтернативное название — цикл с постусловием в Python. Применяется в ситуациях, при которых стоит задача как минимум однократного выполнения цикла.

Примеры циклов в Python

Цикл «for»

Данный цикл в языке Python осуществляет поворотное выполнение сформированного кода на основе переменной или счетчика. Он применяется, только если нужно перебрать элементы заранее известное количество раз. Допустим, что у вас есть список. Сначала из него будет взят первый элемент, затем второй и т. д. При этом с каждым из этих элементов будет выполняться действие, заранее предписанное в теле «for». Приведем пример цикла в Python:

Дарим скидку от 60%
на обучение «Веб-разработчик» до 25 мая

Уже через 9 месяцев сможете устроиться на работу с доходом от 150 000 рублей

Забронировать скидку

for [элемент] in [последовательность]:

[сделать указанное]

«For» может также включать в себя различные виды данных: цифры, слова и т. д. К примеру:

for i in 21, 25, ‘один’, ‘два’:

print(i)

После того как будет произведен запуск, на экране отобразится следующее:

21

25

один

два

Только до 26.05

Скачай подборку материалов, чтобы гарантированно найти работу в IT за 14 дней

Список документов:

ТОП-100 площадок для поиска работы от GeekBrains

20 профессий 2023 года, с доходом от 150 000 рублей

Чек-лист «Как успешно пройти собеседование»

Чтобы получить файл, укажите e-mail:

Введите e-mail, чтобы получить доступ к документам

Подтвердите, что вы не робот,
указав номер телефона:

Введите телефон, чтобы получить доступ к документам

Уже скачали 52300

Функция «range()» позволяет упростить работу. Она демонстрирует нужное число повторов последовательности. Тем самым данная функция цикла для Python конкретизирует элементы из списка «for», которые вам нужны в данный момент. В скобках вы увидите от 1 до 3 чисел:

  • 1 число говорит, что следует осуществить проверку всех чисел от 0 и до него;
  • 2 числа свидетельствуют о необходимости проверить все числа, которые располагаются между первым и вторым;
  • 3 числа создадут список от первого до второго с шагом, который будет равен третьему.

Вы, конечно, можете написать код следующим образом:

for i in [21, 22, 23, 24, 25]:

print(i)

Однако это создаст излишние сложности. Это будет проблематично тогда, когда имеет место внушительное количество чисел. Следовательно, имеет смысл применить вышеназванный «range()»:

for i in range(21,25):

print(i)

При любом из этих вариантов вы увидите на экране следующую последовательность:

21

22

23

24

Цикл «while»

Англоязычное слово «while» можно перевести как «до тех пор, как». Данный цикл является довольно универсальным. Он может слегка напоминать условие «if». При этом код «while» выполняется неоднократно. Написание его условия осуществляется до тела цикла. Вслед за первым выполнением программа перемещается обратно к заголовку и опять повторяет те же операции.

В конечном итоге последовательность завершается в том случае, если условие цикла уже не может быть выполнено. Проще говоря, когда оно перестаёт быть истинным. Отличие этого цикла от «for» заключается в том, что разработчик не имеет информации о численности проверок.

Примеры циклов в Python

While переводится как «пока». Продолжим простейший пример цикла про хлеб: пока в доме не появится хлеб, не сделать бутерброд. Чтобы сделать бутерброд, сходите в магазин

Образец цикла «while» в Python:

while [условие истинно]:

[сделать указанное]

Рассмотрим вариант применения:

count = 0

while count < 6:

print(count)

count += 2

В этом случае переменной даётся значение 0. Далее начинается цикл, повторяемое условие которого число меньше 6. Тело цикла, как вы можете видеть, тоже включает в себя две инструкции, каждая из которых выполняет определенную задачу. Первая нужна, чтобы отобразить число на экране, а вторая — чтобы увеличить его значение на два. В итоге повторение цикла производится вплоть до момента, когда условие перестает быть истинным. На экране вы сможете увидеть такую последовательность чисел:

0

2

4

После тела цикла можно вписать «else» и блок операций, которые следует осуществить после завершения «while».

Как правило, она имеет смысл лишь в том случае, когда указана «break». Однако программа функционирует вне зависимости от отсутствия или наличия последней. Рассмотрим код:

count = 3

while count < 7:

print count, » меньше 7″

count = count + 1

else:

print count, » не меньше 7″

Переменной присвоили значение 3. Условие следующее: пока она меньше 7, следует выводить как ее, так и само выражение «меньше 7», после чего прибавлять к ней 1. Если она будет равной 7, то начнёт выполняться условие «else». В таком случае вы увидите на экране, что переменная не меньше 7. Итогом выполнения кода будет следующая запись:

3 меньше 7

4 меньше 7

5 меньше 7

6 меньше 7

7 не меньше 7

Выход из цикла Python или его смена

Чтобы произвести выход из цикла в программировании на Python применяется оператор «break». Он осуществляет досрочное завершение, обходя «else». Для чего же это нужно? К примеру, при выполнении кода была выявлена ошибка, и, следовательно, последующая работа будет безрезультативной.

while True:

name = input(‘Введите имя:’)

if name == ‘хватит’:

break

print(‘Здравствуйте’, имя)

Реализация:

Введите имя: Анатолий

Добрый день Анатолий

Введите имя: Екатерина

Добрый день Екатерина

Введите имя: хватит

Затем выполнение программы будет завершено.

Ещё одна инструкция, вносящая изменения в цикл, — «continue». При написании данного оператора внутри кода программа игнорирует все остальные инструкции до конца цикла. Далее начинается следующая итерация.

Но не стоит делать слишком большой акцент на применении подобных инструкций.

Бесконечные и вложенные циклы в Python

Бесконечные циклы

В этом случае не выполняется условие выхода. Скажем, цикл «while» является таковым в том случае, если его условие не может быть ложным. Он полезен, к примеру, для создания программы «Часы», беспрерывно демонстрирующей время.

В качестве примера рассмотрим следующий код:

Num = 4

while num < 6:

print «Добрый день»

Как вы можете заметить, переменная всегда будет являться числом 4, так как не прописано ее повышение. По этой причине на экране будет отображаться лишь «Добрый день».

Во многих случаях цикл не должен быть бесконечным, так как это является одним из факторов нестабильности при работе программы. Для его завершения следует использовать комбинацию клавиш: «CTRL + C». Однако есть программы, которые вообще не подразумевают возможность выхода. К примеру, операционные системы, прошивки микроконтроллеров и т. д.

Читайте также!

Лучшие книги по Python: с нуля и до профи

Лучшие книги по Python: с нуля и до профи

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

Речь пойдет о вложенных «for» и «while». Рассмотрим несколько вариантов применения таких циклов. Их на постоянной основе применяют в процессе обработки двухмерных списков.

Обратите внимание на пример создания двумерного списка и вывода его на экран посредством «print».

d = [[1,2,3],[4,5,6]]

for i in range(2):

for j in range(3):

print(d[i][j])

После использования одного «break» в Python произойдёт выход лишь из одного цикла. Ниже вы можете посмотреть на условие, которое позволяет выйти сразу из двух.

toExit = False

while True:

while True:

toExit = doSomething()

if toExit:

break

if toExit:

break

Это называется циклом в цикле. Причем они оба являются бесконечными. После того как функция «doSomething» вернет «True», выполнение кода прекратится. Затем друг за другом активируются «break» в каждом из циклов.

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

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

Чаще всего происходит последовательное выполнение команд. Как раз по этой причине, если нужно выполнить тело кода не один раз, применяются рассмотренные выше методы.

Теперь вы знаете, как работают циклы в Python. С их помощью вы сможете упростить повторение, а также сделать его более логичным.

Циклы

Последнее обновление: 31.01.2024

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

  • while

  • for

Цикл while

Цикл while проверяет истинность некоторого условия, и если условие истинно, то выполняет инструкции цикла.
Он имеет следующее формальное определение:

while условное_выражение:
   инструкции

После ключевого слова while указывается условное выражение, и пока это выражение возвращает значение True,
будет выполняться блок инструкций, который идет далее.

Все инструкции, которые относятся к циклу while, располагаются на последующих строках и должны иметь отступ от начала ключевого слова while.

number = 1

while number < 5:
    print(f"number = {number}")
    number += 1
print("Работа программы завершена")

В данном случае цикл while будет выполняться, пока переменная number меньше 5.

Сам блок цикла состоит из двух инструкций:

print(f"number = {number}")
number += 1

Обратите внимание, что они имеют отступы от начала оператора while — в данном случае от начала строки. Благодаря этому Python может определить,
что они принадлежат циклу. В самом цикле сначала выводится значение переменной number, а потом ей присваивается новое значение. .

Также обратите внимание, что последняя инструкция print("Работа программы завершена") не имеет отступов от начала строки, поэтому она не
входит в цикл while.

Весь процесс цикла можно представить следующим образом:

  1. Сначала проверяется значение переменной number — меньше ли оно 5. И поскольку вначале переменная равна 1, то это условие возвращает True,
    и поэтому выполняются инструкции цикла

    Инструкции цикла выводят на консоль строку number = 1. И далее значение переменной number увеличивается на единицу — теперь она равна 2. Однократное выполнение блока инструкций цикла
    называется итерацией. То есть таким образом, в цикле выполняется первая итерация.

  2. Снова проверяется условие number < 5. Оно по прежнему равно True, так как number = 2, поэтому выполняются инструкции цикла

    Инструкции цикла выводят на консоль строку number = 2. И далее значение переменной number опять увеличивается на единицу — теперь она равна 3.
    Таким образом, выполняется вторая итерация.

  3. Опять проверяется условие number < 5. Оно по прежнему равно True, так как number = 3, поэтому выполняются инструкции цикла

    Инструкции цикла выводят на консоль строку number = 3. И далее значение переменной number опять увеличивается на единицу — теперь она равна 4.
    То есть выполняется третья итерация.

  4. Снова проверяется условие number < 5. Оно по прежнему равно True, так как number = 4, поэтому выполняются инструкции цикла

    Инструкции цикла выводят на консоль строку number = 4. И далее значение переменной number опять увеличивается на единицу — теперь она равна 5.
    То есть выполняется четвертая итерация.

  5. И вновь проверяется условие number < 5. Но теперь оно равно False, так как number = 5,
    поэтому выполняются выход из цикла. Все цикл — завершился. Дальше уже выполняются действия, которые определены после цикла. Таким образом, данный цикл
    произведет четыре прохода или четыре итерации

В итоге при выполнении кода мы получим следующий консольный вывод:

number = 1
number = 2
number = 3
number = 4
Работа программы завершена

Для цикла while также можно определить дополнительный блок else, инструкции которого выполняются, когда условие равно False:

number = 1

while number < 5:
    print(f"number = {number}")
    number += 1
else:
    print(f"number = {number}. Работа цикла завершена")
print("Работа программы завершена")

То есть в данном случае сначала проверяется условие и выполняются инструкции while. Затем, когда условие становится равным False, выполняются инструкции
из блока else. Обратите внимание, что инструкции из блока else также имеют отступы от начала конструкции цикла. В итоге в данном случае мы получим
следующий консольный вывод:

number = 1
number = 2
number = 3
number = 4
number =5. Работа цикла завершена
Работа программы завершена

Блок else может быть полезен, если условие изначально равно False, и мы можем выполнить некоторые действия по этому поводу:

number = 10

while number < 5:
    print(f"number = {number}")
    number += 1
else:
    print(f"number = {number}. Работа цикла завершена")
print("Работа программы завершена")

В данном случае условие number < 5 изначально равно False, поэтому цикл не выполняет ни одной итерации и сразу переходит в блоку else.

Цикл for

Другой тип циклов представляет конструкция for. Этот цикл пробегается по набору значений, помещает каждое значение в
переменную, и затем в цикле мы можем с этой переменной производить различные действия. Формальное определение цикла for:

for переменная in набор_значений:
	инструкции

После ключевого слова for идет название переменной, в которую будут помещаться значения. Затем после оператора
in указывается набор значений и двоеточие.

А со следующей строки располагается блок инструкций цикла, которые также должны иметь отступы от начала цикла.

При выполнении цикла Python последовательно получает все значения из набора и передает их переменную. Когда все значения из набора будут
перебраны, цикл завершает свою работу.

В качестве набора значений, например, можно рассматривать строку, которая по сути представляет набор символов. Посмотрим на примере:

message = "Hello"

for c in message:
    print(c)

В цикле определяется переменную c, после оператора in в качестве перебираемого набора указана переменная message, которая хранит
строку «Hello». В итоге цикл for будет перебираеть последовательно все символы из строки message и помещать их в переменную c. Блок самого цикла
состоит из одной инструкции, которая выводит значение переменной с на консоль. Консольный вывод программы:

H
e
l
l
o

Нередко в связке с циклом for применяется встроенная функция range(), которая генерирует числовую последовательность:

for n in range(10):
    print(n, end=" ")

Если функцию range передается один параметр, то он означает максимальное значение диапазона чисел. В данном случае генерируется последовательность от 0 до 10 (не включительно). В итоге мы получим следующий консольный вывод:

0 1 2 3 4 5 6 7 8 9

Также в функцию range() можно передать минимальное значение диапазона

for n in range(4, 10):
    print(n, end=" ")

Здесь генерируется последовательность от 4 до 10 (не включая). Консольный вывод:

4 5 6 7 8 9

Также в функцию range() можно передать третий параметр, который указывает на приращение:

for n in range(0, 10, 2):
    print(n, end=" ")

Здесь генерируется последовательность от 0 до 10 (не включая) с приращением 2. Консольный вывод:

0 2 4 6 8

Цикл for также может иметь дополнительный блок else, который выполняется после завершения цикла:

message = "Hello"
for c in message:
    print(c)
else:
    print(f"Последний символ: {c}. Цикл завершен");
print("Работа программы завершена")  # инструкция не имеет отступа, поэтому не относится к else

В данном случае мы получим следующий консольный вывод:

H
e
l
l
o
Последний символ: o. Цикл завершен
Работа программы завершена

Стоит отметить, что блок else имеет доступ ко всем переменным, которые определены в цикле for.

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

Одни циклы внутри себя могут содержать другие циклы. Рассмотрим на примере вывода таблицы умножения:

i = 1
j = 1
while i < 10:
    while j < 10:
        print(i * j, end="\t")
        j += 1
    print("\n")
    j = 1
    i += 1

Внешний цикл while i < 10: срабатывает 9 раз пока переменная i не станет равна 10. Внутри этого цикла срабатывает
внутренний цикл while j < 10:. Внутренний цикл также срабатывает 9 раз пока переменная j не станет равна 10.
Причем все 9 итераций внутреннего цикла срабатывают в рамках одной итерации внешнего цикла.

В каждой итерации внутреннего цикла на консоль будет выводится произведение чисел i и j. Затем значение переменной j увеличивается на единицу.
Когда внутренний цикл закончил работу, значений переменной j сбрасывается в 1, а значение переменной i увеличивается на единицу и происходит переход к
следующей итерации внешнего цикла. И все повторяется, пока переменная i не станет равна 10. Соответственно внутренний цикл сработает всего
81 раз для всех итераций внешнего цикла. В итоге мы получим следующий консольный вывод:

1	2	3	4	5	6	7	8	9	

2	4	6	8	10	12	14	16	18	

3	6	9	12	15	18	21	24	27	

4	8	12	16	20	24	28	32	36	

5	10	15	20	25	30	35	40	45	

6	12	18	24	30	36	42	48	54	

7	14	21	28	35	42	49	56	63	

8	16	24	32	40	48	56	64	72	

9	18	27	36	45	54	63	72	81	

Подобным образом можно определять вложенные циклы for:

for c1 in  "ab":
    for c2 in "ba":
        print(f"{c1}{c2}")

В данном случае внешний цикл проходит по строке «ab» и каждый символ помещает в переменную c1. Внутренний цикл проходит по строке «ba», помещает каждый
символ строки в переменную c2 и выводит сочетание обоих символов на консоль. То есть в итоге мы получим все возможные сочетания символов a и b:

ab
aa
bb
ba

Выход из цикла. break и continue

Для управления циклом мы можем использовать специальные операторы break и continue.
Оператор break осуществляет выход из цикла. А оператор continue выполняет переход к следующей итерации цикла.

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

number = 0
while number < 5:
    number += 1
    if number == 3 :    # если number = 3, выходим из цикла
        break
    print(f"number = {number}")

Здесь цикл while проверяет условие number < 5. И пока number не равно 5, предполагается, что значение number будет
выводиться на консоль. Однако внутри цикла также проверяется другое условие: if number == 3. То есть, если значение number равно 3, то с помощью
оператора break выходим из цикла. И в итоге мы получим следующий консольный вывод:

В отличие от оператора break оператор continue выполняет переход к следующей
итерации цикла без его завершения. Например, в предыдущем примере заменим break на continue:

number = 0
while number < 5:
    number += 1
    if number == 3 :    # если number = 3, переходим к новой итерации цикла
        continue
    print(f"number = {number}")

И в этом случае если значение переменной number равно 3, последующие инструкции после оператора continue не будут выполняться:

number = 1
number = 2
number = 4
number = 5

#Руководства


  • 0

Они есть практически в каждом языке программирования, но в Python с ними работать приятнее всего. Как, впрочем, и со всем остальным.

Иллюстрация: Катя Павловская для Skillbox Media

Журналист, изучает Python. Любит разбираться в мелочах, общаться с людьми и понимать их.

Код в Python обычно выполняется последовательно: первая строка, потом вторая, третья и так далее. Но некоторые конструкции позволяют нарушать этот порядок, чтобы совершать более сложные операции.

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

  • Как работают циклы
  • Цикл while в Python
  • Цикл for в Python
  • Функция range()
  • Однострочный цикл: генератор списков
  • Прерывание цикла: ключевое слово break
  • Пропуск части цикла: ключевое слово continue
  • Последнее действие в цикле: ключевое слово else
  • Бесконечный цикл
  • Как сделать аналог do while в Python
  • Вложенные циклы в Python

Любой цикл состоит из двух обязательных элементов:

  • условие — начальный параметр; цикл запустится только при его выполнении и закончится, как только условие перестанет выполняться;
  • тело — сама программа, которая выполняется внутри цикла.

Схематически его можно представить так:

Инфографика: Майя Мальгина для Skillbox Media

В синтаксисе Python в конце строки с условием ставится двоеточие, а всё тело выделяется отступом (табуляцией или четырьмя пробелами).

программа до цикла
условие:
	первая строка тела
	вторая строка тела
программа после цикла

While — наиболее простой и понятный вид цикла. Его ещё называют циклом с предусловием.

x = 1
while x < 5:
    print(x)
    x += 1  # Означает то же самое, что x = x + 1
>>> 1
>>> 2
>>> 3
>>> 4

С языка Python на русский программу можно перевести так: «Пока икс меньше пяти, печатай икс и прибавляй к нему единицу».

Но в простоте while кроется и опасность: его легко сделать бесконечным. Например, если в коде выше мы уберём x += 1, то получится вот так:

# Этот код будет выполняться бесконечно
x = 1
while x < 5:
    print(x)

Здесь с переменной x ничего не происходит. Она всегда равна единице, поэтому условие цикла никогда не перестанет выполняться. Соответственно, он никогда не завершится.

Чтобы избежать таких ситуаций, при использовании while нужно следить: перестанет ли когда-нибудь выполняться условие? Ещё можно использовать оператор break — о нём мы расскажем чуть позже.

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

На каждой итерации цикла программа как бы спрашивает: «Остались ли в объекте ещё элементы, по которым я не прошла?»

Допустим, у нас есть список с числами: [14, 101, -7, 0]. Мы можем использовать его вместе с for, чтобы напечатать каждый элемент по отдельности.

num_list = [14, 101, -7, 0]
for number in num_list:
    print(number)
>>> 14
>>> 101
>>> -7
>>> 0

Здесь переменная number обновляется при каждом новом витке цикла. Сначала она хранит в себе первый элемент, потом второй, и так — пока список не закончится.

Как и любую другую переменную, мы могли назвать number как угодно. Часто используют буквы i, j и k. Если внутри цикла мы ни разу не обращаемся к этой переменной, то среди питонистов её принято обозначать символом нижнего подчёркивания _.

Когда нужно применить for к числовому промежутку, его можно задать диапазоном. Для этого используют функцию range(). В неё можно передать от одного до трёх аргументов.

Если аргумент один, то сформируется диапазон от нуля до числа, предшествующего значению аргумента.

for i in range(3):
    print(i)
>>> 0
>>> 1
>>> 2

Если аргумента два, то сформируется диапазон от значения первого аргумента до числа, предшествующего значению второго аргумента.

for i in range(23, 26):
    print(i)
>>> 23
>>> 24
>>> 25

Если аргумента три, то первые два работают, как в прошлом случае. Третий же означает шаг, с которым числа следуют друг за другом.

for i in range(10, 20, 3):
    print(i)
>>> 10
>>> 13
>>> 16
>>> 19

Если в теле цикла for выполняется всего одно действие, синтаксис Python позволяет сократить его запись до:

i for i in iterable_object

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

num_list = [i for i in range(1, 11)]
print(num_list)
>>> [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

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

print([i for i in range(1, 11) if i % 2 == 0])
>>> [2, 4, 6, 8, 10]

Конструкция if i % 2 == 0 означает: «если при делении i на 2 остаток равен 0».

С самой переменной i тоже можно проводить операции. Используем предыдущий генератор, но теперь будем выводить не сами чётные числа, а их квадраты.

print([i ** 2 for i in range(1, 11) if i % 2 == 0])
>>> [4, 16, 36, 64, 100]

Главное при таком подходе — сильно не увлекаться. Если код тяжело прочесть и понять (например, когда к i применяется сразу несколько функций и методов и вдобавок задаётся сложное условие), то лучше разбить его на несколько строк. Понятность важнее лаконичности.

Бывают случаи, когда нужно завершить цикл принудительно, даже если его условие всё ещё выполняется. В таких случаях используют ключевое слово break.

Возьмём строку Hi, loop! и будем выводить каждый её символ. Если встретим запятую, досрочно завершим цикл.

string = 'Hi, loop!'
for i in string:
    if i == ',':
        break
    print(i)
>>> H
>>> i

Если же в строке запятой не будет, то цикл пройдёт по каждому её символу — и только потом завершится.

string = 'Hi loop!'
for i in string:
    if i == ',':
        break
    print(i)
>>> H
>>> i
>>>  
>>> l
>>> o
>>> o
>>> p
>>> !

Иногда возникает необходимость принудительно начать следующий шаг цикла, пропустив часть строк в его теле. Для таких случаев существует ключевое слово continue.

Возьмём числа от 1 до 10 включительно и выведем из них только те, которые не делятся ни на 2, ни на 3.

for i in range(1, 10):
    if i%2 == 0 or i%3 == 0:
        continue
    print(i)
>>> 1
>>> 5
>>> 7

Как видим, если срабатывает условие if (то есть если число делится на 2 или на 3 без остатка), то оставшаяся часть тела не работает — и i не печатается.

Обычно ключевое слово else употребляют в связке с if, но у него есть и другое применение. Его можно использовать вместе с while или for. В таком случае else-код выполнится после того, как пройдут все витки цикла.

Если же цикл досрочно прервётся из-за break, то часть программы в else не выполнится.

Вспомним наш код со строкой Hi, loop! и добавим к нему else.

string = 'Hi, loop!'
for i in string:
    if i == ',':
        break
    print(i)
else:
    print('Цикл завершился без break')
>>> H
>>> i

В строке была запятая, сработал break — не выполнилось else-условие. Теперь уберём из неё запятую и посмотрим, что получится.

string = 'Hi loop!'
for i in string:
    if i == ',':
        break
    print(i)
else:
    print('Цикл завершился без break')
>>> H
>>> i
>>>  
>>> l
>>> o
>>> o
>>> p
>>> !
>>> Цикл завершился без break

Цикл прошёл все свои итерации, завершился самостоятельно, и поэтому код в else выполнился. Он также будет работать, если цикл не совершил ни одного витка.

while 1 == 0:
    print('Эта строка никогда не выполнится')
else:
    print('Цикл завершился без break')
>>> Цикл завершился без break

Иногда использовать бесконечный цикл может быть хорошей идеей. Например, мы пишем игру: она должна работать до тех пор, пока игрок из неё не выйдет. В этом случае в условии выхода нужно будет прописать break.

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

# Способ №1 — «пока истинно»
while True:
	pass  # pass — оператор-заглушка, который ничего не делает

Если сделать while False, то цикл, наоборот, никогда не начнётся.

# Способ №2 — «пока проверяемое значение — любое ненулевое число»
while 1:
	pass
while -4:
	pass
while 2023:
	pass

Если сделать while 0, то цикл никогда не начнётся.

# Способ №3 — «пока проверяемое значение — непустой элемент»
while 'string':
	pass
while [False, 'list', 0]:
	pass

Если после while поставить пустой элемент — например, строку str() или список list(), то цикл никогда не начнётся.

# Способ №4 — корректное уравнение
while 1 == 1:
	pass
while 0 != 1:
	pass

Альтернативный подход — поместить после while переменную, в которой лежит подходящее условие. Например:

# Способ №1
condition = True
while condition:
	pass
# Способ №2
condition = 1
while condition:
	pass
# Способ №3
condition = 'string'
while condition:
	pass

В таких случаях для выхода из цикла можно не использовать оператор break, а заменить значение в переменной condition на False, 0, None или любой пустой элемент. Цикл закончит последний виток и завершится, потому что условие больше не будет выполняться.

Такой подход применяется, когда нужно завершить цикл из других мест программы: например, из функции или вложенного цикла. Ещё одно отличие: так как цикл завершается «естественно», без оператора break, в нём выполнится else-код (если он есть).

condition = True
x = 0
while condition:
    print(x)
    x += 1
    if x == 3:
        condition = False
else:
    print('Цикл завершился без break')
>>> 0
>>> 1
>>> 2
>>> Цикл завершился без break

В некоторых языках программирования есть ещё один вид цикла — с постусловием. Он всегда проходит хотя бы один виток и только после этого проверяет, выполняется ли условие. Вот его схема:

Инфографика: Майя Мальгина для Skillbox Media

В Java и C++ такое достигается с помощью конструкции do while, но в Python её нет. Зато можно сделать аналог. Для этого нужно использовать бесконечный цикл, а внутри его тела прописать условие завершения.

x = 12
while True:
    x += 1
    print(x)
    if x > 5:
        break
>>> 13

Каким бы ни было значение x, такой цикл пройдёт хотя бы один виток. А это и есть постусловие.

Циклы в Python можно вкладывать друг в друга — то есть в теле одного цикла вызывать другой. Логика программы при этом усложняется.

Инфографика: Майя Мальгина для Skillbox Media

Можно вкладывать друг в друга сколько угодно циклов. При этом для каждого нового уровня вложенности нужно увеличивать отступ. Выглядит это так:

while condition:
    pass
    while inner_condition:
        pass
    pass

Напишем программу, которая будет выводить номер итерации внешнего и внутреннего цикла.

for i in range(3):
    print(f'Итерация внешнего цикла: {i}')
    for j in range(2):
        print(f'Итерация внутреннего цикла: {j}')
>>> Итерация внешнего цикла: 0
>>> Итерация внутреннего цикла: 0
>>> Итерация внутреннего цикла: 1
>>> Итерация внешнего цикла: 1
>>> Итерация внутреннего цикла: 0
>>> Итерация внутреннего цикла: 1
>>> Итерация внешнего цикла: 2
>>> Итерация внутреннего цикла: 0
>>> Итерация внутреннего цикла: 1

  • Циклы — один из основных инструментов любого Python-разработчика. С их помощью всего за пару строчек кода можно совершить сразу множество повторяющихся действий.
  • Циклы состоят из условия и тела. Код в теле выполняется только до тех пор, пока соблюдено условие.
  • В Python есть два вида циклов: while и for. В while условие задаётся явным образом. В for перебирается каждый элемент коллекции.
  • К обоим видам можно применять разные операторы: break для прерывания, continue для пропуска части тела, else для совершения последнего действия перед выходом из цикла.
  • Циклы можно делать бесконечными (тогда программа никогда не завершится или завершится только при выполнении определённого условия) и вкладывать друг в друга.

Бесплатный курс: «Быстрый старт в Python»
Начать учиться

Понравилась статья? Поделить с друзьями:
0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии
  • Повязка протеокс тм инструкция по применению
  • Отдельная инструкция в описании алгоритма
  • Probiotic 10 25 billion now инструкция
  • Piyeloseptyl 100 инструкция на русском языке
  • Инструкция по технике безопасности при занятиях по лыжной подготовке