Для чего используется инструкция break в python

  • Главная

  • Инструкции

  • 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 станут вашими верными друзьями в разработке интересных приложений. Успехов! 

В этой статье вы познакомитесь с инструкциями 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

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

Сегодня мы узнаем об операторах continue и break в Python. Они нужны для изменения потока цикла.

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

Синтаксис:

#loop statements  
continue
#the code to be skipped   

Диаграмма потока

Блок-схема Python continue

Рассмотрим следующие примеры.

Пример 1:

i = 0                   
while(i < 10):              
   i = i+1
   if(i == 5):
      continue
   print(i)

Выход:

1
2
3
4
6
7
8
9
10

Обратите внимание на вывод приведенного выше кода, значение 5 пропущено, потому что мы предоставили условие if с помощью оператора continue в цикле while. Когда он соответствует заданному условию, тогда управление передается в начало цикла while, и оно пропускает значение 5 из кода.

Давайте посмотрим на другой пример.

Пример 2:

str = "JavaTpoint"
for i in str:
    if(i == 'T'):
        continue
    print(i)

Выход:

J
a
v
a
p
o
i
n
t

Оператор pass

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

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

Pass также используется там, где код будет где-то написан, но еще не записан в программном файле.

Пример:

list = [1,2,3,4,5]  
flag = 0  
for i in list:  
    print("Current element:",i,end=" ");  
    if i==3:  
        pass  
        print("\nWe are inside pass block\n");  
        flag = 1  
    if flag==1:  
        print("\nCame out of pass\n");  
        flag=0 

Выход:

Current element: 1 Current element: 2 Current element: 3 
We are inside pass block


Came out of pass

Current element: 4 Current element: 5 

Мы узнаем больше об операторе pass в следующем руководстве.

Оператор break в Python

Break – это ключевое слово в Python, которое используется для вывода управления программой из цикла. Оператор break разрывает циклы один за другим, т. е. в случае вложенных циклов сначала прерывает внутренний цикл, а затем переходит к внешним циклам. Другими словами, мы можем сказать, что break используется для прерывания текущего выполнения программы, и управление переходит к следующей строке после цикла.

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

Синтаксис разрыва приведен ниже.

#loop statements
break; 

Пример 1:

list =[1,2,3,4]
count = 1;
for i in list:
    if i == 4:
        print("item matched")
        count = count + 1;
        break
print("found at",count,"location");

Выход:

item matched
found at 2 location

Пример 2:

str = "python"
for i in str:
    if i == 'o':
        break
    print(i);

Выход:

p
y
t
h

Пример 3: оператор break с циклом while.

i = 0;
while 1:
    print(i," ",end=""),
    i=i+1;
    if i == 10:
        break;
print("came out of while loop");

Выход:

0  1  2  3  4  5  6  7  8  9  came out of while loop

Пример 4:

n=2
while 1:
    i=1;
    while i<=10:
        print("%d X %d = %d\n"%(n,i,n*i));
        i = i+1;
    choice = int(input("Do you want to continue printing the table, press 0 for no?"))
    if choice == 0:
        break;    
    n=n+1

Выход:

2 X 1 = 2

2 X 2 = 4

2 X 3 = 6

2 X 4 = 8

2 X 5 = 10

2 X 6 = 12

2 X 7 = 14

2 X 8 = 16

2 X 9 = 18

2 X 10 = 20

Do you want to continue printing the table, press 0 for no?1

3 X 1 = 3

3 X 2 = 6

3 X 3 = 9

3 X 4 = 12

3 X 5 = 15

3 X 6 = 18

3 X 7 = 21

3 X 8 = 24

3 X 9 = 27

3 X 10 = 30

Do you want to continue printing the table, press 0 for no?0

Изучаю Python вместе с вами, читаю, собираю и записываю информацию опытных программистов.

Сегодня мы узнаем об операторах break и continue в Python. Эти ключевые слова используются для изменения потока цикла в Python.

Содержание

  1. Что делают операторы break и continue в Python?
  2. 1. Оператор прерывания break
  3. Пример
  4. 2. Оператор continue
  5. Пример работы

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

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

1. Оператор прерывания break

Оператор break прерывает цикл. Посмотрите на пример ниже. Допустим, вы хотите напечатать список всех нечетных чисел, но хотите, чтобы цикл остановился, как только число превысит 10.

В таком случае вы, очевидно, можете указать диапазон, но другой вариант ‒ выйти из цикла с помощью оператора break.

Пример

number = 1 #Number is initially 1
 
while True : #This means the loop will continue infinite time
        print (number) #print the number
        number+=2 #calculate next odd number
 
        # Now give the breaking condition
        if number > 10:
                break;
                #Breaks the loop if number is greater than ten
                print (number) #This statement won't be executed

Вывод:

Пример оператора break в python

В данном примере вы увидите, что операторы после перерыва не выполняются. Итак, здесь код остановится перед печатью 11.

Оператор прерывания также можно использовать в цикле for. Предположим, вы печатаете слова из списка. Если какое-либо слово соответствует слову «exit» не будет напечатано, и цикл завершится. Следующий код иллюстрирует эту идею.

words = ["rain", "sun", "moon", "exit", "weather"]
 
for word in words:
        #checking for the breaking condition
        if word == "exit" :
                #if the condition is true, then break the loop
                break;
 
        #Otherwise, print the word
        print (word)

Вывод :

Пример инструкции break с циклом for в Python

2. Оператор continue

Оператор continue используется для пропуска итерации цикла при выполнении условия.

Пример работы

Возьмем здесь пример. В приведенном ниже фрагменте кода распечатываем все числа от 1 до 10.

Но когда итерация достигает номера 7, я хочу пропустить ее и перейти к печати 8.

numbers = range(1,11)
'''
the range(a,b) function creates a list of number 1 to (b-1)
So, in this case it would generate
numbers from 1 to 10
'''
for number in numbers:
        #check the skipping condition
        if number == 7:
                #this statement will be executed
                print("7 is skipped")
                continue
                #this statement won't be executed
                print ("This won't be printed")
 
        #print the values
        #for example:
        #2 is double of 1
        print (number*2),
        print ("is double of"),
        print (number)

Пример кода для оператора continue

Давайте рассмотрим тот же пример с циклом while.

numbers = [ 1, 2, 4, 3, 6, 5, 7, 10, 9 ]
pos = 0 #initial position is one
while pos < len(numbers):
        #checking skipping condition if number is divisible by two, it is even
        if numbers[pos] % 2 == 0 :
                #increment the position by one
                pos = pos + 1
                continue
        #print the odd number
        print (numbers[pos])
        #increment the position by one
        pos = pos + 1

вывод оператора continue

( 1 оценка, среднее 5 из 5 )

Помогаю в изучении Питона на примерах. Автор практических задач с детальным разбором их решений.

Back to top

Toggle table of contents sidebar

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

Оператор break#

Оператор break позволяет досрочно прервать цикл:

  • break прерывает текущий цикл и продолжает выполнение следующих выражений

  • если используется несколько вложенных циклов, break прерывает внутренний цикл
    и продолжает выполнять выражения, следующие за блоком
    * break может использоваться в циклах for и while

Пример с циклом for:

In [1]: for num in range(10):
   ...:     if num < 7:
   ...:         print(num)
   ...:     else:
   ...:         break
   ...:
0
1
2
3
4
5
6

Пример с циклом while:

In [2]: i = 0
In [3]: while i < 10:
   ...:     if i == 5:
   ...:         break
   ...:     else:
   ...:         print(i)
   ...:         i += 1
   ...:
0
1
2
3
4

Использование break в примере с запросом пароля (файл
check_password_with_while_break.py):

username = input('Введите имя пользователя: ')
password = input('Введите пароль: ')

while True:
    if len(password) < 8:
        print('Пароль слишком короткий\n')
    elif username in password:
        print('Пароль содержит имя пользователя\n')
    else:
        print('Пароль для пользователя {} установлен'.format(username))
        # завершает цикл while
        break
    password = input('Введите пароль еще раз: ')

Теперь можно не повторять строку
password = input('Введите пароль еще раз: ') в каждом ответвлении,
достаточно перенести ее в конец цикла.

И, как только будет введен правильный пароль, break выведет программу из
цикла while.

Оператор continue#

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

Пример с циклом for:

In [4]: for num in range(5):
   ...:     if num == 3:
   ...:         continue
   ...:     else:
   ...:         print(num)
   ...:
0
1
2
4

Пример с циклом while:

In [5]: i = 0
In [6]: while i < 6:
   ....:     i += 1
   ....:     if i == 3:
   ....:         print("Пропускаем 3")
   ....:         continue
   ....:         print("Это никто не увидит")
   ....:     else:
   ....:         print("Текущее значение: ", i)
   ....:
Текущее значение:  1
Текущее значение:  2
Пропускаем 3
Текущее значение:  4
Текущее значение:  5
Текущее значение:  6

Использование continue в примере с запросом пароля (файл
check_password_with_while_continue.py):

username = input('Введите имя пользователя: ')
password = input('Введите пароль: ')

password_correct = False

while not password_correct:
    if len(password) < 8:
        print('Пароль слишком короткий\n')
    elif username in password:
        print('Пароль содержит имя пользователя\n')
    else:
        print('Пароль для пользователя {} установлен'.format(username))
        password_correct = True
        continue
    password = input('Введите пароль еще раз: ')

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

Результат выполнения будет таким:

$ python check_password_with_while_continue.py
Введите имя пользователя: nata
Введите пароль: nata12
Пароль слишком короткий

Введите пароль еще раз: natalksdjflsdjf
Пароль содержит имя пользователя

Введите пароль еще раз: asdfsujljhdflaskjdfh
Пароль для пользователя nata установлен

Оператор pass#

Оператор pass ничего не делает. Фактически, это такая заглушка для
объектов.

Например, pass может помочь в ситуации, когда нужно прописать
структуру скрипта. Его можно ставить в циклах, функциях, классах. И это
не будет влиять на исполнение кода.

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

In [6]: for num in range(5):
   ....:     if num < 3:
   ....:         pass
   ....:     else:
   ....:         print(num)
   ....:
3
4

break and continue allow you to control the flow of your loops. They’re a concept that beginners to Python tend to misunderstand, so pay careful attention.

Using break

The break statement will completely break out of the current loop, meaning it won’t run any more of the statements contained inside of it.

>>> names = ["Rose", "Max", "Nina", "Phillip"]
>>> for name in names:
...     print(f"Hello, {name}")
...     if name == "Nina":
...         break
...
Hello, Rose
Hello, Max
Hello, Nina

break completely breaks out of the loop.

Using continue

continue works a little differently. Instead, it goes back to the start of the loop, skipping over any other statements contained within the loop.

>>> for name in names:
...     if name != "Nina":
...         continue
...     print(f"Hello, {name}")
...
Hello, Nina

continue continues to the start of the loop

break and continue visualized

What happens when we run the code from this Python file?

# Python file names.py
names = ["Jimmy", "Rose", "Max", "Nina", "Phillip"]

for name in names:
    if len(name) != 4:
        continue

    print(f"Hello, {name}")

    if name == "Nina":
        break

print("Done!")

break and continue visualized

Results



See if you can guess the results before expanding this section.


Using break and continue in nested loops.

Remember, break and continue only work for the current loop. Even though I’ve been programming Python for years, this is something that still trips me up!

>>> names = ["Rose", "Max", "Nina"]
>>> target_letter = 'x'
>>> for name in names:
...     print(f"{name} in outer loop")
...     for char in name:
...             if char == target_letter:
...                 print(f"Found {name} with letter: {target_letter}")
...                 print("breaking out of inner loop")
...                 break
...
Rose in outer loop
Max in outer loop
Found Max with letter: x
breaking out of inner loop
Nina in outer loop
>>>

break in the inner loop only breaks out of the inner loop! The outer loop continues to run.

Loop Control in while loops

You can also use break and continue in while loops. One common scenario is running a loop forever, until a certain condition is met.

>>> count = 0 
>>> while True:
...     count += 1
...     if count == 5:
...             print("Count reached")
...             break
...
Count reached

Be careful that your condition will eventually be met, or else your program will get stuck in an infinite loop. For production use, it’s better to use asynchronous programming.

Loops and the return statement

Just like in functions, consider the return statement the hard kill-switch of the loop.

>>> def name_length(names):
...     for name in names:
...             print(name)
...             if name == "Nina":
...                     return "Found the special name"
...
>>> names = ["Max", "Nina", "Rose"]
>>> name_length(names)
Max
Nina
'Found the special name'

Понравилась статья? Поделить с друзьями:

Это тоже интересно:

  • Для чего используется выравнивание инструкций
  • Дитрим для животных инструкция по применению телятам
  • Дитрим для животных инструкция по применению поросятам дозировка
  • Для чего глазная мазь гидрокортизон инструкция по применению
  • Дитрим для животных инструкция по применению курам

  • Подписаться
    Уведомить о
    guest

    0 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии