Как сделать повторение программы в питоне

Вероятно, вы уже знакомы с оператором if и конструкциями if-else и if-elif-else . Теперь пришел черед для изучения циклов ( loops ). В статье рассмотрим простейшие конструкции с циклами for и while , инструкции для их прерывания и продолжения ( break и continue соответственно), а также приведем примеры использования операторов if-elif-else для создания дополнительных условий.

Что такое циклы в Python 3 и зачем они нужны

Циклические задачи — неотъемлемая часть нашей жизни. Типичный пример: покупка продуктов по списку. Мы смотрим в список, ищем нужный продукт и кладем его в корзину, затем переходим ко второму пункту и повторяем ту же самую операцию до конца списка, после чего (выходим из программы) выбрасываем список и переходим к следующей (части кода) задаче. После выполнения последнего пункта список выбрасывается. Примерно так же работают циклы и в программировании: программа продолжит выполнять определенный кусок кода до тех пор, пока соблюдается какое-то условие, заданное для этого куска или, как говорят программисты, тела цикла .

Уроки Python / Повторное использование кода с помощью функций и модулей (часть 1)

Условия задаются при помощи специальных операторов ( while или for , конструкции с которыми мы и рассмотрим), а однократное выполнение тела цикла называется итерацией . Итераций может быть сколько угодно, и они будут выполняться до тех пор, пока условие истинно. Если допустить логическую ошибку при написании кода, то итерации рискуют стать бесконечными. В таких случаях говорят о бесконечном цикле, который, впрочем, можно вызывать и намеренно.

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

Оператор for в циклическом программировании нужен для перебора известного количества значений в списке. For — один из главных помощников программиста Python, он позволит сэкономить кучу времени благодаря тому, что вам не придется много раз перепечатывать однотипный код. Но довольно теории, давайте напишем код, чтобы было понятнее, что делает for :

word = «timeweb»
for letter in word:
print (letter)

Получаем такой результат:

t
i
m
e
w
e
b

То есть программа перебирает все элементы, в данном случае символы, составляющие строку, и выдает их в виде последовательности. Но это могут быть и элементы списка (список создается при помощи символов [ ] , а его элементы перечисляются через запятую. Давайте для примера возьмем тот самый список продуктов и выведем его на экран:

products = [‘молоко’, ‘хлеб’, ‘яйца’, ‘колбаса’, ‘сахар’, ‘мука’]
for element in products:
print (element)

молоко
хлеб
яйца
колбаса
сахар
мука

Теперь несколько замечаний для новичков по приведенным выше примерам кода:

  • Не забывайте про отступы, которые нужно делать для инструкций в теле цикла после главных строк с операторами for и while .
  • Кавычки для корректного обозначения строк и элементов можно ставить как одинарные, так и двойные (для наглядности привели оба типа), но на практике лучше пользоваться каким-то одним вариантом, чтобы не ухудшать читаемость кода.
  • Для обозначения счетчиков программисты обычно используют переменные i и j , но никто не запрещает маркировать их иначе. В данных примерах для наглядности мы намеренно обозначили счетчики как letter и element , чтобы было понятно, какие именно значения они перебирают.

Цикл while в Python 3

Функция оператора while иная, и проще всего ее понять, переведя слово while на русский: «до тех пор, пока». Это значит, что до тех пор, пока условие, вводимое while , истинное, тело цикла продолжит выполняться, при этом количество итераций заранее не известно (в отличие от циклов с оператором for ). Пример:

Python на практике / Пишем 3 программы на Питон за 5 минут


number = 1
while number < 10:
print (number)
number += 2
print (‘Следующее значение больше 10, поэтому счет прервался.’)

Вот результат выполнения кода:

1
3
5
7
9
Следующее значение больше 10, поэтому счет прервался.

Одна из особенностей Python в том, что этот язык максимально наглядный, и какую работу выполняет код, часто понятно без подробных пояснений. В данном случае код можно расшифровать так: мы присвоили переменной number значение 1 и создали условие — до тех пор пока значение меньше 10, тело цикла будет выполняться. В теле создали две инструкции, одну видимую (выводить на экран очередное значение), а другая прибавляет к значению переменной указанное число и перезаписывает это значение. Для наглядности можно было бы переписать эту строку так:

number = number + 2

Записи x = x + 2 и x += 2 равнозначны (Python в некоторых случаях допускает использовать разный код для выполнения одних и тех же действий).

Как только условие, введенное оператором while , перестает быть истинным ( number становится больше 10), тело цикла перестает выполняться, и программа переходит к заключительной строке (заметьте, что она расположена на другом уровне, поэтому не имеет отступа), а на экран выводится сообщение:

Следующее значение больше 10, поэтому счет прервался.

Использование конструкций if-elif-else с операторами цикла

Теперь рассмотрим более сложные и функциональные примеры конструкций с while , которые создаются с использованием операторов if , elif и else . Чтобы лучше понимать код с ними, удобно переводить их так:

Приведем наглядный пример:

x = 0
while x < 10:
if x == 0:
print (x, «Выполняется условие оператора if»)
x += 1
elif x print (x, «Выполняется условие первого оператора elif»)
x += 1
elif x > 5 and x < 9:
print (x, «Выполняется условие второго оператора elif»)
x += 1
else:
print (x, «Выполняется условие оператора else»)
x += 1
print («Вот и посчитали.»)

Вот что получилось:

0 Выполняется условие оператора if
1 Выполняется условие первого оператора elif

6 Выполняется условие второго оператора elif

9 Выполняется условие оператора else
Вот и посчитали.

Разбираем. После присвоения переменной x значения 0 создаем условие для цикла while , а с помощью операторов if , elif и else добавляем набор условий, при которых на экран будет выводиться определенный текст. Условие if срабатывает тогда, когда значение x равно нулю, первый elif — при x меньше или равно пяти. В случае со вторым elif мы также использовали оператор and , добавляющий дополнительное условие, чтобы пользователь увидел и текст, который выводится при выполнении условия else . Python проверяет истинность условий последовательно, поэтому, если какое-то условие выше по списку будет оставаться истинным до последней итерации, инструкции тех условий, которые расположены ниже, выполняться не будут.

Инструкции break и continue

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

  • break служит для прерывания цикла;
  • continue — для пропуска определенной итерации и перехода к следующей, но без завершения цикла.

Для примера работы инструкции break давайте слегка изменим код из предыдущей части и попробуем выполнить его:

x = 0
while x < 10:
if x == 0:
print (x, «Выполняется условие оператора if»)
x += 1
elif x print (x, «Выполняется условие первого оператора elif»)
x += 1
elif x > 5 and x < 9:
print (x, «Выполняется условие второго оператора elif»)
x += 1
else:
print (x, «Выполняется условие оператора else»)
print («Вот и посчитали.»)

Циклы в Python

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

Я заметил, что цикл for популярнее второго. Циклы используются в тех случаях, когда нам нужно сделать что-нибудь много раз. Нередко вам придется выполнить какую-нибудь операцию (или ряд операций) в части данных снова и снова. Тут то и вступают в силу циклы. Благодаря им становится возможно максимально упростить данный вопрос.

Давайте подробно разберём, как работают эти структуры!

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

Цикл for

Как было сказано ранее, мы используем цикл в тех случаях, когда вам нужно повторить что-нибудь n-ное количество раз. Это проще понять, если взглянуть на пример. Мы используем встроенную функцию Python range. Функция range создаст список длинной в «n» элементов. В Python версии 2.Х существует другая функция под названием xrange, которая является генератором чисел и не такая ресурсоемкая, как range. Ранее разработчики сменили xrange на range в Python 3. Вот пример:

print ( range ( 5 ) ) # ответ: range(0, 5)

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

a = range ( 5 , 10 )
print ( a ) # range(5, 10)
b = list ( range ( 1 , 10 , 2 ) )
print ( b ) # [1, 3, 5, 7, 9]

В пером примере показано, что вы можете передать начальное и конечное значение, и функция range вернет числа, начиная с начального значения вплоть до (но не включая) последнее значение. Например, при запросе 5-10 мы получим 5-9. Во втором примере видно, как использовать функцию списка (list) для того, чтобы функция range вернула каждый второй элемент, между 1 и 10.

Так что она начинает с 1, пропускает 2 и так далее. Теперь вы, наверное, гадаете, что же именно она будет делать с циклами? Что-ж, есть один простой способ показать, как работает цикл с использованием функции range! Давайте взглянем:

for number in range ( 5 ) :
print ( number )

Что здесь произошло? Давайте почитаем слева на право, чтобы понять это. Для каждого числа в диапазоне 5 мы вводим число. Мы знаем, что если мы вызываем range со значением 5, мы получим список из 5 элементов. Так что каждый раз, проходя через цикл, она выводит каждый из элементов. Цикл for, показанный выше, может быть эквивалентом следующего:

for number in [ 0 , 1 , 2 , 3 , 4 ] :
print ( number )

Функция range лишь делает результат несколько меньшим. Цикл for может обходить любой итератор Python. Мы уже видели, как именно он может работать со списком. Давайте взглянем, может ли он выполнять итерацию со словарем.

for key in a_dict :
print ( key )

Когда вы используете for в словаре, вы увидите, что он автоматически перебирает ключи. Вам не нужно указывать ключ for в a_dict.keys() (впрочем, это также работает). Python делает только нужные нам вещи. Вы возможно думаете, почему ключи выводятся в другом порядке, отличном от того, какой был указан в словаре?

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

keys = a_dict . keys ( )
keys = sorted ( keys )
for key in keys :
print ( key )

Давайте остановимся и разберемся с тем, что делает этот код. Во-первых, мы создали словарь, в котором ключи выступают в качестве целых чисел, вместо строк. Далее, мы извлекли ключи из словаря. Каждый раз, когда вы взываете метод keys(), он возвращает неупорядоченный список ключей.

Если вы выведите их, и увидите, что они расположен в порядке по возрастанию, то это просто случайность. Теперь у нас есть доступ к ключам словаря, которые хранятся в переменной, под названием keys. Мы сортируем наш список, после чего используем цикл for в нем. Теперь мы готовы к тому, чтобы сделать все немного интереснее.

Мы попробуем применить цикл в функции range, но нам нужно вывести только целые числа. Чтобы сделать это, нам нужно использовать условный оператор вместо параметра шага range. Это можно сделать следующим образом:

for number in range ( 10 ) :
if number % 2 == 0 :
print ( number )

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

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

Есть вопросы по Python?

На нашем форуме вы можете задать любой вопрос и получить ответ от всего нашего сообщества!

Telegram Чат 10 :

Цикл while является своего рода условным оператором. Вот что значит этот код: пока переменная i меньше единицы, её нужно выводить на экран. Далее, в конце, мы увеличиваем её значение на единицу. Если вы запустите этот код, он выдаст от 0 до 9, каждая цифра будет в отдельной строке, после чего задача будет выполнена.

Если вы удалите ту часть, в которой мы увеличиваем значение i, то мы получим бесконечный цикл. Как правило – это плохо. Бесконечные циклы известны как логические ошибки, и их нужно избегать. Существует другой способ вырваться из цикла, для этого нужно использовать встроенную функцию break. Давайте посмотрим, как это работает:

while i < 10 :

В этой части кода мы добавили условное выражение для проверки того, равняется ли когда-либо переменная i цифре 5. Если нет, тогда мы разрываем цикл. Как вы видите в выдаче кода, как только значение достигает пяти, код останавливается, даже если мы ранее указали while продолжать цикл, пока переменная не достигнет значения 10.

Обратите внимание на то, что мы изменили то, как мы увеличиваем значение при помощи +=. Это удобный ярлык, который вы можете также использовать в других операциях, таких как вычитание -= и умножение *=. Встроенный break также известен как инструмент управления потока. Существует еще один, под названием continue, который в основном используется для пропуска итерации, или перейти к следующей итерации. Вот один из способов его применения:

while i < 10 :

Слегка запутанно, не так ли? Мы добавили второе условное выражение, которое проверяет, не равняется ли i трем. Если да, мы увеличиваем переменную и переходим к следующему циклу, который удачно пропускает вывод значения 3 на экран. Как и ранее, когда мы достигаем значения 5, мы разрываем цикл. Существует еще одна тема, касающаяся циклов, которую нам нужно затронуть – это оператор else.

Зачем нужен else при работе с циклами?

Оператор else в циклах выполняется только в том случае, если цикл выполнен успешно. Главная задача оператора else, это поиск объектов:

my_list = [ 1 , 2 , 3 , 4 , 5 ]
for i in my_list :
print ( «Item found!» )
print ( «Item not found!» )

В этом коде мы разорвали цикл, когда i равно 3. Это приводит к пропуску оператора else. Если вы хотите провести эксперимент, вы можете изменить условное выражение, чтобы посмотреть на значение, которое находится вне списка, и которое приведет оператор else к выполнению. Честно, ни разу не видел, чтобы кто-либо использовал данную структуру за все годы работы.

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

Подведем итоги

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

Являюсь администратором нескольких порталов по обучению языков программирования Python, Golang и Kotlin. В составе небольшой команды единомышленников, мы занимаемся популяризацией языков программирования на русскоязычную аудиторию. Большая часть статей была адаптирована нами на русский язык и распространяется бесплатно.

Читайте также:
Epub чем открыть программа

Образование
Universitatea Tehnică a Moldovei (utm.md)

  • 2014 — 2018 Технический Университет Молдовы, ИТ-Инженер. Тема дипломной работы «Автоматизация покупки и продажи криптовалюты используя технический анализ»
  • 2018 — 2020 Технический Университет Молдовы, Магистр, Магистерская диссертация «Идентификация человека в киберпространстве по фотографии лица»

Источник: python-scripts.com

Циклы for и while в Python

Python :: Учебник для начинающих

  • Цикл for/in
  • Универсальный цикл while
  • Инструкции break и continue
  • Краткие итоги параграфа
  • Вопросы и задания для самоконтроля

Цикл for/in

Еще одной важной инструкцией языка Python является цикл for/in , который можно смело назвать универсальным итератором последовательностей, поскольку он позволяет выполнять обход элементов в любых объектах, поддерживающих возможность совершения итераций. При этом сюда относятся как встроенные объекты, например, строки, списки или словари, так и объекты, создаваемые с помощью классов (о них чуть позже).

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

for in : else:

В ходе выполнения цикла for интерпретатор один за другим присваивает переменной заголовка элементы итерируемого объекта и выполняет для них инструкции тела цикла (см. пример №1 ). Если цикл нужно прервать, используется ключевое слово break , которое передает управление инструкции, следующей сразу за циклом. Кроме того, в цикле for разрешается использовать необязательный блок else , набор инструкций которого выполняется только после удачного завершения цикла (т.е. при отсутствии ошибки или прерывания за счет использования инструкции break ).

Код Результат pythonCodes

# Формируем список. li = [2, 5, 9, 4] # Задаем начальную сумму. sum = 0 # Запускаем цикл по элементам списка. for elem in li: # Если сумма чисел меньше 8, if sum < 8: # наращиваем ее. sum += elem # Выводим для наглядности на экран. print(sum) # Иначе else: # выводим предупреждение и print(«Превышен лимит суммы эл-тов!») # прерываем цикл. break # Если цикл не был прерван. else: # Выводим итоговое сообщение. print(«Сумма эл-тов равна:», sum) # Выводим сообщение о завершении проверки. print(«Проверка списка завершена!»)
2 7 16 Превышен лимит суммы эл-тов!

Проверка списка завершена!

Пример №1. Использование цикла for (часть 1).

В примере с помощью инструкции цикла for список проверяется на превышение лимита суммы его элементов. Для этого используется знакомая нам вложенная условная инструкция if/else , которая и проверяет сумму на достижение лимита.

Если в ходе очередной итерации цикла сумма не достигает указанного предела, значение счетчика суммы sum увеличивается на значение переменной заголовка цикла elem , т.е. sum += elem . После этого цикл переходит к следующей итерации и присваивает переменной elem значение следующего элемента списка. И так до тех пор, пока не будет завершен обход всех элементов списка или не будет достигнут лимит суммы. Если лимит суммы достигнут не будет, сработает набор инструкций блока else цикла, т.е. итоговая сумма будет выведена на экран. После этого будет выполнена инструкция, следующая за циклом. В случае достижения лимита, сработает набор инструкций блока else условной инструкции if , т.е. будет выведено предупреждение, а цикл будет прерван инструкцией break , которая передаст управление инструкции, опять же, следующей за циклом.

Обратите внимание, что в нашем примере были использованы два блока else : один принадлежит условной инструкции if , а другой – инструкции цикла for/in . Отличить их легко по уровню отступов. Оба блока не являются обязательными в своих конструкциях, но в нашем случае конструкция for/else , позволяет выводить итоговое сообщение не всегда, а только в случае успешного завершения цикла.

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

Давайте рассмотрим еще несколько наглядных вариаций цикла for/in , чтобы увидеть, как он используется на практике (см. пример №2 ).

Код Результат pythonCodes

# Выводим символы строки. name = ‘Григорий’ for s in name: print(s, end=’ ‘) print(», end=’nn’) # Используем функцию range(a, b, step). for n in range(1, len(name), 2): # Выводим каждую вторую букву имени. print(name[n], end=’ ‘) print(», end=’nn’) # Выводим ключи и значения словаря. d = for key in d: print(key, ‘->’, d[key]) print(», end=’n’) # Используем распаковывание кортежей. d = [(1, 2), (3, 4), (5, 6)] for x, y in d: print(x + y, end=’ ‘) print(», end=’nn’) # А здесь расширенный синтаксис распаковывания. d = [(1, 2, 3), (4, 5, 6)] for x, *y in d: print(x, y, end=’ ‘)
Г р и г о р и й р г р й one -> 1 two -> 2 3 7 11 1 [2, 3] 4 [5, 6]

Пример №2. Использование цикла for (часть 2).

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

Цикл while

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

while : else:

Работает цикл while следующим образом: каждый раз перед выполнением новой итерации, т.е. перед очередным выполнением блока инструкций в теле цикла, происходит проверка его условия и, если результат будет иметь значение True , код в теле цикла выполняется; далее интерпретатор возвращается в начало цикла и снова проверяет его условие, повторяя все процедуры заново до тех пор, пока условие цикла не вернет значение False ; в этом случае интерпретатор прерывает выполнение цикла и, пропустив блок инструкций в его теле, передает управление либо необязательному ключевому слову else , выполняя дополнительный блок инструкций, либо инструкции, следующей за циклом. При этом следует иметь в виду, что набор инструкций блока else выполняется только тогда, когда выход из цикла производится не инструкцией break (см. пример №3 ).

Код Результат pythonCodes

# Формируем список. li = [2, 5, 9, 4] # Задаем начальную сумму. sum = 0 # Устанавливаем счетчик итераций. k = 0 # Запускаем цикл по элементам списка. while k < len(li): # Если сумма чисел меньше 8, if sum < 8: # наращиваем ее. sum += li[k] # Отслеживаем показания счетчика и суммы. print(k, ‘:’, sum) # Счетчик увеличиваем на 1. k += 1 # Иначе else: # выводим предупреждение и print(«Превышен лимит суммы эл-тов!») # прерываем цикл. break # Если цикл не был прерван. else: # Выводим итоговое сообщение. print(«Сумма эл-тов равна:», sum) # Выводим сообщение о завершении проверки. print(«Проверка списка завершена!»)
0 : 2 1 : 7 2 : 16 Превышен лимит суммы эл-тов!

Проверка списка завершена!

Пример №3. Использование цикла while (часть 1).

В нашем примере цикл совершил три итерации. На первых двух итерациях сумма элементов списка наращивалась, но не достигла допустимого предела. В результате этого цикл пошел на третий виток, где сумма элементов все-таки превысила лимит. Это привело к тому, что цикл был прерван инструкцией break , а интерпретатор начал обрабатывать выражение вызова функции print() , следующее за циклом. Если бы общая сумма всех элементов списка оказалась меньше допустимого лимита, цикл продолжил бы работу до тех пор, пока переменная счетчика не стала бы равной четырем, а условие цикла не вернуло бы False . Далее интерпретатор пропустил бы блок инструкций тела цикла и стал бы обрабатывать дополнительный набор инструкций его блока else . Попробуйте уменьшить значение элементов списка и убедитесь в этом.

Стоит заметить, что в языке Python отсутствует цикл do/while , имеющийся в других языках программирования. Однако его можно имитировать, добавив в конец тела цикла условную инструкцию одновременно с инструкцией break (см. пример №4 ).

Код Результат pythonCodes

# Устанавливаем счетчик. k = 1 # Запускаем бесконечный цикл. while True: # Выводим номер итерации. print(k, end=’ ‘) # Счетчик увеличиваем на 1. k += 1 # Имитируем условную часть цикла do/while. if k > 5: break
1 2 3 4 5

Читайте также:
Программа для задачи по химии

Пример №4. Использование цикла while (часть 2).

Как видим, в данной имитации тело цикла при любом значении счетчика будет выполнено как минимум один раз, что является побочным эффектом проверки условия в конце цикла свойственного реальной конструкции do/while .

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

Инструкции break и continue

Инструкции break и continue используются только внутри циклов и выполняют примерно те же функции, что и в других языках программирования: break прерывает объемлющий цикл и передает управление следующей за циклом инструкции, а continue прерывает только текущую итерацию и производит переход в начало цикла, т.е. в строку заголовка. При этом обе инструкции могут появляться в любом месте внутри тела цикла, но как правило, их используют во вложенных в цикл условных инструкциях if , чтобы выполнить необходимое действие в ответ на некоторое условие (см. пример №5 ).

Код Результат pythonCodes

# Устанавливаем счетчик. k = 1 # Запускаем бесконечный цикл. while True: # Задаем условие прерывания цикла. if k > 10: # Прерываем цикл и идем дальше. break # Отсеиваем четные числа. if k%2 == 0: # Счетчик обязательно увеличиваем. k += 1 # Пропускаем дальнейшие инструкции # и возвращаемся в заголовок цикла. continue # Выводим нечетные числа на экран. print(k, end=’ ‘) # Счетчик увеличиваем на 1. k += 1 # Инструкция после цикла. print(‘nВывод нечетных чисел окончен!n’) # Допустим, что имеется список чисел от 1 до 20. li = list(range(1, 21)) # Запускаем цикл по элементам списка. for k in li: # Задаем условие прерывания цикла. if k > 10: # Прерываем цикл и идем дальше. break # Отсеиваем четные числа. if k%2 == 0: # Счетчик обязательно увеличиваем. k += 1 # Пропускаем дальнейшие инструкции # и возвращаемся в заголовок цикла. continue # Выводим нечетные числа на экран. print(k, end=’ ‘) # Счетчик увеличиваем на 1. k += 1 # Инструкция после цикла. print(‘nВывод нечетных чисел окончен!’)
1 3 5 7 9 Вывод нечетных чисел окончен!

1 3 5 7 9 Вывод нечетных чисел окончен!

Пример №5. Использование инструкций break и continue (часть 1).

Здесь хотелось бы обратить внимание на то, что все виды циклов в Python могут иметь другие вложенные циклы и условные инструкции, позволяя нужным образом изменять дальнейший ход выполнения программы. Но дело в том, что каждая отдельная инструкция break или continue относится только к одному ближайшему объемлющему циклу. Поэтому, например, выйти сразу из всех внешних циклов при помощи всего лишь одной инструкции break расположенной в самом глубоком вложенном цикле не получится, нужно использовать инструкцию во всех циклах текущей иерархии (см. пример №6 ).

Код Результат pythonCodes

# Задаем стартовое значение счетчика. y = 1 # Внешний цикл. for x in range(1, 11): # Умножение на 1 пропускаем. if x == 1: # Переходим в начало цикла for. continue # Внутренний цикл. while True: # Умножение на 1 пропускаем. if y == 1: # Увеличиваем счетчик на единицу. y += 1 # Переходим в начало цикла while. continue # Выводим произведение чисел. print(‘<> x <> = <>’.format(x, y, x*y)) # При достижении значения y == 5. if y == 5: # Переходим на новую строку. print() # Сбрасываем значение счетчика. y = 2 # А внутренний цикл прерываем (внешний нет). break # Увеличиваем счетчик на единицу. y += 1 # При достижении значения x == 5. if x == 5: # Прерываем и внешний цикл. break # Выводим сообщение о завершении циклов. print(‘Таблица умножения от 2 до 5 распечатана!’)
2 x 2 = 4 2 x 3 = 6 2 x 4 = 8 2 x 5 = 10 3 x 2 = 6 3 x 3 = 9 3 x 4 = 12 3 x 5 = 15 4 x 2 = 8 4 x 3 = 12 4 x 4 = 16 4 x 5 = 20 5 x 2 = 10 5 x 3 = 15 5 x 4 = 20 5 x 5 = 25 Таблица умножения от 2 до 5 распечатана!

Пример №6. Использование инструкций break и continue (часть 2).

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

Краткие итоги параграфа

  • Для обхода элементов в любых объектах, поддерживающих возможность совершения итераций, в Python предназначен цикл for/in . В ходе выполнения этого цикла интерпретатор один за другим присваивает переменной заголовка элементы итерируемого объекта и выполняет для них инструкции тела цикла.
  • Для многократного повторного выполнения кода (не только обхода элементов) служит универсальный цикл общего назначения while , который выполняет блок инструкций, расположенный в его теле, до тех пор, пока условие цикла остается истинным, т.е. имеет значение True .
  • При необходимости в циклах for и while разрешается использовать необязательный блок else , набор инструкций которого выполняется только после удачного завершения цикла (т.е. при отсутствии ошибки или прерывания за счет использования инструкции break ).
  • При использовании счетчиков следует инициализировать их вне циклов, чтобы при каждой новой итерации их значения не сбрасывались циклом в первоначальное состояние.
  • Для прерывания циклов в Python используется инструкция break , которая прерывает объемлющий цикл и передает управление следующей за циклом инструкции. Если нужно прервать только текущую итерацию, необходимо использовать инструкцию continue , которая после прерывания итерации производит переход в начало цикла, т.е. в строку заголовка. Обе инструкции могут появляться в любом месте внутри тела цикла, но как правило, их используют во вложенных в цикл условных инструкциях if , чтобы выполнить необходимое действие в ответ на некоторое условие.
  • Следует помнить, что в Python разрешается использовать многоуровневые вложенные циклы, однако при этом отсутствует возможность использования конструкций вида break n или continue n , где n указывало бы на количество прерываний внешних циклов. Вместо этого необходимо использовать собственные инструкции для каждого из n циклов по отдельности.

Вопросы и задания для самоконтроля

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

Ответ. Циклы в программировании используются для организации многократного исполнения набора инструкций. В языке Python циклы представлены конструкциями for/in и while : основным предназначением цикла for является обход элементов итерируемого объекта, а while представляет собой универсальный цикл общего назначения. Стоит заметить, что с помощью инструкции while можно сымитировать в том числе и счетный цикл for , однако программный код, как хорошо видно из наших примеров выше, получится менее компактным и может выполняться медленнее.

2. Допустимо ли в Python использование вложенных друг в друга циклов? Показать решение.

Ответ. В Python разрешается использовать как вложенные циклы, так и вложенные условные инструкции if .

3. Обязательно ли использование блока else в циклах? При каких условиях он выполняется? Показать решение.

Ответ. Блок инструкций оператора else в циклах не является обязательным, а его инструкции выполняются только после удачного завершения цикла (т.е. при отсутствии ошибки или прерывания за счет использования оператора break ).

4. В чем заключается основное отличие инструкции break от инструкции continue ? Показать решение.

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

5. Выведите все элементы списка [10, 20, 30] на экран сперва при помощи цикла for , а затем и цикла while . Показать решение.

Решение Результат pythonCodes

# Сохраняем список в переменной. li = [10, 20, 30] # Организуем цикл по эл-там списка. for elem in li: # Выводим значения на экран. print(elem, end=’ ‘) # Сделаем отступ для цикла while. print() # Инициализируем счетчик для цикла. k = 0 # Узнаем требуемое количество итераций. i = len(li) # Организуем цикл по эл-там списка. while k < i: # Выводим значения на экран. print(li[k], end=’ ‘) # Наращиваем значение счетчика. k += 1
10 20 30 10 20 30

6. Дополнительные упражнения и задачи по теме расположены в разделе «Циклы for и while» нашего сборника задач и упражнений по языку программирования Python .

Быстрый переход к другим страницам

  • Условная инструкция if/else в Python
  • Циклы for и while в Python
  • Итерации и генераторы в Python
  • Вернуться к оглавлению учебника

Источник: okpython.net

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru