Циклы for и while. Цикл for
Скачать 0.54 Mb.
|
Блок else в циклахPython допускает необязательный блок else в конце циклов while и for. Это уникальная особенность Python, не встречающаяся в большинстве других языков программирования. Синтаксис такой конструкции следующий: while условие: блок кода1 else: блок кода2 # или for i in range(10): блок кода1 else: блок кода2 Блок кода2, указанный в else, будет выполнен, когда штатным образом завершается цикл while или for. Сейчас вы можете подумать: «Как это может быть полезным?» Ведь мы можем сделать то же самое, поместив блок кода2 сразу после цикла while или for без else: while условие: блок кода1 блок кода2 # или for i in range(10): блок кода1 блок кода2 В чем разница? Если слово else отсутствует в описании цикла, то блок кода2 будет выполняться после завершения цикла, несмотря ни на что. Если же слово else присутствует, то блок кода2 будет выполняться только в том случае, если цикл завершается штатным образом. Под штатным завершением цикла, подразумевается его завершение без использования оператора прерывания break. Рассмотрим следующий программный код: n = 5 while n > 0: n -= 1 print(n) else: print('Цикл завершен.') Данный цикл повторяется до тех пор, пока истинно условие n > 0. Поскольку цикл завершился штатным образом,то блок кода в инструкции else будет выполнен. Таким образом, результатом выполнения такой программы будут строки: 4 3 2 1 0 Цикл завершен. Рассмотрим следующий программный код: n = 5 while n > 0: n -= 1 print(n) if n == 2: break else: print('Цикл завершен.') Этот цикл преждевременно завершается с помощью оператора прерывания break, поэтому блок кода в инструкции else не будет выполнен. Результатом выполнения такой программы будут строки: 4 3 2 Вам может показаться, что инструкция else в циклах while и for не совсем соответствует тому, что реально происходит. Гвидо ван Россум, создатель Python, сказал, что если бы он проектировал язык Python заново, то избавился бы от else в циклах. Напишем, программу, которая определяет, содержит ли введенное пользователем число, цифру 7. Вместо программного кода, написанного ранее: num = int(input()) n = num flag = False while n != 0: last = n % 10 if last == 7: flag = True break # прерываем цикл, так как число гарантированно содержит цифру 7 n //= 10 if flag is True: print('Число', num, 'содержит цифру 7') else: print('Число', num, 'не содержит цифру 7') мы можем использовать: num = int(input()) n = num while n != 0: last = n % 10 if last == 7: print('Число', num, 'содержит цифру 7') break n //= 10 else: print('Число', num, 'не содержит цифру 7') |