Python 3 while: Циклы for и while, операторы break и continue, волшебное слово else
Содержание
Интерактивный учебник языка Python
1. Цикл while
Цикл while
(“пока”) позволяет выполнить
одну и ту же последовательность действий, пока проверяемое условие истинно.
Условие записывается до тела цикла и проверяется до выполнения тела цикла.
Как правило, цикл while
используется, когда невозможно
определить точное значение количества проходов исполнения цикла.
Синтаксис цикла while
в простейшем случае выглядит так:
while условие: блок инструкций
При выполнении цикла while
сначала проверяется условие.
Если оно ложно, то выполнение цикла прекращается и управление
передается на следующую инструкцию после тела цикла while
.
Если условие истинно, то выполняется инструкция, после чего условие
проверяется снова и снова выполняется инструкция.
Так продолжается до тех пор, пока условие будет истинно.
Как только условие станет ложно, работа цикла завершится и
управление передастся следующей инструкции после цикла.
Например, следующий фрагмент программы напечатает на экран
квадраты всех целых чисел от 1 до 10. Видно, что цикл
while
может заменять цикл for ... in range(...)
:
i = 1 while i <= 10: print(i ** 2) i += 1
В этом примере переменная i
внутри цикла изменяется от 1 до 10.
Такая переменная, значение которой меняется с каждым новым проходом цикла,
называется счетчиком. Заметим, что после выполнения этого фрагмента
значение переменной i
будет равно 11
,
поскольку именно при i == 11
условие i <= 10
впервые
перестанет выполняться.
Вот еще один пример использования цикла while
для определения количества цифр натурального числа n
:
5678
n = int(input()) length = 0 while n > 0: n //= 10 # это эквивалентно n = n // 10 length += 1 print(length)
В этом цикле мы отбрасываем по одной цифре числа, начиная с конца,
что эквивалентно целочисленному делению на 10 (n //= 10
),
при этом считаем в переменной length
, сколько раз это было сделано.
В языке Питон есть и другой способ решения этой задачи:
length = len(str(i))
.
2. Инструкции управления циклом
После тела цикла можно написать слово else:
и после него блок операций, который будет
выполнен один раз после окончания цикла, когда проверяемое
условие станет неверно:
i = 1 while i <= 10: print(i) i += 1 else: print('Цикл окончен, i =', i)
Казалось бы, никакого смысла в этом нет, ведь эту же инструкцию можно
просто написать после окончания цикла. Смысл появляется только
вместе с инструкцией break
. Если во время выполнения Питон встречает
инструкцию break
внутри цикла, то он сразу же прекращает выполнение этого цикла и выходит из него.
При этом ветка else
исполняться не будет. Разумеется, инструкцию break
осмыленно
вызывать только внутри инструкции if
, то есть она должна выполняться
только при выполнении какого-то особенного условия.
Приведем пример программы, которая считывает числа до тех пор, пока не встретит
отрицательное число. При появлении отрицательного числа программа завершается.
В первом варианте последовательность чисел завершается числом 0 (при считывании которого надо остановиться).
3 6 -1 4 0
a = int(input()) while a != 0: if a < 0: print('Встретилось отрицательное число', a) break a = int(input()) else: print('Ни одного отрицательного числа не встретилось')
Во втором варианте программы сначала на вход подается количество элементов последовательности, а затем
и сами элементы. В таком случае удобно воспользоваться циклом for
. Цикл for
также может иметь ветку else
и содержать инструкции break
внутри себя.
3 6 2 4
n = int(input()) for i in range(n): a = int(input()) if a < 0: print('Встретилось отрицательное число', a) break else: print('Ни одного отрицательного числа не встретилось')
Другая инструкция управления циклом —
continue
(продолжение цикла). Если эта инструкция
встречается где-то посередине цикла, то пропускаются все оставшиеся
инструкции до конца цикла, и исполнение цикла продолжается
со следующей итерации.
Если инструкции break
и continue
содержатся внутри нескольких вложенных
циклов, то они влияют лишь на исполнение самого внутреннего цикла. Вот не самый интеллектуальный пример,
который это демонстрирует:
for i in range(3): for j in range(5): if j > i: break print(i, j)
Увлечение инструкциями break
и continue
не поощряется, если можно обойтись без их использования. Вот типичный пример плохого использования инструкции break
(данный код считает количество знаков в числе).
567
n = int(input()) length = 0 while True: length += 1 n //= 10 if n == 0: break print('Длина числа равна', length)
Гораздо лучше переписать этот цикл так:
567
n = int(input()) length = 0 while n != 0: length += 1 n //= 10 print('Длина числа равна', length)
Впрочем, на Питоне можно предложить и более изящное решение:
567
n = int(input()) print('Длина числа равна', len(str(n)))
3.
Множественное присваивание
В Питоне можно за одну инструкцию присваивания изменять значение сразу нескольких переменных. Делается это так:
Этот код можно записать и так:
Отличие двух способов состоит в том, что множественное присваивание в первом способе меняет значение двух переменных одновременно.
Если слева от знака «=» в множественном присваивании должны стоять через запятую имена переменных, то справа могут стоять произвольные выражения,
разделённые запятыми. Главное, чтобы слева и справа от знака присваивания было одинаковое число элементов.
Множественное присваивание удобно использовать, когда нужно обменять значения двух переменных. В обычных языках
программирования без использования специальных функций это делается так:
a = 1 b = 2 tmp = a a = b b = tmp print(a, b) # 2 1
В Питоне то же действие записывается в одну строчку:
a = 1 b = 2 a, b = b, a print(a, b) # 2 1
Ссылки на задачи доступны в меню слева. Эталонные решения теперь доступны на странице самой задачи.
Интерактивный учебник языка Python
Занятие 6. Цикл while
Задача «Степень двойки»
Условие
По данному натуральному числу N найдите наибольшую целую степень двойки, не превосходящую N. Выведите показатель степени и саму степень.
Операцией возведения в степень пользоваться нельзя!
Во всех задачах считывайте входные данные через input()
и выводите ответ через print()
.
Тесты
Входные данные | Правильный ответ | Что вывела программа | Результат | |
---|---|---|---|---|
Запустить тест 1 | 50 | 5 32 | ||
Запустить тест 2 | 10 | 3 8 | ||
Запустить тест 3 | 8 | 3 8 | ||
Запустить тест 4 | 7 | 2 4 | ||
Запустить тест 5 | 1 | 0 1 | ||
Запустить тест 6 | 2 | 1 2 | ||
Запустить тест 7 | 3 | 1 2 | ||
Запустить тест 8 | 4 | 2 4 | ||
Запустить тест 9 | 5 | 2 4 | ||
Запустить тест 10 | 100 | 6 64 | ||
Запустить тест 11 | 1025 | 10 1024 | ||
Запустить тест 12 | 15431543 | 23 8388608 |
Интерактивный учебник языка Python
Занятие 6.
Цикл while
Задача «Минимальный делитель»
Условие
Дано целое число, не меньшее 2. Выведите его наименьший натуральный делитель, отличный от 1.
Во всех задачах считывайте входные данные через input()
и выводите ответ через print()
.
Тесты
Входные данные | Правильный ответ | Что вывела программа | Результат | |
---|---|---|---|---|
Запустить тест 1 | 15 | 3 | ||
Запустить тест 2 | 2 | 2 | ||
Запустить тест 3 | 3 | 3 | ||
Запустить тест 4 | 4 | 2 | ||
Запустить тест 5 | 5 | 5 | ||
Запустить тест 6 | 6 | 2 | ||
Запустить тест 7 | 7 | 7 | ||
Запустить тест 8 | 8 | 2 | ||
Запустить тест 9 | 35 | 5 | ||
Запустить тест 10 | 55 | 5 | ||
Запустить тест 11 | 179 | 179 |
While loop — Learn Python 3
while
цикл повторяет последовательность действий много раз, пока какое-то условие не достигнет False
. Условие задается перед телом цикла и проверяется перед каждым исполнением тела цикла. Как правило, в while
используется цикл , когда невозможно определить точное число итераций цикла заранее.
Синтаксис в while
цикл в простейшем случае выглядит следующим образом :
while some condition: a block of statements
Сначала Python проверяет условие. Если это значение False, то цикл завершается и управление передается следующему оператору после в while
тело цикла. Если условие истинно, то тело цикла выполняется, а затем условие снова проверяется. Это продолжается, пока условие равно True. Когда условие становится False, цикл завершается и управление передается следующему оператору после цикла.
Например, следующий фрагмент программы печатает квадраты всех целых чисел от 1 до 10. Здесь можно заменить цикл «while» на цикл for ... in range(...)
:
1 4 9 16 25 36 49 64 81 100
i = 1 while i <= 10: print(i ** 2) i += 1
В этом примере переменная i
внутри цикла выполняет итерацию от 1 до 10. Такая переменная, значение которой изменяется с каждой новой итерацией цикла, называется счетчиком. Обратите внимание, что после выполнения этого фрагмента значение переменной i
определено и равно 11
, потому что, когда i == 11
условие i <= 10
является False в первый раз.
Вот другой пример использование в while
цикла , чтобы определить количество цифр целого числа n
:
5678
n = int(input()) length = 0 while n > 0: n //= 10 # это эквивалентно n = n // 10 length += 1 print(length) # 4
На каждой итерации мы сокращаем последнюю цифру числа, используя целочисленное деление на 10 ( n //= 10
). В переменной length
мы подсчитываем, сколько раз мы это делали.
В Python есть еще один, более простой способ решить эту проблему: length = len(str(i))
.
Можно написать оператор else:
после тела цикла, который выполняется один раз после окончания цикла:
None
i = 1 while i <= 10: print(i) i += 1 else: print('Loop ended, i =', i)
На первый взгляд это утверждение, похоже, не имеет смысла, потому else:
тело else:
statement можно просто поместить после окончания цикла. «else» после цикла имеет смысл только при использовании в сочетании с break
. Если во время выполнения цикла интерпретатор Python обнаруживает break
, он немедленно останавливает выполнение цикла и выходит из него. В этом случае ветка else:
не выполняется. Таким образом, break
используется для прерывания выполнения цикла в середине любой итерации.
Вот пример, похожий на Black Jack: программа, которая считывает числа и суммирует их до тех пор, пока общая сумма не станет больше или равна 21. Входная последовательность заканчивается на 0, чтобы программа могла остановиться, даже если общая сумма всех чисел равна менее 21.
Посмотрим, как он ведет себя на разных входах.
Версия 1. После проверки условия цикл завершается нормально, поэтому выполняется ветка else.
2 4 7 0
total_sum = 0 a = int(input()) while a != 0: total_sum += a if total_sum >= 21: print('Total sum is', total_sum) break a = int(input()) else: print('Total sum is less than 21 and is equal to', total_sum, '. ')
Версия 2. Цикл прерывается break
, поэтому ветвь «else» пропускается.
9 9 5 4 0
total_sum = 0 a = int(input()) while a != 0: total_sum += a if total_sum >= 21: print('Total sum is', total_sum) break a = int(input()) else: print('Total sum is less than 21 and is equal to', total_sum, '.')
Филиал «Else» также может использоваться с циклом «for». Давайте рассмотрим пример, когда программа считывает 5 целых чисел, но останавливается вправо, когда выполняется первое отрицательное целое число.
Версия 1. Цикл завершается нормально, поэтому выполняется ветка «else».
3 6 2 4 5
for i in range(5): a = int(input()) if a < 0: print('Met a negative number', a) break else: print('No negative numbers met')
Версия 2. Цикл прерван, поэтому ветка «else» не выполняется.
3 6 -2 4 5
for i in range(5): a = int(input()) if a < 0: print('Met a negative number', a) break else: print('No negative numbers met')
Другая инструкция, используемая для управления выполнением цикла, continue
. Если интерпретатор Python встречает по- continue
где — то в середине итерации цикла, он пропускает все оставшиеся инструкции и переходит к следующей итерации.
None
for num in range(2, 10): if num % 2 == 0: print("Found an even number", num) continue print("Found a number", num)
Если break
и continue
помещаются внутри нескольких вложенных циклов, они влияют только на выполнение самого внутреннего. Давайте посмотрим на довольно глупый пример, чтобы продемонстрировать это:
None
for i in range(3): for j in range(5): if j > i: # ломается только для строки 2 break print(i, j)
Инструкции break
и continue
, если вы можете реализовать свою идею без их использования. Вот типичный пример плохого использования break
: этот код подсчитывает количество цифр в целых числах.
567
n = int(input()) length = 0 while True: length += 1 n //= 10 if n == 0: break print('Length is', length)
Это чище и легче читать, чтобы переписать этот цикл со значимым условием цикла:
567
n = int(input()) length = 0 while n != 0: length += 1 n //= 10 print('Length is', length)
В Python для одного оператора присваивания можно изменить значение нескольких переменных. Посмотрим:
Эффект, продемонстрированный выше, может быть записан как:
Разница между двумя версиями заключается в том, что несколько присваиваний одновременно меняют значения двух переменных.
Множественное назначение полезно, когда вам нужно обменивать значения двух переменных. На старых языках программирования без поддержки множественного назначения это можно сделать с помощью вспомогательной переменной:
None
a = 1 b = 2 tmp = a a = b b = tmp print(a, b) # 2 1
В Python один и тот же своп можно записать в одну строку:
None
a = 1 b = 2 a, b = b, a print(a, b) # 2 1
Левая часть «=» должна иметь список имен переменных, разделенных запятыми. Правой частью могут быть любые выражения, разделенные запятыми. Левая и правая части должны иметь одинаковую длину.
Использование или в while loop (Python)
variable1 = 0
while variable1 != "1" or variable1 != "2" or variable1 != "3":
variable1 = input ("Enter variable1: ")
print("Succes")
Мой код никогда не выходит из while loop, даже если переменной присвоено 1, 2 или 3.
Я что-то упускаю или делаю что-то не так? Я никогда не читал никакой документации о Python, в которой говорилось, что операторы or не будут работать в циклах while. Согласно пропозициональному исчислению это должно быть правильно, потому что истина или ложь или ложь = истина
Кстати, я знаю, что не использовал целые числа.
Заранее спасибо!
python
loops
while-loop
logic
Поделиться
Источник
Zimano
20 января 2014 в 21:52
5 ответов
- Запустить bash while loop в Python
Я пытаюсь запустить bash while loop внутри скрипта Python3. 6 . То, что я пробовал до сих пор, это: subprocess.run(args=[‘while [ <condition> ]; do <command> done;’]) Я получаю следующую ошибку: FileNotFoundError: [Errno 2] такого файла или каталога нет Есть ли способ запустить такой…
- Python ломать While Loop
Я пытаюсь вырваться из while loop в Python 3 while not at_end()…: if …: else: code here if at_end(): break Однако это, похоже, не нарушает while loop. Я также пытался поставить if сразу после while loop, но это тоже не работает. Любая помощь будет оценена по достоинству.
5
Состояние вашего while-loop всегда будет оцениваться как True
, потому что variable1
всегда будет не равно "1"
или не равно "2"
.
Вместо этого вы захотите использовать not in
здесь:
variable1 = 0
while variable1 not in ("1", "2", "3"):
varible1 = input("Enter variable1: ")
print("Succes")
Однако, судя по вашей структуре кода, я думаю, что вы хотите, чтобы variable1
было целым числом, а не строкой.
Если это так, то вы можете использовать это на Python 3.x:
variable1 = 0
while variable1 not in (1, 2, 3):
varible1 = int(input("Enter variable1: "))
print("Succes")
или, если вы находитесь на Python 2.x, вы можете использовать это:
variable1 = 0
while variable1 not in (1, 2, 3):
varible1 = int(raw_input("Enter variable1: "))
print "Succes"
Поделиться
Unknown
20 января 2014 в 21:56
4
Условие вашего while loop будет ALWAYS истинным. Чтобы оно было ложным, variable1
должно быть равно "1"
, "2"
и "3"
, что невозможно для одной строки.
>>> variable1 == "1"
>>>
>>> variable1 != "1"
False
>>> variable1 != "2"
True
>>> variable1 != "3"
True
>>> False or True or True
True # So the loop will continue execution
Хотите ли вы, чтобы ваш while loop вышел, если variable1
равно "1"
, "2"
или "3"
?
while not (variable1 == "1" or variable1 == "2" or variable1 == "3"):
Если variable1
равно либо "1"
, либо "2"
, либо "3"
, то полезно представить, как будет решаться условие:
while not (True or False or False):
while not (True):
while False: # Exit
Поделиться
jayelm
20 января 2014 в 21:54
1
- Вам нужно обновить переменную в while loop
- Если вы используете
input
, вам нужно сравнить какint
variable1 = 0
while variable1 not in {1,2,3}:
variable1 = input("Enter variable1: ")
print("Succes")
Поделиться
Alvaro Fuentes
20 января 2014 в 21:57
- Как этот Java while loop сравнивается с python while loop?
Я прохожу курс по основам Java, и нас просят подсказать пользователю имя существительное. И мы используем условные операторы, чтобы отфильтровать язык bad. Если пользователь вводит jerk или dork, то программа снова запускается туда, где она запрашивает имя существительное. Хотя я не могу сказать,…
- Использование while loop вместо for loop в Python
Меня попросили написать базовую программу для класса в Python, используя for loop для печати в среднем 3 чисел из пользовательского ввода. Я пришел к следующему выводу: num1 = raw_input(Please enter your first number: ) num2 = raw_input(Please enter your second number: ) num3 = raw_input(Please…
0
Вместо ‘or’ следует использовать ‘and’. Вы хотите продолжать запрашивать вход до тех пор, пока вход не будет «1» AND, это не «2» AND, это не «3».
Поделиться
Darren
20 января 2014 в 21:56
0
Да, использование and
работает :
variable1 = 0
while variable1 != "1" and variable1 != "2" and variable1 != "3":
variable1 = input("Enter variable1: ")
print("Success")`
Поделиться
TheOneMusic
28 октября 2018 в 17:05
Похожие вопросы:
Вычисление среднего значения в python с использованием while loop
Хорошо,я в тупике при создании функции в python, которая использует while loop для вычисления среднего. Использование for loop очень просто, но я не понимаю, как воссоздать эту функцию с помощью…
или состояние в while loop python
Работает ли условие или условие в while loop в python? Кажется, у меня ничего не получается. Это пример того, как работает мой код. newslot = 3 moved = False while newslot > 0 or moved != True:…
Python случайный в While Loop
У меня есть сценарий Python, который в основном выполняется в пределах while loop: while 1: <do stuff> То, что я хотел бы сделать, это заставить его выполнять действие наугад, например, один…
Запустить bash while loop в Python
Я пытаюсь запустить bash while loop внутри скрипта Python3.6 . То, что я пробовал до сих пор, это: subprocess.run(args=[‘while [ <condition> ]; do <command> done;’]) Я получаю следующую…
Python ломать While Loop
Я пытаюсь вырваться из while loop в Python 3 while not at_end(). ..: if …: else: code here if at_end(): break Однако это, похоже, не нарушает while loop. Я также пытался поставить if сразу после…
Как этот Java while loop сравнивается с python while loop?
Я прохожу курс по основам Java, и нас просят подсказать пользователю имя существительное. И мы используем условные операторы, чтобы отфильтровать язык bad. Если пользователь вводит jerk или dork, то…
Использование while loop вместо for loop в Python
Меня попросили написать базовую программу для класса в Python, используя for loop для печати в среднем 3 чисел из пользовательского ввода. Я пришел к следующему выводу: num1 = raw_input(Please enter…
Python бесконечный while loop выпуск
Я пытаюсь сделать скрипт, который запрашивает ввод пользователя в Python, он должен ошибиться с ответом пожалуйста, введите имя, а затем вернуть пользователя обратно в исходное приглашение ввода…
Python while loop ( не выходит из while loop )
Я хочу, чтобы этот код python выходил из цикла, когда я ввожу 0 в качестве входного номера переменной num, но он продолжает печатать эти три строки постоянно Спасибо num = 10 #10 is dummy number for. ..
Чистка While Loop для Майя Python исследования
Я сделал while loop для исследования Maya python. Это хорошо работает, но это избыточно, и я думаю, что должен быть способ укоротить их лучше или сделать так, чтобы они выглядели хорошо. Не могли бы…
Циклы в Python
Каждый язык программирования, с которым я сталкивался, содержит какую-нибудь конструкцию цикла. В большей части языков есть больше одной такой конструкции. В мире Python есть два типа циклов:
- Цикл for
- Цикл while
Я заметил, что цикл for популярнее второго. Циклы используются в тех случаях, когда нам нужно сделать что-нибудь много раз. Нередко вам придется выполнить какую-нибудь операцию (или ряд операций) в части данных снова и снова. Тут то и вступают в силу циклы. Благодаря им становится возможно максимально упростить данный вопрос. Давайте подробно разберём, как работают эти структуры!
Как было сказано ранее, мы используем цикл в тех случаях, когда вам нужно повторить что-нибудь n-ное количество раз. Это проще понять, если взглянуть на пример. Мы используем встроенную функцию Python range. Функция range создаст список длинной в «n» элементов. В Python версии 2.Х существует другая функция под названием xrange, которая является генератором чисел и не такая ресурсоемкая, как range. Ранее разработчики сменили xrange на range в Python 3. Вот пример:
print(range(5)) # ответ: range(0, 5)
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]
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)
for number in range(5): print(number) |
Что здесь произошло? Давайте почитаем слева на право, чтобы понять это. Для каждого числа в диапазоне 5 мы вводим число. Мы знаем, что если мы вызываем range со значением 5, мы получим список из 5 элементов. Так что каждый раз, проходя через цикл, она выводит каждый из элементов. Цикл for, показанный выше, может быть эквивалентом следующего:
for number in [0, 1, 2, 3, 4]:
print(number)
for number in [0, 1, 2, 3, 4]: print(number) |
Функция range лишь делает результат несколько меньшим. Цикл for может обходить любой итератор Python. Мы уже видели, как именно он может работать со списком. Давайте взглянем, может ли он выполнять итерацию со словарем.
a_dict = {«one»:1, «two»:2, «three»:3}
for key in a_dict:
print(key)
a_dict = {«one»:1, «two»:2, «three»:3}
for key in a_dict: print(key) |
Когда вы используете for в словаре, вы увидите, что он автоматически перебирает ключи. Вам не нужно указывать ключ for в a_dict.keys() (впрочем, это также работает). Python делает только нужные нам вещи. Вы возможно думаете, почему ключи выводятся в другом порядке, отличном от того, какой был указан в словаре? Как мы знаем из соответствующей статьи, словари не упорядочены, так что мы можем выполнять итерацию над ними, при этом ключи могут быть в любом порядке. Теперь, зная, что ключи могут быть отсортированы, вы можете отсортировать их до итерации. Давайте немного изменим словарь, чтобы увидеть, как это работает.
a_dict = {1:»one», 2:»two», 3:»three»}
keys = a_dict.keys()
keys = sorted(keys)
for key in keys:
print(key)
a_dict = {1:»one», 2:»two», 3:»three»} 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)
for number in range(10): if number % 2 == 0: print(number) |
Результат:
Вы наверное гадаете, что вообще здесь происходит? Что еще за знак процента? В Python, % называется оператором модуля. Когда вы используете оператор модуля, он возвращает остаток. Когда вы делите целое число на два, вы получаете число без остатка, так что мы выводим эти числа. Вам, возможно, не захочется использовать оператор модуля часто в будущем, но в моей работе он нередко помогает. Теперь мы можем взглянуть на цикл while.
Есть вопросы по Python?
На нашем форуме вы можете задать любой вопрос и получить ответ от всего нашего сообщества!
Telegram Чат & Канал
Вступите в наш дружный чат по Python и начните общение с единомышленниками! Станьте частью большого сообщества!
Паблик VK
Одно из самых больших сообществ по Python в социальной сети ВК. Видео уроки и книги для вас!
Цикл while также используется для повторения частей кода, но вместо зацикливания на n количество раз, он выполняет работу до тех пор, пока не достигнет определенного условия. Давайте взглянем на простой пример:
i = 0
while i < 10:
print(i)
i = i + 1
i = 0 while i < 10: print(i) i = i + 1 |
Цикл while является своего рода условным оператором. Вот что значит этот код: пока переменная i меньше единицы, её нужно выводить на экран. Далее, в конце, мы увеличиваем её значение на единицу. Если вы запустите этот код, он выдаст от 0 до 9, каждая цифра будет в отдельной строке, после чего задача будет выполнена. Если вы удалите ту часть, в которой мы увеличиваем значение i, то мы получим бесконечный цикл. Как правило – это плохо. Бесконечные циклы известны как логические ошибки, и их нужно избегать. Существует другой способ вырваться из цикла, для этого нужно использовать встроенную функцию break. Давайте посмотрим, как это работает:
while i < 10:
print(i)
if i == 5:
break
i += 1
while i < 10: print(i)
if i == 5: break
i += 1 |
В этой части кода мы добавили условное выражение для проверки того, равняется ли когда-либо переменная i цифре 5. Если нет, тогда мы разрываем цикл. Как вы видите в выдаче кода, как только значение достигает пяти, код останавливается, даже если мы ранее указали while продолжать цикл, пока переменная не достигнет значения 10. Обратите внимание на то, что мы изменили то, как мы увеличиваем значение при помощи +=. Это удобный ярлык, который вы можете также использовать в других операциях, таких как вычитание -= и умножение *=. Встроенный break также известен как инструмент управления потока. Существует еще один, под названием continue, который в основном используется для пропуска итерации, или перейти к следующей итерации. Вот один из способов его применения:
i = 0
while i < 10:
if i == 3:
i += 1
continue
print(i)
if i == 5:
break
i += 1
i = 0
while i < 10: if i == 3: i += 1 continue
print(i) if i == 5: break
i += 1 |
Слегка запутанно, не так ли? Мы добавили второе условное выражение, которое проверяет, не равняется ли i трем. Если да, мы увеличиваем переменную и переходим к следующему циклу, который удачно пропускает вывод значения 3 на экран. Как и ранее, когда мы достигаем значения 5, мы разрываем цикл. Существует еще одна тема, касающаяся циклов, которую нам нужно затронуть – это оператор else.
Зачем нужен else при работе с циклами?
Оператор else в циклах выполняется только в том случае, если цикл выполнен успешно. Главная задача оператора else, это поиск объектов:
my_list = [1, 2, 3, 4, 5]
for i in my_list:
if i == 3:
print(«Item found!»)
break
print(i)
else:
print(«Item not found!»)
my_list = [1, 2, 3, 4, 5]
for i in my_list: if i == 3: print(«Item found!») break print(i) else: print(«Item not found!») |
В этом коде мы разорвали цикл, когда i равно 3. Это приводит к пропуску оператора else. Если вы хотите провести эксперимент, вы можете изменить условное выражение, чтобы посмотреть на значение, которое находится вне списка, и которое приведет оператор else к выполнению. Честно, ни разу не видел, чтобы кто-либо использовал данную структуру за все годы работы. Большая часть примеров, которые я видел, приведена блогерами, которые пытаются объяснить, как это работает. Я видел несколько людей, которые использовали эту структуру для провоцирования ошибки, когда объект не удается найти в искомом цикле. Вы можете почитать статью, в которой вопрос рассматривается весьма детально. Статья написана одним из разработчиков ядра Python.
Подведем итоги
Надеюсь, с этого момента вы осознали всю значимость циклов в Python. Они делают повторение очень простым, и весьма понятным. Вы будете сталкиваться с циклом for намного чаще, чем с циклом while. Если вы все еще не совсем понимаете, как это работает, настоятельно рекомендую перечитать эту статью, перед тем как продолжить.
Являюсь администратором нескольких порталов по обучению языков программирования Python, Golang и Kotlin. В составе небольшой команды единомышленников, мы занимаемся популяризацией языков программирования на русскоязычную аудиторию. Большая часть статей была адаптирована нами на русский язык и распространяется бесплатно.
E-mail: [email protected]
Образование
Universitatea Tehnică a Moldovei (utm.md)
- 2014 — 2018 Технический Университет Молдовы, ИТ-Инженер. Тема дипломной работы «Автоматизация покупки и продажи криптовалюты используя технический анализ»
- 2018 — 2020 Технический Университет Молдовы, Магистр, Магистерская диссертация «Идентификация человека в киберпространстве по фотографии лица»
вложенные и бесконечные, выход по break
Важной частью структурного программированию помимо операторов условий считаются циклы. Они помогают автоматизировать последовательные задачи в программе, а именно: повторить выполнение определенных участков кода. Такая необходимость возникает достаточно часто, когда нужно сделать что-нибудь много раз, тем самым, циклы упрощают эту задачу.
Понятие циклов
В нашей жизни мы достаточно часто сталкиваемся с цикличными задачами, к ним можно отнести любые списки, будь-то: продукты, задачи на день, запланированные экзамены. И действительно, когда мы приходим в магазин, то покупаем все, что есть в нашем списке, не останавливаясь, пока не сделаем этого.
В программировании циклы позволяют повторять некоторое действие в зависимости от соблюдения заданного условия. Таким образом организуется исполнение многократной последовательности инструкций.
Есть еще несколько важных понятий, которые нужно знать:
- Телом цикла называется та последовательность кода, которую нужно выполнить несколько раз.
- Единоразовое выполнение – это итерация.
Python позволяет также создавать вложенные циклы. Так, сначала программа запустит внешний и в первой его итерации перейдет во вложенный. Затем она снова вернется к началу внешнего и снова вызовет внутренний. Это будет происходить до тех пор, пока последовательность не завершится или не прервется. Такие циклы полезны в том случае, если нужно перебрать определенное количество элементов в списке.
В Python есть только два цикла: for и while. Первый используется по большей мере в тех случаях, когда нужно написать многоуровневую программу с множеством условий.
Цикл «for»
Цикл for в Python 3 выполняет написанный код повторно согласно введенной переменной или счетчику. Он используется только тогда, когда необходимо совершить перебор элементов заранее известное число раз. Что это значит? У нас имеется список, сначала из него берется первый элемент, потом – второй и так далее, но с каждым из них совершается действие, которое указано в теле for. Примерно это выглядит так:
for [элемент] in [последовательность]: [сделать указанное]
For может содержать данные разных типов: цифры, слова и пр. Рассмотрим пример:
for i in 10, 14, 'первый', 'второй': print(i)
На экране после запуска появится такая запись:
10 14 первый второй
Для упрощения часто используется функция range(), или диапазон. В циклах она указывает на необходимое количество повторов последовательности, уточняя, какие именно элементы из списка for, нам необходимы в данный момент. В скобках может быть указано от одного до трех чисел:
- одно указывает на то, что нужно проверить все числа от 0 и до него;
- два говорят о том, что перебрать нужно все числа, находящиеся между ними;
- три числа сгенерируют список от первого до второго, но с шагом, равным третьей цифре.
Рассмотрим пример. Теоретически вы можете записать так:
for i in [14, 15, 16, 17, 18]: print(i)
Но это слишком затратно, особенно если чисел слишком много, поэтому лучше сделать так, используя указанный выше range():
for i in range(14,18): print(i)
И в первом, и во втором случае на экране появится такая последовательность:
14 15 16 17
Цикл «while»
While с английского языка переводится, как «до тех пор, как». Это достаточно универсальный цикл, он немного похож на условие if, но его код выполняется не один раз. Его условие записывается до тела цикла. После того, как оно выполнено первый раз, программа возвращается к заголовку и снова повторяет все действия. Этот процесс заканчивается тогда, когда условие цикла больше не может быть соблюдено, иными словами перестает быть истинным. Тем, что заранее неизвестно количество проверок, он отличается от предыдущего цикла for. Кстати, еще его называют циклом с предусловием.
Запись цикла while в Python выглядит так:
while [условие истинно]: [сделать указанное]
Приведем пример использования этого цикла:
count = 0 while count < 6: print(count) count += 2
Здесь переменной присваивается значение 0, после чего начинается цикл, в котором проверяется условие, чтобы число было меньше 6. В теле цикла также содержится две инструкции: первая выводит само число на экран, а вторая увеличивает его значение на два. Цикл, таким образом, выполняется, пока условие продолжает быть истинным. На экране перед вами появится следующая последовательность чисел:
0 2 4
После тела цикла можно указать else и блок операций, которые необходимо выполнить, когда закончится while.
Обычно в ней есть смысл, только если указана инструкция break, но программа работает и без последней. Посмотрим на код:
count = 3 while count < 7: print count, " меньше 7" count = count + 1 else: print count, " не меньше 7"
Переменная – 3, задается условие, что пока она меньше 7, нужно выводить ее и выражение «меньше 7», затем прибавлять к ней 1. В тех случаях, когда она уже становится равной 7, то в ход пойдет условие, указанное в else, и на экране появится, что переменная не меньше 7. В результате выполнения этого кода мы увидим:
3 меньше 7 4 меньше 7 5 меньше 7 6 меньше 7 7 не меньше 7
Инструкции break и continue
Оператор break используется для выхода из цикла Python — прерывает его досрочно. Так, если во время выполнения кода, программа натыкается на break, то она сразу прекращает цикл и выходит из него, минуя else. Это необходимо, например, если при выполнении инструкций была обнаружена ошибка, и дальнейшая работа бессмысленна. Посмотрим на пример его применения:
while True: name = input(‘Введите имя:’) if name == ‘хватит’: break print(‘Привет’, имя)
Его реализация будет выглядеть так:
Введите имя: Ирина Привет Ирина Введите имя: Алексей Привет Алексей Введите имя: хватит
После этого выполнение программы будет прервано.
Другая инструкция, которая может менять цикл, — это continue. Если она указана внутри кода, то все оставшиеся инструкции до конца цикла пропускаются и начинается следующая итерация.
В целом, не следует слишком увлекаться использованием этих инструкций.
Цикл с постусловием
Во многих других языках программирования существуют циклы с постусловием, обычно они описываются так:
- repeat [тут исполняемый код] until [условия продолжения];
- do [тут исполняемый код] while [условия продолжения];
К сожалению, в Python цикл с постусловием отсутствует!
Цикл while может стать циклом с постусловием, тогда его примерный вид будет таким:
while True: if not условие: break
Или таким:
while condition is True: stuff() else: stuff()
Так получается, что сначала дается тело цикла, а потом задается условие.
Бесконечные циклы
Бесконечными циклами в программировании называются те, в которых условие выхода их них не выполняется.
Цикл while становится бесконечным, когда его условие не может быть ложным. Например, при помощи него можно реализовать программу «Часы», которая бесконечно отображает время.
Примером реализации в Python бесконечного цикла будет такой код:
Num = 3 while num < 5: print "Привет"
Очевидно, что заданная переменная всегда останется цифрой 3, поскольку никак не задано ее увеличение, поэтому на экране просто будет появляться слово «Привет».
Зачастую цикл не должен быть бесконечным, поскольку это причина неустойчивой работы программы. Для того чтобы выйти из него, нужно нажать комбинацию клавиш: CTRL+C. При этом программы, из которых нет выхода, также существуют. К ним относятся: операционные системы, прошивки микроконтроллеров.
Вложенные циклы
Рассмотрим вложенные циклы в Python. Для реализации можно использовать как вложенные for, так и while.
Про них мы уже писали выше. Здесь же хочется привести пару примеров использования. Они очень часто используются при обработке двухмерных списков.
Вот пример создания двумерного списка и вывода его на экран с помощью print.
d = [[1,2,3],[4,5,6]] for i in range(2): for j in range(3): print(d[i][j])
Нельзя с помощью одного break в Python выйти сразу из двух циклов. В этом случае нужно во внешнем цикле создать условие следующим образом.
toExit = False while True: while True: toExit = doSomething() if toExit: break if toExit: break
Здесь приведен пример использования в Python цикла в цикле. Оба бесконечны. Все будет выполняться бесконечно, до тех пор, пока функция doSomething не вернет True. После этого поочередно сработают break во внешнем и во внутреннем циклах.
Заключение
Как правило, команды в коде выполняются последовательно: одна за другой. Именно поэтому, когда есть необходимость выполнить тело кода несколько раз, используются циклы. Циклы для Python очень значимы, именно они делают повторение простым, логичным и очень понятным.
Python «while» циклы (неопределенная итерация) — Real Python
Смотреть сейчас В этом руководстве есть связанный видеокурс, созданный командой Real Python. Посмотрите его вместе с письменным руководством, чтобы углубить свое понимание: Mastering While Loops
Итерация означает выполнение одного и того же блока кода снова и снова, возможно, много раз. Программная структура, реализующая итерацию, называется циклом .
В программировании есть два типа итераций, неопределенные и определенные:
При неопределенной итерации количество выполнений цикла заранее явно не указывается.Скорее, назначенный блок выполняется повторно, пока выполняется какое-либо условие.
При определенной итерации , количество раз, когда назначенный блок будет выполняться, явно указывается в момент начала цикла.
В этом руководстве вы введете:
- Узнайте о цикле
while
, управляющей структуре Python, используемой для неопределенной итерации - Узнайте, как преждевременно выйти из цикла или итерации цикла
- Исследуйте бесконечные циклы
Когда вы закончите, вы должны хорошо понимать, как использовать неопределенную итерацию в Python.
Пройдите викторину: Проверьте свои знания с помощью нашей интерактивной викторины «Питон» и «Петли». По завершении вы получите балл, чтобы вы могли отслеживать свой прогресс в обучении с течением времени:
Пройти тест »
в то время как
петля
Давайте посмотрим, как операторы Python и
используются для построения циклов. Мы начнем с простого и будем приукрашивать.
Формат элементарного цикла и
показан ниже:
, а <выражение>:
<заявление (я)>
<оператор (ы)>
представляет блок, который должен быть повторно выполнен, часто называемый телом цикла.Это обозначается отступом, как в заявлении if
.
Помните: Все управляющие структуры в Python используют отступ для определения блоков. См. Обсуждение операторов группировки в предыдущем учебном пособии.
Управляющее выражение
обычно включает одну или несколько переменных, которые инициализируются перед запуском цикла, а затем изменяются где-то в теле цикла.
Когда встречается цикл и
, сначала вычисляется
в логическом контексте.Если это правда, тело цикла выполняется. Затем снова проверяется
, и если все еще истинно, тело выполняется снова. Это продолжается до тех пор, пока
не станет ложным, после чего выполнение программы перейдет к первому оператору за пределами тела цикла.
Рассмотрим этот цикл:
>>>
1 >>> п = 5
2 >>> пока n> 0:
3 ... п - = 1
4 ... печать (n)
5 ...
64
73
82
91
100
Вот что происходит в этом примере:
n
— это изначально5
.Выражение в заголовке оператораи
в строке 2 имеет видn> 0
, что верно, поэтому тело цикла выполняется. Внутри тела цикла в строке 3 значениеn
уменьшается на1
до4
, а затем печатается.Когда тело цикла завершено, выполнение программы возвращается к началу цикла в строке 2, и выражение вычисляется снова. Это все еще верно, поэтому тело снова выполняется, и печатается
3
.Это продолжается до тех пор, пока
n
не станет0
. В этот момент, когда выражение проверяется, оно ложно, и цикл завершается. Выполнение будет возобновлено с первого оператора, следующего за телом цикла, но в данном случае его нет.
Обратите внимание, что сначала проверяется управляющее выражение цикла while
, прежде чем что-либо произойдет. Если изначально задано значение false, тело цикла никогда не будет выполнено:
>>>
>>> п = 0
>>> пока n> 0:
... n - = 1
... печать (n)
...
В приведенном выше примере, когда встречается цикл, n
равно 0
. Управляющее выражение n> 0
уже ложно, поэтому тело цикла никогда не выполняется.
Вот еще один цикл while
, включающий список, а не числовое сравнение:
>>>
>>> a = ['foo', 'bar', 'baz']
>>> а:
... печать (a.pop (-1))
...
баз
бар
фу
Когда список оценивается в логическом контексте, он является истинным, если в нем есть элементы, и ложным, если он пуст.В этом примере a
истинно, пока в нем есть элементы. После того, как все элементы были удалены с помощью метода .pop ()
и список пуст, a
будет ложным, и цикл завершится.
Python
break
и continue
Утверждения
В каждом из примеров, которые вы видели до сих пор, все тело цикла и
выполняется на каждой итерации. Python предоставляет два ключевых слова, которые преждевременно завершают итерацию цикла:
Оператор Python
break
немедленно полностью завершает цикл.Выполнение программы переходит к первому оператору, следующему за телом цикла.Оператор Python
continue
немедленно завершает текущую итерацию цикла. Выполнение переходит к началу цикла, и управляющее выражение повторно оценивается, чтобы определить, будет ли цикл выполняться снова или завершиться.
Различие между break
и continue
показано на следующей диаграмме:
break and continue
Вот файл сценария под названием break.py
, который демонстрирует разрыв , оператор
:
1n = 5
2 при n> 0:
3 п - = 1
4, если n == 2:
5 перерыв
6 отпечатков (п)
7print ('Цикл закончился.')
Запуск break.py
из интерпретатора командной строки дает следующий вывод:
C: \ Users \ john \ Documents> python break.py
4
3
Цикл закончился.
Когда n
становится 2
, выполняется оператор break
.Цикл полностью завершается, и выполнение программы переходит к оператору print ()
в строке 7.
Следующий сценарий, continue.py
, идентичен, за исключением оператора continue
вместо разрыва
:
1n = 5
2 при n> 0:
3 п - = 1
4, если n == 2:
5 продолжить
6 отпечатков (п)
7print ('Цикл закончился.')
Результат continue.py
выглядит так:
C: \ Users \ john \ Documents> python continue.ру
4
3
1
0
Цикл закончился.
На этот раз, когда n
равно 2
, оператор continue
вызывает завершение этой итерации. Таким образом, 2
не печатается. Выполнение возвращается к началу цикла, условие переоценивается, и оно по-прежнему остается верным. Цикл возобновляется и завершается, когда n
становится 0
, как и раньше.
иначе
Пункт
Python допускает необязательное предложение else
в конце цикла while
.Это уникальная особенность Python, которой нет в большинстве других языков программирования. Синтаксис показан ниже:
, а <выражение>:
<заявление (я)>
еще:
<дополнительные_условия>
, указанное в предложении else
, будет выполнено, когда цикл и
завершится.
Примерно сейчас вы можете подумать: «Чем это полезно?» Вы можете сделать то же самое, поместив эти операторы сразу после цикла while
, без else
:
, а <выражение>:
<заявление (я)>
<дополнительные_условия>
В чем разница?
В последнем случае, без предложения else
,
будет выполняться после , а цикл
завершится, несмотря ни на что.
Когда
помещены в предложение else
, они будут выполняться только в том случае, если цикл завершится «по исчерпанию», то есть, если цикл повторяется до тех пор, пока управляющее условие не станет ложным. Если цикл завершается оператором break
, предложение else
выполняться не будет.
Рассмотрим следующий пример:
>>>
>>> п = 5
>>> пока n> 0:
... п - = 1
... print (n)
... еще:
... print ('Цикл выполнен.')
...
4
3
2
1
0
Петля сделана.
В этом случае цикл повторяется до тех пор, пока условие не будет исчерпано: n
стало 0
, поэтому n> 0
стало ложным. Поскольку цикл дожил, так сказать, свою естественную жизнь, условие else
было выполнено. Теперь обратите внимание на разницу:
>>>
>>> п = 5
>>> пока n> 0:
... п - = 1
... печать (n)
... если n == 2:
... перерыв
... еще:
... print ('Цикл выполнен.')
...
4
3
2
Этот цикл прерывается преждевременно с помощью break
, поэтому предложение else
не выполняется.
Может показаться, что значение слова else
не совсем подходит для цикла while
, как и для оператора if
. Гвидо ван Россум, создатель Python, на самом деле сказал, что, если бы ему пришлось повторить это снова, он бы исключил из языка , в то время как
цикла
, а также предложение
.
Одно из следующих толкований может помочь сделать его более интуитивным:
Думайте о заголовке цикла (
, а n> 0,
) как о заявленииif
(, если n> 0,
), которое выполняется снова и снова, причем предложениеelse
, наконец, выполняется, когда условие становится ложный.Подумайте о
, иначе о
, как обез перерыва
, в том смысле, что следующий за ним блок выполняется, если не было перерыва
Если вы не находите ни одно из этих толкований полезным, не стесняйтесь их игнорировать.
Когда может быть полезно предложение else
в цикле и
? Одна из распространенных ситуаций - это поиск в списке определенного элемента. Вы можете использовать break
для выхода из цикла, если элемент найден, а предложение else
может содержать код, который должен выполняться, если элемент не найден:
>>>
>>> a = ['foo', 'bar', 'baz', 'qux']
>>> s = 'corge'
>>> я = 0
>>> пока я
Примечание: Приведенный выше код полезен для иллюстрации концепции, но на самом деле вы вряд ли будете искать в списке таким образом.
Прежде всего, списки обычно обрабатываются с определенной итерацией, а не с циклом и
. Определенная итерация рассматривается в следующем руководстве этой серии.
Во-вторых, Python предоставляет встроенные способы поиска элемента в списке. Вы можете использовать в операторе
:
>>>
>>> если в:
... print (s, 'найдено в списке.')
... еще:
... print (s, 'не найдено в списке.')
...
corge не найден в списке.
Также подойдет метод list.index ()
. Этот метод вызывает исключение ValueError
, если элемент не найден в списке, поэтому для его использования необходимо понимать обработку исключений.В Python вы используете оператор try
для обработки исключения. Пример приведен ниже:
>>>
>>> попробуйте:
... печать (a.index ('corge'))
... кроме ValueError:
... print (s, 'не найдено в списке.')
...
corge не найден в списке.
Об обработке исключений вы узнаете позже в этой серии.
Предложение else
с циклом и
- это немного странность, которую не часто можно увидеть. Но не уклоняйтесь от этого, если вы обнаружите ситуацию, в которой, как вам кажется, это добавляет ясности в ваш код!
Бесконечные петли
Предположим, вы пишете цикл и
, который теоретически никогда не заканчивается.Звучит странно, правда?
Рассмотрим этот пример:
>>>
>>> while True:
... печать ('фу')
...
фу
фу
фу
.
.
.
фу
фу
фу
KeyboardInterrupt
Отслеживание (последний вызов последний):
Файл "", строка 2, в
печать ('фу')
Этот код был прерван командой Ctrl + C , которая генерирует прерывание с клавиатуры. В противном случае это продолжалось бы бесконечно. Многие выходные строки foo
были удалены и заменены вертикальным многоточием в показанном выходе.
Ясно, что True
никогда не будет ложным, иначе у всех нас будут большие проблемы. Таким образом, while True:
инициирует бесконечный цикл, который теоретически будет выполняться вечно.
Может быть, это не похоже на то, что вы хотели бы делать, но этот шаблон на самом деле довольно распространен. Например, вы можете написать код для службы, которая запускается и работает постоянно, принимая запросы на обслуживание. «Навсегда» в этом контексте означает, пока вы не выключите его или пока не наступит тепловая смерть вселенной, в зависимости от того, что наступит раньше.
Более прозаично, помните, что цикл может быть разорван с помощью оператора break
. Может быть проще завершить цикл на основе условий, распознаваемых в теле цикла, а не на основе условия, оцененного наверху.
Вот еще один вариант цикла, показанный выше, который последовательно удаляет элементы из списка с помощью .pop ()
, пока он не станет пустым:
>>>
>>> a = ['foo', 'bar', 'baz']
>>> в то время как True:
... если не:
... перерыв
... печать (a.pop (-1))
...
баз
бар
фу
Когда a
становится пустым, не
становится истинным, и оператор break
выходит из цикла.
Вы также можете указать несколько операторов break
в цикле:
, пока True:
if : # Одно условие для завершения цикла
перерыв
...
if : # Другое условие завершения
перерыв
...
if : # Еще один
перерыв
В подобных случаях, когда есть несколько причин для завершения цикла, часто проще прервать
из нескольких разных мест, чем пытаться указать все условия завершения в заголовке цикла.
Бесконечные циклы могут быть очень полезны. Просто помните, что вы должны в какой-то момент разорвать цикл, чтобы он не стал бесконечным.
Вложенный
, а петли
В общем, управляющие структуры Python могут быть вложены друг в друга. Например, if
/ elif
/ else
условные операторы могут быть вложены:
, если возраст <18:
если пол == 'M':
печать ('сын')
еще:
print ('дочь')
elif age> = 18 и age <65:
если пол == 'M':
печать ('отец')
еще:
печать ('мать')
еще:
если пол == 'M':
print ('дедушка')
еще:
print ('бабушка')
Точно так же цикл , а
может содержаться в другом цикле , а
, как показано здесь:
>>>
>>> a = ['foo', 'bar']
>>> пока len (a):
... print (a.pop (0))
... b = ['baz', 'qux']
... пока len (b):
... печать ('>', b.pop (0))
...
фу
> баз
> qux
бар
> баз
> qux
break
или continue Оператор
, обнаруженный во вложенных циклах, применяется к ближайшему охватывающему циклу:
, а :
утверждение
утверждение
в то время как :
утверждение
утверждение
break # Применяется к циклу while :
break # Применяется к циклу while :
Кроме того, , а циклы
могут быть вложены в , если
/ elif
/ else
операторов, и наоборот:
, если <выражение>:
утверждение
в то время как :
утверждение
утверждение
еще:
в то время как :
утверждение
утверждение
утверждение
, а <выражение>:
если <выражение>:
утверждение
элиф <выражение>:
утверждение
еще:
утверждение
если <выражение>:
утверждение
Фактически, все управляющие структуры Python могут смешиваться друг с другом в любой степени, в которой вам нужно.Так и должно быть. Представьте, как было бы неприятно, если бы возникли неожиданные ограничения, такие как «Цикл , в то время как цикл
не может содержаться внутри оператора if
» или «, в то время как циклы
могут быть вложены друг в друга глубиной не более четырех». Вам будет очень сложно их все запомнить.
Кажущиеся произвольными числовые или логические ограничения считаются признаком плохой разработки языка программы. К счастью, вы не найдете многих в Python.
Однострочный
, а
Петли
Как и в случае с оператором if
, цикл while
может быть указан в одной строке.Если в блоке, составляющем тело цикла, есть несколько операторов, их можно разделить точкой с запятой (;
):
>>>
>>> п = 5
>>> пока n> 0: n - = 1; печать (п)
4
3
2
1
0
Это работает только с простыми операторами. Невозможно объединить два составных оператора в одну строку. Таким образом, вы можете указать цикл , а
все в одной строке, как указано выше, и написать оператор if
в одной строке:
>>>
>>> если True: print ('foo')
фу
Но вы не можете этого сделать:
>>>
>>> при n> 0: n - = 1; если True: print ('foo')
SyntaxError: недопустимый синтаксис
Помните, что PEP 8 не рекомендует использовать несколько операторов в одной строке.Так что вам, вероятно, в любом случае не следует делать это очень часто.
Заключение
В этом руководстве вы узнали о неопределенной итерации с использованием цикла Python while
. Теперь вы можете:
- Построить базовый и сложный
, а петли
- Выполнение цикла прерывания с
break
иcontinue
- Используйте предложение
else
с цикломwhile
- Работа с бесконечными циклами
Теперь вы должны хорошо понимать, как многократно выполнять фрагмент кода.
Пройдите викторину: Проверьте свои знания с помощью нашей интерактивной викторины «Питон» и «Петли». По завершении вы получите балл, чтобы вы могли отслеживать свой прогресс в обучении с течением времени:
Пройти тест »
Следующее руководство в этой серии охватывает определенных итераций с для
циклов - повторяющееся выполнение, где количество повторений указывается явно.
Смотреть сейчас В этом руководстве есть связанный видеокурс, созданный командой Real Python.Посмотрите его вместе с письменным руководством, чтобы углубить свое понимание: Mastering While Loops
Python, а цикл
Что такое цикл while в Python?
Цикл while в Python используется для перебора блока кода, пока проверочное выражение (условие) истинно.
Обычно мы используем этот цикл, когда заранее не знаем, сколько раз нужно выполнить итерацию.
Синтаксис цикла while в Python
в то время как test_expression: Кузов а
В цикле while сначала проверяется тестовое выражение.Тело цикла вводится только в том случае, если test_expression
оценивается как True
. После одной итерации тестовое выражение снова проверяется. Этот процесс продолжается до тех пор, пока test_expression
не оценивается как False
.
В Python тело цикла while определяется посредством отступов.
Тело начинается с отступа, а первая строка без отступа отмечает конец.
Python интерпретирует любое ненулевое значение как True
. Нет
и 0
интерпретируются как Ложь
.
Блок-схема цикла while
Блок-схема цикла while в Python
Пример: цикл Python while
# Программа для добавления натурального
# номера до
# сумма = 1 + 2 + 3 + ... + n
# Чтобы принять ввод от пользователя,
# n = int (input ("Введите n:"))
п = 10
# инициализировать сумму и счетчик
сумма = 0
я = 1
пока я <= n:
сумма = сумма + я
i = i + 1 # обновить счетчик
# выводим сумму
print ("Сумма есть", sum)
Когда вы запустите программу, вывод будет:
Введите n: 10 Сумма 55
В приведенной выше программе тестовым выражением будет True
, пока наша переменная счетчика i меньше или равна n (10 в нашей программе).
Нам нужно увеличить значение переменной счетчика в теле цикла. Это очень важно (и по большей части о нем забывают). В противном случае возникнет бесконечный цикл (бесконечный цикл).
Наконец, отображается результат.
Цикл while с else
То же, что и с циклами for, в то время как циклы также могут иметь дополнительный блок else
.
Часть else
выполняется, если условие в цикле while оценивается как False
.
Цикл while можно завершить с помощью оператора break. В таких случаях часть else
игнорируется. Следовательно, часть цикла while else
выполняется, если не происходит прерывания и условие ложно.
Вот пример, иллюстрирующий это.
'' 'Пример для иллюстрации
использование оператора else
с циклом while '' '
counter = 0
пока счетчик <3:
print ("Внутренний цикл")
counter = counter + 1
еще:
print («Внутри остального»)
Выход
Внутренний контур Внутренний цикл Внутренний цикл Внутри остальное
Здесь мы используем переменную счетчика для трехкратной печати строки Inside loop .
На четвертой итерации условие в , а
становится False
. Следовательно, выполняется часть else
.
Учебное пособие по Python
: циклы while
Петли
Общая структура цикла
Многие алгоритмы требуют наличия в языке программирования конструкции, позволяющей многократно выполнять последовательность операторов. Код внутри цикла, то есть код, выполняемый повторно, называется телом цикла.
По сути, существует три различных типа петель:
Петли с контролем счета
Конструкция для повторения цикла определенное количество раз. Примером такого типа цикла является цикл for языка программирования C:.
для (i = 0; i <= n; i ++)
Python не имеет такого цикла.
Контур с условным управлением
Цикл будет повторяться до тех пор, пока данное условие не изменится, то есть не изменится с True на False или с False на True, в зависимости от типа цикла.Существуют циклы while и do while с таким поведением.Контур с регулируемым сбором
Это специальная конструкция, которая позволяет перебирать элементы «коллекции», которая может быть массивом, списком или другой упорядоченной последовательностью. Как цикл for оболочки bash (например, для i in * do echo $ i; done) или цикл foreach Perl.
Python предоставляет два разных типа циклов: цикл while и цикл for, которые соответствуют циклу, управляемому условием, и циклу, управляемому коллекцией.
Большинство циклов содержат счетчик или, в более общем смысле, переменные, которые изменяют свои значения в процессе вычислений. Эти переменные должны быть инициализированы перед запуском цикла. Счетчик или другие переменные, которые могут быть изменены в теле цикла, содержатся в условии. Прежде чем тело цикла будет выполнено, условие оценивается. Если он оценивается как False, цикл while завершается. Другими словами, выполнение программы продолжится с первого оператора после оператора while, т.е.е. на том же уровне отступа, что и цикл while. Если условие оценивается как True, тело - блок с отступом под строкой с «while» - выполняется. После того, как тело будет закончено, состояние будет снова оценено. Тело цикла будет выполняться до тех пор, пока условие вернет True.
Простой пример с циклом while
Лучше всего проиллюстрировать принцип работы цикла на простом примере Python. Следующий небольшой скрипт вычисляет сумму чисел от 1 до 100.Позже мы представим более элегантный способ сделать это.
циклов while в Python 3
Введение
Компьютерные программы отлично подходят для автоматизации и повторения задач, так что нам не нужно. Один из способов повторить аналогичные задачи - использовать петель . В этом руководстве мы рассмотрим цикл Python while .
Цикл и
реализует повторное выполнение кода на основе заданного логического условия. Код, который находится в блоках и
, будет выполняться до тех пор, пока оператор , в то время как
оценивается как True.
Вы можете рассматривать цикл и
как повторяющийся условный оператор. После оператора if
программа продолжает выполнение кода, но в цикле while
программа возвращается к началу оператора while, пока условие не станет ложным.
В отличие от для циклов , которые выполняются определенное количество раз, , в то время как
циклов являются условными, поэтому вам не нужно знать, сколько раз повторять входящий код.
Цикл в то время как
В Python , а циклы
построены так:
, пока [условие истинно]:
[сделай что-нибудь]
То, что делается, будет продолжать выполняться до тех пор, пока оцениваемое условие не перестанет быть истинным.
Давайте создадим небольшую программу, которая выполняет цикл и
. В этой программе мы попросим пользователя ввести пароль. При прохождении этого цикла возможны два исхода:
- Если пароль правильный , цикл
и
завершится. - Если пароль не правильный , цикл
и
продолжит выполнение.
Мы создадим файл с именем password.py
в выбранном текстовом редакторе и начнем с инициализации переменной password
как пустой строки:
password.py
пароль = ''
Пустая строка будет использоваться для ввода данных от пользователя в цикле и
.
Теперь мы построим оператор while
вместе с его условием:
пароль.py
пароль = ''
в то время как пароль! = 'пароль':
Здесь за и
следует пароль переменной
. Мы ищем, установлена ли для переменной password
строка password
(на основе ввода пользователя позже), но вы можете выбрать любую строку, которую хотите.
Это означает, что если пользователь вводит строку , пароль
, цикл остановится, и программа продолжит выполнение любого кода вне цикла.Однако, если строка, которую вводит пользователь, не равна строке пароля
, цикл будет продолжен.
Затем мы добавим блок кода, который что-то делает в цикле , а
:
password.py
пароль = ''
в то время как пароль! = 'пароль':
print ('Какой пароль?')
пароль = вход ()
Внутри цикла while
программа запускает оператор печати, который запрашивает пароль.Затем переменный пароль
устанавливается на ввод пользователя с помощью функции input ()
.
Программа проверит, назначена ли переменная пароль
строке пароль
, и если да, то цикл и
завершится. Давайте дадим программе еще одну строку кода, когда это произойдет:
password.py
пароль = ''
в то время как пароль! = 'пароль':
print ('Какой пароль?')
пароль = вход ()
print ('Да, пароль' + пароль + '.Вы можете войти. ')
Последний оператор print ()
находится за пределами цикла while
, поэтому, когда пользователь вводит пароль
в качестве пароля, он увидит последний оператор печати вне цикла.
Однако, если пользователь никогда не вводит слово пароль
, он никогда не доберется до последнего оператора print ()
и застрянет в бесконечном цикле.
Бесконечный цикл возникает, когда программа продолжает выполняться в одном цикле, никогда не покидая его.Чтобы выйти из бесконечных циклов в командной строке, нажмите CTRL + C
.
Сохраните программу и запустите ее:
Вам будет предложено ввести пароль, а затем его можно будет проверить с помощью различных возможных вариантов ввода. Вот пример вывода программы:
Выход
Какой пароль?
Привет
Какой пароль?
Сэмми
Какой пароль?
ПАРОЛЬ
Какой пароль?
пароль
Да, это пароль. Вы можете войти.
Имейте в виду, что строки чувствительны к регистру, если вы также не используете строковую функцию для преобразования строки во все строчные буквы (например) перед проверкой.
Пример программы с циклом while
Теперь, когда мы понимаем общую предпосылку цикла и
, давайте создадим игру в угадывание командной строки, которая эффективно использует цикл и
. Чтобы лучше понять, как работает эта программа, вам также следует прочитать об использовании условных операторов и преобразовании типов данных.
Сначала мы создадим файл с именем guess.py
в выбранном текстовом редакторе. Мы хотим, чтобы компьютер выдавал случайные числа, чтобы пользователь мог их угадать, поэтому мы импортируем модуль random
с оператором import
.Если вы не знакомы с этим пакетом, вы можете узнать больше о генерации случайных чисел из документации Python.
guess.py
случайный импорт
Затем мы присвоим переменной число
случайное целое число и оставим его в диапазоне от 1 до 25 (включительно) в надежде, что это не сделает игру слишком сложной.
guess.py
случайный импорт
число = random.randint (1, 25)
На этом этапе мы можем перейти к нашему циклу и
, сначала инициализируя переменную, а затем создавая цикл.
guess.py
случайный импорт
число = random.randint (1, 25)
number_of_guesses = 0
в то время как number_of_guesses <5:
print ('Угадай число от 1 до 25:')
угадать = вход ()
угадать = int (угадать)
number_of_guesses = number_of_guesses + 1
если угадать == число:
перерыв
Мы инициализировали переменную number_of_guesses
равной 0, так что мы увеличиваем ее с каждой итерацией нашего цикла, чтобы у нас не было бесконечного цикла.Затем мы добавили оператор while
, чтобы число number_of_guesses
было ограничено 5. После пятого предположения пользователь вернется в командную строку, и пока, если пользователь вводит что-то, кроме целого числа, он получит сообщение об ошибке.
Внутри цикла мы добавили оператор print ()
, чтобы предложить пользователю ввести число, которое мы приняли с помощью функции input ()
и установили для переменной guess
. Затем мы преобразовали guess
из строки в целое число.
Прежде чем цикл закончится, мы также хотим увеличить переменную number_of_guesses
на 1, чтобы мы могли пройти цикл 5 раз.
Наконец, мы пишем условный оператор if
, чтобы убедиться, что предположение
, сделанное пользователем, эквивалентно номеру
, сгенерированному компьютером, и если это так, мы используем оператор break
для выхода из цикла. .
Программа полностью функционирует, и мы можем запустить ее с помощью следующей команды:
Хотя это работает, прямо сейчас пользователь никогда не знает, верна ли его догадка, и он может угадать все 5 раз, даже не зная, правильно ли он ее понял.Пример вывода текущей программы выглядит так:
Вывод
Угадайте число от 1 до 25:
11
Угадайте число от 1 до 25:
19
Угадайте число от 1 до 25:
22
Угадайте число от 1 до 25:
3
Угадайте число от 1 до 25:
8
Давайте добавим несколько условных операторов вне цикла, чтобы пользователь мог узнать, правильно ли он угадывает число. Они будут в конце нашего текущего файла.
угадайте.py
импорт случайный
число = random.randint (1, 25)
number_of_guesses = 0
в то время как number_of_guesses <5:
print ('Угадай число от 1 до 25:')
угадать = вход ()
угадать = int (угадать)
number_of_guesses = number_of_guesses + 1
если угадать == число:
перерыв
если угадать == число:
print ('Вы угадали число в' + str (number_of_guesses) + 'пытается!')
еще:
print ('Вы не угадали число. Число было' + str (число))
На этом этапе программа сообщит пользователю, правильно ли он получил номер, что может не произойти до конца цикла, когда пользователь не догадывается.
Чтобы помочь пользователю в процессе, давайте добавим еще несколько условных операторов в цикл и
. Они могут сказать пользователю, было ли его число слишком маленьким или слишком большим, чтобы он с большей вероятностью угадал правильное число. Мы добавим их перед нашим , если угадаете == номер
, строка
.
guess.py
случайный импорт
число = random.randint (1, 25)
number_of_guesses = 0
в то время как number_of_guesses <5:
print ('Угадай число от 1 до 25:')
угадать = вход ()
угадать = int (угадать)
number_of_guesses = number_of_guesses + 1
если угадай <число:
print ('Ваше предположение слишком занижено')
если угадать> число:
print ('Ваша догадка слишком высока')
если угадать == число:
перерыв
если угадать == число:
print ('Вы угадали число в' + str (number_of_guesses) + 'пытается!')
еще:
print ('Вы не угадали номер.Число было '+ str (число))
Когда мы снова запускаем программу с python guess.py
, мы видим, что пользователь получает более управляемую помощь в своем угадывании. Таким образом, если случайно сгенерированное число - 12
, а пользователь угадывает 18
, ему сообщат, что его предположение слишком велико, и они могут соответствующим образом скорректировать свое следующее предположение.
Есть еще кое-что, что можно сделать для улучшения кода, включая обработку ошибок, когда пользователь не вводит целое число, но в этом примере мы видим цикл и
в работе в короткой программе командной строки.
Заключение
В этом руководстве было рассмотрено, как циклы и
работают в Python и как их создавать. Циклы в то время как продолжают цикл через блок кода при условии, что условие, установленное в операторе while
, истинно.
Отсюда вы можете продолжить изучение циклов, прочитав учебники по для циклов и операторов break, continue и pass .
Цикл while - изучение Python 3
в то время как цикл повторяется
последовательность действий много раз, пока какое-то условие не оценивается как False
.Условие задается перед телом цикла и проверяется перед каждым выполнением тела цикла.
Обычно цикл и
используется, когда это невозможно.
чтобы заранее определить точное количество итераций цикла.
Синтаксис цикла while
в простейшем случае выглядит так:
при каком-то условии: блок заявлений
Python сначала проверяет условие.
Если ложно, то цикл прерывается и управление
передается в следующий оператор после тела цикла while
.Если условие истинно, то выполняется тело цикла, а затем условие
проверяется снова.
Это продолжается, пока условие истинно.
Как только условие становится ложным, цикл завершается и
управление передается следующему оператору после цикла.
Например, следующий фрагмент программы распечатывает
квадраты всех целых чисел от 1 до 10. Здесь можно заменить цикл while на
для ... в диапазоне (...)
петля:
1 4 9 16 25 36 49 64 81 год 100
я = 1 пока я <= 10: печать (я ** 2) я + = 1
В этом примере переменная i
внутри цикла выполняет итерацию от 1 до 10.Такая переменная, значение которой изменяется с каждой новой итерацией цикла.
называется счетчиком. Обратите внимание, что после выполнения этого фрагмента
значение переменной i
определено и равно 11
,
потому что, когда i == 11
условие i <= 10
ложно впервые.
Вот еще один пример использования цикла и
.
для определения количества цифр целого числа n
:
5678
п = целое число (вход ()) длина = 0 пока n> 0: n // = 10 # это эквивалентно n = n // 10 длина + = 1 печать (длина) # 4
На каждой итерации отрезаем последнюю цифру числа
с использованием целочисленного деления на 10 ( n // = 10
).В переменной
длина
мы подсчитываем, сколько раз мы это делали.
В Python есть другой, более простой способ решить эту проблему:
длина = len (str (i))
.
Можно написать оператор else:
после тела цикла, который выполняется
один раз после окончания цикла:
Нет
я = 1 пока я <= 10: печать (я) я + = 1 еще: print ('Цикл закончился, я =', я)
На первый взгляд это утверждение кажется бессмысленным, потому что утверждение else:
тело можно просто поставить после конца цикла.Оператор "else" после цикла имеет смысл только при использовании
в сочетании с инструкцией перерыв
. Если во время выполнения цикла интерпретатор Python обнаруживает
break
, он немедленно останавливает выполнение цикла и выходит из него.
В этом случае ветвь else:
не выполняется. Итак, break
используется для прерывания выполнения цикла во время
середина любой итерации.
Вот пример, похожий на Black Jack: программа, которая считывает числа и суммирует их.
пока общая сумма не станет больше или равна 21.Входная последовательность заканчивается на 0
чтобы программа могла остановиться, даже если общая сумма всех чисел меньше 21.
Посмотрим, как он себя ведет на разных входах.
Версия 1. Цикл завершается нормально после проверки условия, поэтому "else"
филиал выполнен.
2 4 7 0
total_sum = 0 а = int (вход ()) а! = 0: total_sum + = a если total_sum> = 21: print ('Общая сумма', total_sum) перерыв а = int (вход ()) еще: print ('Общая сумма меньше 21 и равна', total_sum, '.')
Версия 2. Цикл прерывается break
, поэтому "else"
ветка пропущена.
9 9 5 4 0
total_sum = 0 а = int (вход ()) а! = 0: total_sum + = a если total_sum> = 21: print ('Общая сумма', total_sum) перерыв а = int (вход ()) еще: print ('Общая сумма меньше 21 и равна', total_sum, '.')
Ветвь «Else» также может использоваться с циклом «for». Давайте посмотрим на пример, когда программа читает 5 целых чисел
но останавливается сразу, когда встречается первое отрицательное целое число.
Версия 1. Выход из цикла происходит нормально, поэтому выполняется ветвь "else".
3 6 2 4 5
для i в диапазоне (5): а = int (вход ()) если a <0: print ('Встретил отрицательное число', а) перерыв еще: print ('Никаких отрицательных чисел не встречалось')
Версия 2. Цикл прерван, поэтому ветвь «else» не выполняется.
3 6 -2 4 5
для i в диапазоне (5): а = int (вход ()) если a <0: print ('Встретил отрицательное число', а) перерыв еще: print ('Никаких отрицательных чисел не встречалось')
Другая инструкция, используемая для управления выполнением цикла:
продолжить
.Если интерпретатор Python встречает continue
где-то в середине итерации цикла,
он пропускает все оставшиеся инструкции и переходит к следующей итерации.
Нет
для числа в диапазоне (2, 10): если число% 2 == 0: print ("Найдено четное число", num) Продолжать print ("Нашел номер", num)
Если break
и continue
помещаются внутри нескольких вложенных
циклы, они влияют только на выполнение самого внутреннего.Давайте посмотрим на довольно глупый пример
для демонстрации:
Нет
для i в диапазоне (3): для j в диапазоне (5): если j> i: # ломает только for в строке 2 перерыв печать (я, j)
Инструкции прерваны
и продолжены
обескуражены, если вы можете реализовать свою идею, не используя их.
Вот типичный пример неправильного использования разрыва
:
этот код подсчитывает количество цифр целого числа.
567
п = целое число (вход ()) длина = 0 в то время как True: длина + = 1 п // = 10 если n == 0: перерыв print ('Длина', длина)
Переписать этот цикл с осмысленным условием цикла будет проще и легче для чтения:
567
п = целое число (вход ()) длина = 0 а n! = 0: длина + = 1 п // = 10 print ('Длина', длина)
В Python один оператор присваивания может изменять значение нескольких переменных.Посмотрим:
Эффект, продемонстрированный выше, код можно записать как:
Разница между двумя версиями заключается в том, что множественное присвоение изменяет значения двух переменных одновременно.
Множественное присвоение полезно, когда вам нужно обменять значения двух переменных. В старых языках программирования
без поддержки множественного присваивания это можно сделать с помощью вспомогательной переменной:
Нет
а = 1 b = 2 tmp = a а = б b = tmp печать (а, б) # 2 1
В Python тот же своп можно записать одной строкой:
Нет
а = 1 b = 2 а, б = б, а печать (а, б) # 2 1
В левой части знака "=" должен быть список имен переменных, разделенных запятыми.В правой части могут быть любые выражения,
разделенных запятыми. Списки в левой и правой частях должны быть одинаковой длины.
Python, а цикл
Python использует ключевые слова и
и for для создания условного цикла, с помощью которого выполняется повторное выполнение блока операторов до тех пор, пока заданное логическое выражение не станет истинным.
Ниже приводится синтаксис цикла while.
, а [логическое выражение]: заявление1 заявление2 ... заявлениеN
Ключевое слово Python while имеет условное выражение, за которым следует символ :
, чтобы начать блок с увеличенным отступом.
В этом блоке есть операторы, которые нужно выполнять повторно. Такой блок обычно называют телом цикла. Тело будет выполняться до тех пор, пока условие не станет равным True
.Если и когда окажется, что False
, программа выйдет из цикла.
В следующем примере демонстрируется цикл while.
число = 0
пока число <5:
число = число + 1
print ('число =', число)
число = 1
число = 2
число = 3
число = 4
число = 5
Здесь повторяющийся блок после оператора while включает в себя увеличение значения целочисленной переменной и ее печать.Перед началом блока переменная num инициализируется значением 0. Пока она не станет меньше 5, num увеличивается на 1 и печатается для отображения последовательности чисел, как указано выше.
Все операторы в теле цикла должны начинаться с одного и того же отступа, в противном случае возникнет ошибка IndentationError
.
число = 0
пока число <5:
число = число + 1
print ('число =', число)
печать ('число =', число)
^
IndentationError: неожиданный отступ
Выход из цикла "Пока"
Используйте ключевое слово break
для выхода из цикла while при определенных условиях.Используйте условие if, чтобы определить, когда выходить из цикла while, как показано ниже.
число = 0
пока число <5:
num + = 1 # num + = 1 совпадает с num = num + 1
print ('число =', число)
if num == 3: # условие перед выходом из цикла
перерыв
Продолжить следующую итерацию
Используйте ключевое слово continue
, чтобы начать следующую итерацию, и пропустите операторы после оператора continue
при некоторых условиях, как показано ниже.
число = 0
пока число <5:
num + = 1 # num + = 1 совпадает с num = num + 1
if num> 3: # условие перед выходом из цикла
Продолжать
print ('число =', число)
Цикл while с блоком else
Блок else
может следовать за циклом и
. Блок else будет выполняться, когда логическое выражение , а цикл
оценивается как False
.
Используйте ключевое слово continue
, чтобы начать следующую итерацию, и пропустите операторы после оператора continue
при некоторых условиях, как показано ниже.
число = 0
пока число <3:
num + = 1 # num + = 1 совпадает с num = num + 1
print ('число =', число)
еще:
print ('еще блок выполнен')
число = 1
число = 2
число = 3
блок else выполнен
Следующая программа Python последовательно принимает число в качестве ввода от пользователя и вычисляет среднее значение, пока пользователь вводит положительное число.Здесь повторяющийся блок (тело цикла) просит пользователя ввести число, складывает его кумулятивно и сохраняет счет, если он неотрицателен.
число = 0
count = 0
сумма = 0
а число> = 0:
num = int (input ('введите любое число .. -1 для выхода:'))
если число> = 0:
count = count + 1 # подсчитывает количество входов
sum = sum + num # это кумулятивное добавление входного числа.
avg = сумма / количество
print ('Всего чисел:', count, ', Среднее:', avg)
Когда пользователь вводит отрицательное число, цикл завершается и отображает среднее значение чисел, предоставленных на данный момент.Ниже приведен пример выполнения приведенного выше кода:
введите любое число .. -1 для выхода: 10
введите любое число .. -1 для выхода: 20
введите любое число .. -1 для выхода: 30
введите любое число .. -1 для выхода: -1
Всего номеров: 3, Среднее: 20,0
Python While Loops - GeeksforGeeks
В Python While Loops используется для многократного выполнения блока операторов, пока не будет выполнено заданное условие.И когда условие становится ложным, выполняется строка сразу после цикла в программе. Цикл while подпадает под категорию неопределенной итерации . Бесконечная итерация означает, что количество выполнений цикла не указывается заранее.
Синтаксис:
в то время как выражение: заявления)
Операторы представляют все операторы, с отступом на одинаковое количество символьных пробелов после того, как программная конструкция считается частью одного блока кода.Python использует отступы как метод группировки операторов. Когда выполняется цикл while, expr
сначала оценивается в логическом контексте
, и если оно истинно, выполняется тело цикла. Затем снова проверяется expr
, если оно все еще истинно, тело выполняется снова, и это продолжается до тех пор, пока выражение не станет ложным.
Пример:
|
Выход:
Привет Компьютерщик Привет Компьютерщик Привет Компьютерщик 4 3 2 1
Работа цикла While:
Одиночный оператор while блок
Как и блок if
, если блок while
состоит из одного оператора, мы можем объявить весь цикл в одной строке. Если в блоке, составляющем тело цикла, несколько операторов, их можно разделить точкой с запятой (;)
.
|
Выход:
Привет Компьютерщик Привет Компьютерщик Привет Компьютерщик Привет Компьютерщик Привет Компьютерщик
Операторы управления циклом
Операторы управления циклом изменяют выполнение нормальной последовательности.Когда выполнение покидает область действия, все автоматические объекты, созданные в этой области, уничтожаются. Python поддерживает следующие управляющие операторы.
цикл while-else
Как обсуждалось выше, цикл while выполняет блок до тех пор, пока не будет выполнено условие. Когда условие становится ложным, выполняется инструкция сразу после цикла.
Предложение else выполняется только тогда, когда ваше условие while становится ложным. Если вы выйдете из цикла или возникнет исключение, оно не будет выполнено.
Примечание: Блок else сразу после for / while выполняется только тогда, когда цикл НЕ завершается оператором break.
|
Выход:
1 2 3 4 Без остановки 1
Внимание компьютерщик! Укрепите свои основы с помощью курса Python Programming Foundation и изучите основы.