Цикл while
Цикл while (“пока”) позволяет выполнить одну и ту же последовательность действий, пока проверяемое условие истинно. Условие записывается до тела цикла и проверяется до выполнения тела цикла. Как правило, цикл while используется, когда невозможно определить точное значение количества проходов исполнения цикла.
Синтаксис цикла while в простейшем случае выглядит так:
while условие:
блок инструкций
При выполнении цикла while сначала проверяется условие. Если оно ложно, то выполнение цикла прекращается и управление передается на следующую инструкцию после тела цикла while. Если условие истинно, то выполняется инструкция, после чего условие проверяется снова и снова выполняется инструкция. Так продолжается до тех пор, пока условие будет истинно. Как только условие станет ложно, работа цикла завершится и управление передастся следующей инструкции после цикла.
Например, следующий фрагмент программы напечатает на экран квадраты всех целых чисел от 1 до 10. Видно, что цикл while может заменять цикл for ... in range(...):
i = 1 while i <= 10: print(i ** 2) i += 1 |
программа выводит на экран квадраты всех целых чисел от 1 до 10. |
*щелкните по изображению для просмотра в полном размере
После тела цикла можно написать слово else: и после него блок операций, который будет выполнен один раз после окончания цикла, когда проверяемое условие станет неверно:
i = 1 while i <= 10: print(i ** 2) i += 1 else: print('цикл окончен') |
Казалось бы, никакого смысла в этом нет, ведь эту же инструкцию можно просто написать после окончания цикла. Смысл появляется только вместе с инструкцией break. Если во время выполнения Питон встречает инструкцию break внутри цикла, то он сразу же прекращает выполнение этого цикла и выходит из него. При этом ветка else исполняться не будет. Разумеется, инструкцию break осмыленно вызывать только внутри инструкции if, то есть она должна выполняться только при выполнении какого-то особенного условия.
Приведем пример программы, которая считывает числа до тех пор, пока не встретит четное число. При появлении четного числа программа завершается.
a = int(input()) while a != 0: if a/2==int(a/2): print('Встретилось четное число', a) break a = int(input()) else: print('Ни одного четного числа не встретилось') |
Во втором варианте программы сначала на вход подается количество элементов последовательности, а затем и сами элементы. В таком случае удобно воспользоваться циклом for. Цикл for также может иметь ветку else и содержать инструкции break внутри себя.
n = int(input()) for i in range(n): a = int(input()) if a/2==int(a/2): print('Встретилось четное число', a) break else: print('Ни одного четного числа не встретилось') |
Другая инструкция управления циклом — continue (продолжение цикла). Если эта инструкция встречается где-то посередине цикла, то пропускаются все оставшиеся инструкции до конца цикла, и исполнение цикла продолжается со следующей итерации.
Задачи
- Найти сумму чисел от 1 до 100.
- Найти сумму первых n нечетных чисел.
- Найти сумму первых n чисел.
- Вывести на экран квадраты нечетных чисел от 5 до 25.
- Найти произведение чисел от 1 до 10.
- Написать программу вычисления факториала числа.Факториалом числа n называется произведение 1 × 2 × ... × n. Обозначение: n!
- Даны два целых числа A и В. Выведите все числа от A до B включительно, в порядке возрастания, если A < B, или в порядке убывания в противном случае.
- Дано несколько чисел. Вычислите их сумму. Сначала вводите количество чисел N, затем вводится ровно N целых чисел.
- **По данному натуральном n вычислите сумму 13+23+33+...+n3
- **По данному натуральному n ≤ 9 выведите лесенку из n ступенек, i-я ступенька состоит из чисел от 1 до i без пробелов.