Как инструкция break влияет на работу цикла

Курс по Python: https://stepik.org/course/100707

Мы продолжаем курс по языку Python. Это занятие
начнем со знакомства операторов break и continue цикла while. Суть этих
операторов, в следующем:

  • break
    – досрочное завершение цикла;

  • continue
    – пропуск одной итерации цикла.

Давайте сначала
рассмотрим работу оператора break. Если в качестве условия цикла записать
значение True:

print("запуск цикла")
 
i = 0
while True:
    i += 1
 
print("завершение цикла")

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

Обратите
внимание, оператор i += 1 один раз будет выполнен, а прерывание
сработает только в строчке с оператором break.

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

И мы хотим
определить, есть ли среди них хотя бы одно четное значение. Здесь удобно
воспользоваться оператором break. Как только встретим первое четное
значение, дальнейшую проверку можно не проводить:

d = [1, 5, 3, 6, 0, -4]
flFind = False
i = 0
 
while i < len(d):
    flFind = d[i] % 2 == 0
    if flFind:
        break
 
    i += 1
 
print(flFind)

Конечно, эту же
программу можно было бы построить и без break, используя
составное условие:

i = 0
while i < len(d) and d[i] % 2 != 0:
    i += 1
 
flFind = i != len(d)

Но, на мой
взгляд, первый вариант с break красивее и понятнее, чем второй. Хотя,
все дело вкуса – кому, как нравится.

Я, думаю, что
принцип работы оператора break понятен. Он прерывает работу любого
оператора цикла, как только выполнение программы перейдет к нему.

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

Предположим, что
мы просим пользователя вводить с клавиатуры числа и все нечетные значения
суммируем. Как только пользователь введет 0, подсчет суммы прекращается.
Реализовать эту программу удобно, следующим образом:

s = 0
d = 1
while d != 0:
    d = int(input("Введите целое число: "))
    if d % 2 == 0:
        continue
 
    s += d
    print("s = " + str(s))

Смотрите, мы
здесь на каждой итерации цикла проверяем, если текущее значение d четное, то
последующий подсчет суммы и вывод ее в консоль не выполняется, пропускается.
При этом, цикл продолжает свою работу и переходит к следующей итерации, пока
пользователь не введет число 0. Благодаря оператору continue мы основную
логику программы прописываем непосредственно в теле цикла, а не во вложенном
блоке условного оператора. То есть, если программу переписать без continue, то она бы
выглядела так:

s = 0
d = 1
while d != 0:
    d = int(input("Введите целое число: "))
    if d % 2 != 0:
        s += d
        print("s = " + str(s))

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

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

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

И здесь
возникает вопрос: а чем блок else отличается от блока операторов, просто
идущих после блока while? Ведь когда цикл while завершается, мы
так и так переходим к последующим операторам! Но обратите внимание вот на эту на
фразу «штатное завершение цикла». Штатное завершение – это когда условие цикла
стало равно False и оператор while прекращает свою
работу. Только в этом случае мы перейдем в блок else. Давайте я
покажу это на конкретном примере. Предположим, что мы вычисляем сумму вида:

S = 1/2 + 1/3 +
1/4 + 1/10 + … + 1/0

И если в этом
сумме встречается деление на ноль, то вычисления следует прервать. Реализуем
эту программу, следующим образом:

S=0
i=-10
 
while i < 100:
    if i == 0:
        break
 
    S += 1/i
    i += 1
else:
    print("Сумма вычислена корректно")
 
print(S)

Смотрите, если
здесь при вычислении суммы встречается деление на 0, то срабатывает break и цикл досрочно
прерывается, то есть, завершается в нештатном режиме. В этом случае блок else пропускается и
мы не видим сообщения, что сумма вычислена корректно. Если же все проходит
штатно и цикл завершается по своему условию, то в консоли появляется сообщение
«Сумма вычислена корректно», означающее выполнение блока else.

Надеюсь, из
этого примера вам стало понятно назначение оператора else цикла while. Также из этого
занятия вы должны себе хорошо представлять работу операторов break и continue. После
закрепления этого материала практическими заданиями, жду всех вас на следующем
уроке.

Курс по Python: https://stepik.org/course/100707

Видео по теме

В этой статье вы познакомитесь с инструкциями break и continue — их еще называют инструкциями управления циклом. 

Для чего нужны break и continue

Инструкции break и continue управляют циклом.

Циклы выполняют блок когда до тех пор, пока условие цикла истинно. Иногда нужно прервать выполнение целого цикла без проверки условия. 

В таких случаях нам помогут инструкции break и continue.

Инструкция break

Инструкция break прерывает цикл, в котором он объявлен. После этого управление программой передается инструкции, которая находится после тела цикла. 

Если инструкция break находится внутри вложенного цикла (цикл в цикле), то прерывается внутренний цикл.

Синтаксис break

break

Блок-схема break

Ниже представлен пример работы инструкции break в циклах for и while.

Пример использования break

# Пример использования break внутри цикла

for val in "строка":
    if val == "о":
        break
    print(val)

print("Конец")

Вывод:

с
т
р
Конец

В этой программе мы итерируем строку «строка». В теле цикла мы проверяем буквы — если это «о», прерываем цикл. Как видите, в выводе напечатаны все буквы до «о». Когда переменная val принимает значение «о», цикл завершается. 

Инструкция continue

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

Синтаксис continue

continue

Блок-схема continue

Ниже представлен пример работы инструкции continue в циклах for и while.

Пример использования continue

# Пример использования continue внутри цикла

for val in "строка":
    if val == "о":
        continue
    print(val)

print("Конец")

Вывод:

с
т
р
к
а
Конец

Эта программа очень похожа на вышестоящий пример. Единственное отличие — break мы заменили на continue

Мы продолжаем цикл до тех пор, пока не встретим «о» — в этот момент мы пропускаем оставшуюся часть цикла. Как видите, мы напечатали все буквы, кроме «о». 

  • Главная

  • Инструкции

  • Python

  • Операторы break, continue и pass в циклах Python 3

При работе с циклами while и for бывает необходимо выполнить принудительный выход, пропустить часть или игнорировать заданные условия. Для первых двух случаев используются операторы break и continue Python, а для игнорирования условий — инструкция pass. Давайте посмотрим на примерах, как работают эти операторы.

Инструкция break в языке программирования Python прерывает выполнение блока кода. Простейший пример:

for j in 'bananafishbones':
    if j == 'f':
        break
    print(j)

Получаем такой вывод:

b
a
n
a
n
a

Как только программа после нескольких итераций доходит до элемента последовательности, обозначенного буквой f, цикл (loop) прерывается, поскольку действует оператор break. Теперь рассмотрим работу этой инструкции в цикле while:

x = 0
while x < 5:
    print(x)
    x += 0.5
print('Выход')

Вывод будет следующий (приводим с сокращениями):

0
0.5

4.0
4.5
Выход

Как только перестает выполняться условие и x становится равным 5, программа завершает цикл. А теперь перепишем код с использованием инструкции break:

x = 0
while True:
    print(x)
    if x >= 4.5:
        break
    x += 0.5
print('Выход')

Результат тот же:

0
0.5

4.0
4.5
Выход

Мы точно так же присвоили x значение 0 и задали условие: пока значение x истинно (True), продолжать выводить его. Код, правда, получился немного длиннее, но бывают ситуации, когда использование оператора прерывания оправданно: например, при сложных условиях или для того, чтобы подстраховаться от создания бесконечного цикла. Уберите из кода выше две строчки:

x = 0
while True:
    print(x)
    x += 0.5
print('Выход')

И перед нами бесконечный вывод:

0
0.5

100
100.5

1000000
1000000.5

И слово в конце (‘Выход’), таким образом, никогда не будет выведено, поскольку цикл не закончится. Поэтому при работе с последовательностями чисел использование оператора break убережет вас от сбоев в работе программ, вызываемых попаданием в бесконечный цикл.

Конструкция с else

Иногда необходимо проверить, был ли цикл исполнен до конца или выход произошел с использованием инструкции break. Для этого добавляется проверка по условию с else. Напишем программу, которая проверяет фразу на наличие запрещенных элементов:

word = input('Введите слово: ')
for i in word:
    if i == 'я':
        print('Цикл был прерван, обнаружена буква я')
        break
else:
    print('Успешное завершение, запрещенных букв не обнаружено')
print('Проверка завершена')

Теперь, если пользователь введет, например, «Привет!», программа выдаст следующее:

Успешное завершение, запрещенных букв не обнаружено
Проверка завершена

Но если во введенном слове будет буква «я», то вывод примет такой вид:

Цикл был прерван, обнаружена буква я
Проверка завершена

Небольшое пояснение: функция input принимает значение из пользовательского ввода (выражение 'Введите слово: ' необходимо только для пользователя, для корректной программы хватило бы и такой строки: word = input ()) и присваивает его переменной word. Последняя при помощи for поэлементно (в данном случае — побуквенно) анализируется с учетом условия, вводимого if.

Оператор continue в Python

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

word = input('Введите слово: ')
for i in word:
    if i == 'я':
        continue
    print(i)

Попробуйте ввести, например, «яблоко», в этом случае вывод будет таким:

б
л
о
к
о

Это происходит потому, что мы задали условие, по которому элемент с определенным значением (в данном случае буква «я») не выводится на экран, но благодаря тому, что мы используем инструкцию continue, цикл доходит до последней итерации и все «разрешенные» элементы выводятся на экран. Но в коде выше есть одна проблема: если пользователь введет, например, «Яблоко», программа выведет слово полностью, поскольку не учтен регистр:

Я
б
л
о
к
о

Наиболее очевидное решение в данном случае состоит в добавлении и заглавной буквы в блок if таким образом:

word = input('Введите слово: ')
for i in word:
    if i == 'я' or i == 'Я':
        continue
    print(i)

Оператор pass в Python

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

word = input('Введите слово: ')
for i in word:
    if i == 'я':
        pass
else:
    print('Цикл завершен, запрещенных букв не обнаружено')
print('Проверка завершена')

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

Вот и всё, надеемся, скоро break, continue и pass станут вашими верными друзьями в разработке интересных приложений. Успехов! 

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


  • 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 для совершения последнего действия перед выходом из цикла.
  • Циклы можно делать бесконечными (тогда программа никогда не завершится или завершится только при выполнении определённого условия) и вкладывать друг в друга.

Как зарабатывать больше с помощью нейросетей?
Бесплатный вебинар: 15 экспертов, 7 топ-нейросетей. Научитесь использовать ИИ в своей работе и увеличьте доход.

Узнать больше

Зарегистрируйтесь для доступа к 15+ бесплатным курсам по программированию с тренажером

Управляющие инструкции

JS: Массивы

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

Break

Инструкция break производит выход из цикла. Не из функции, а из цикла. Встретив ее, интерпретатор перестает выполнять текущий цикл и переходит к инструкциям, идущим сразу за циклом.

const coll = ['one', 'two', 'three', 'four', 'stop', 'five'];

for (const item of coll) {
  if (item === 'stop') {
    break;
  }
  console.log(item);
}

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

const coll = ['one', 'two', 'three', 'four', 'stop', 'five'];

let i = 0;
while (coll[i] !== 'stop') {
  console.log(coll[i]);
  i += 1;
}

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

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

let i = 0;
// Бесконечный цикл! Опасно запускать!
while (true) {
  console.log(i);
  i += 1;
}

Когда количество итераций известно, предпочтительнее использовать цикл for. В отличие от while, цикл for of гарантированно остановится после перебора всех элементов, даже если условие break не будет достигнуто:

const coll = ['one', 'two', 'three', 'four', 'stop', 'five'];
for (const item of coll) {
  if (false) {
    // Условие никогда не выполнится, но цикл все равно завершит работу
    break;
  }

  console.log(item);
}

Continue

Инструкция continue позволяет пропустить итерацию цикла. Ниже пример с функцией myCompact(), которая удаляет null элементы из массива:

const myCompact = (coll) => {
  const result = [];

  for (const item of coll) {
    if (item === null) {
      continue;
    }

    result.push(item);
  }

  return result;
};

Код без continue получается проще:

const myCompact = (coll) => {
  const result = [];

  for (const item of coll) {
    if (item !== null) {
      result.push(item);
    }
  }

  return result;
};

Открыть доступ

Курсы программирования для новичков и опытных разработчиков. Начните обучение бесплатно


  • 130 курсов, 2000+ часов теории

  • 1000 практических заданий в браузере

  • 360 000 студентов

Наши выпускники работают в компаниях:

Рекомендуемые программы

профессия


от 6 300 ₽ в месяц

Разработка фронтенд-компонентов для веб-приложений

профессия


от 6 300 ₽ в месяц

Разработка бэкенд-компонентов для веб-приложений

профессия


от 10 080 ₽ в месяц

Разработка фронтенд- и бэкенд-компонентов для веб-приложений

Автоматизированное тестирование веб-приложений на JavaScript

в разработке

дата определяется

Понравилась статья? Поделить с друзьями:
  • Жительница села гражданка ю вышла замуж за сына банкира 2 по решению руководства завода гражданин
  • Эзокар 40 инструкция по применению отзывы
  • Прокурор невского района санкт петербурга официальный сайт руководство
  • Great wall hover ремонт руководство по ремонту скачать
  • Хармони стс гербицид инструкция по применению