Книга: PyNEng
Назад: while
Дальше: for/else, while/else

break, continue, pass

break, continue, pass

В 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 
Назад: while
Дальше: for/else, while/else