Операторы break, continue и условие else в циклах. 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Операторы break, continue и условие else в циклах.



Оператор break как и в C, прерывает выполнение вмещающего (самого внутреннего) его цикла for или while.

Операторы цикла могут иметь условие else; оно выполняется, когда цикл завершается при исчерпании списка (с for) или когда условие становится ложным (с while), но не в том случае, когда цикл прерван оператором break. Это иллюстрирует следующий пример с циклом, в котором ищутся простые числа:

>>> for n in range(2, 10):...      for x in range(2, n):...          if n % x == 0:...             print(n, 'equals', x, '*', n//x)...              break...      else:...          # цикл потерпел неудачу, не найдя множитель...         print(n, 'is a prime number')...2 is a prime number3 is a prime number4 equals 2 * 25 is a prime number6 equals 2 * 37 is a prime number8 equals 2 * 49 equals 3 * 3

(Да, это корректный код. Посмотрите внимательней: условие else относится к циклу for, не к оператору if.)

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

Оператор continue также заимствован из C, он продолжает выполнение со следующей итерации цикла:

>>> for num in range(2, 10):...      if num % 2 == 0:...         print("Found an even number", num)...          continue...     print("Found a number", num)Found an even number 2Found a number 3Found an even number 4Found a number 5Found an even number 6Found a number 7Found an even number 8Found a number 9

 

Оператор pass.

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

>>> while True:...      pass # Занят ожиданием прерывания с клавиатуры (Ctrl+C)...

Обычно это используется при создании очень маленьких классов:

>>> class MyEmptyClass:...      pass...

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

>>> def initlog(*args):...      pass # Вспомните потом реализовать это!...

 

Функции.

Функции – это многократно используемые фрагменты программы. Они позволяют дать имя определённому блоку команд с тем, чтобы впоследствии запускать этот блок по указанному имени в любом месте программы и сколь угодно много раз. Это называется вызовом функции.

Функция в python - объект, принимающий аргументы и возвращающий значение. Мы можем создать функцию, которая выводит ряд Фибоначчи до произвольной границы:

>>> def fib(n): # выводит ряд Фибоначчи до n...      """Печатает ряд Фибоначчи вплоть до n."""...     a, b = 0, 1...      while a < n:...         print(a, end= ' ')...         a, b = b, a+b...     print()...>>> # Теперь вызовем функцию, которую мы только что определили:... fib(2000)0 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597

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

Опционально (не обязательно) первое выражение тела функции может быть строковым литералом; этот строковый литерал является строкой документации функции, или docstring. Есть инструменты, которые используют строки документации для автоматического создания онлайн или печатной документации, или позволить пользователю интерактивно просматривать код; это хорошая практика включать строки документации в код, который вы пишите, так что сделайте это привычкой.

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

Фактические параметры (аргументы) при вызове функции вводятся в ее локальную таблицу имен; таким образом, аргументы передаются с помощью вызова по значению (где значение всегда ссылка на объект, не значение объекта). Когда функция вызывает другую функцию, создается новая локальная таблица имен для этого вызова.

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

>>> fib<function fib at 10042ed0>>>> f = fib>>> f(100)0 1 1 2 3 5 8 13 21 34 55 89

Придя из других языков, вы можете подумать, что объект fib не функция, а процедура, поскольку она не возвращает значение. В действительности даже функции без оператора return делают возврат значения. Это значение называется None (это встроенное имя). Вывод значения None обычно подавляется интерпретатором, если это будет только записанное значение. Вы можете увидеть это, если захотите с помощью print():

>>> fib(0)>>> print(fib(0)) None

Просто написать функцию, которая возвращает список чисел ряда Фибоначчи, вместо их вывода:

>>> def fib2(n): # возвращает ряд Фибоначчи вплоть до n...      """Возвращает список, включающий ряд Фибоначчи вплоть до n."""...     result = []...     a, b = 0, 1...      while a < n:...         result.append(a)    # смотри ниже...         a, b = b, a+b...      return result...>>> f100 = fib2(100) # вызов >>> f100           # вывод результата [0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89]

Этот пример, как обычно, демонстрирует некоторые особенности Python:



Поделиться:


Последнее изменение этой страницы: 2021-07-18; просмотров: 68; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.16.69.143 (0.005 с.)