Python. Инструкции циклов
Инструкции циклов позволяют выполнить многократно одну или несколько вложенных инструкций, называемых телом цикла. В Python две инструкции циклов, первая из них цикл с условием while.
while <Условие>:
Инструкция 1
Инструкция 1 будет выполняться пока значение логического выражения в Условии истинно. При определении условия цикла надо быть внимательным, чтобы не возникло ситуации, когда выражение в условии никогда не станет ложным и соответственно, циклическое выполнение тела цикла никогда не закончится.
Для инструкций в теле цикла отступ обязателен и должен быть одинаковым для всех вложенных инструкций.
Например, пользователь вводит целые числа, пока их сумма станет не меньше 100. Затем программа выводит получившуюся сумму:
summ = 0
while summ < 100:
summ += int(input('Введите число: '))
print('Сумма: ', summ)
Обратите внимание на оператор присвавания +=, который означает, что к значению переменной слева от оператора добавляется значение с правой стороны и результат присваивается переменной слева. также существуют другие подобные операторы:
-= из значения переменной слева вычитается значение справа,
*= значение переменной увеличиватся кратно значению справа,
/= значение переменной уменьшается кратно значению справа,
**= значение переменной слева возводится в степень правого значения,
%= переменной слева присваивается остаток от целочисленного деления на значение справа,
//= переменной слева присваивается результат целочисленного деления на значение справа.
Инструкция for предназначена для выполнения тела цикла в зависимости от заданного итератора и множества его значений:
for <Итератор> in <Множество значений>:
Инструкция 1
Тело цикла будет выполнено для каждого значения итератора цикла. Множество значений итератора может быть задано несколькими способами, одним из которых является задание диапазона с помощью функции range. Очень часто требуется выполнить тело цикла определенное количество раз и в этом случае достаточно указать в аргументе функции range число повторений. Например, сложим десять целых чисел, введенных пользователеи:
summ = 0
for i in range(10):
summ += int(input('Введите число: '))
print('Сумма: ', summ)
В этой программе инструкция сложения выполнится 10 раз, при этом значение итератора i будет изменяться от 0 до 9 на каждом шаге цикла.
Если в функции указаны два аргумента, например, range (a, b), то цикл будет выполнятся для значений итератора от a до (b-1) включительно.
А если в функции указано три аргумента - range(a, b , c), то цикл будет выполняться для значений от a до (b-1) включительно с шагом c. Например, при range(1, 100, 2) цикл будет выполнен для всех нечетных значений от 1 до 99.
В функции можно задать и обратный порядок перебора значений, например при range(100, 1, - 2) цикл выполнится для значений от 100 до 2 с шагом -2.
В инструкции for в качестве множества значений можно задать список или кортеж, с которыми мы познакомимся позже. В этом случае итератор будет последовательно принимать на каждом шаге цикла значения из списка или кортежа:
print('Времена года: ')
for i in 'Зима','Весна','Лето','Осень':
print(i)
Для прерывания выполнения цикла используется оператор break, то есть, если в теле цикла встретится этот оператор, программа прервет выполнение цикла и перейдет к выполнению инструкции, следующей за циклом.
Например, программа ввода пользователем 10 чисел и подсчета их суммы, при этом, если будет введен 0, то подсчет прекращается:
summ = 0
for i in range(10):
x = int(input('Введите число: '))
if x == 0:
break
summ += x
print('Сумма: ', summ)
Отличительной особенностью Python является использование c инструкциями циклов ветви else, в которой указывается инструкция или группа инструкций, выполняемых при нормальном завершении, то есть, если цикл не был прерван оператором break.
while <Условие 1>:
Инструкция 1
if <Условие 2>:
break
else:
Интсрукция 2
В даной конструкции Инструкция 2 выполнится, если ни на одном из шагов цикла не было выполнено Условие 2. Такой конструкцией удобно пользоваться при поиске значений, например, в списках. В этом случае, в ветви else указываюся действия, которые необходимо выполнить, если значение не было найдено.
Оператор continue ипользуется в теле цикла, если необходимо пропустить дальнейшее выполнения инструкций в теле и перейти к следующему шагу цикла.
Задачи для самостоятельного решения
-
Вывести первые 16 значений степени числа 2.
-
Вывести первые 20 чисел Фибоначчи.
Примечание: Первые два числа Фибоначчи равны 1, каждое следующее равно сумме двух предыдущих. -
Пользователь вводит 10 целых чисел. Подсчитать и вывести, сколько среди них нечетных чисел.
-
Пользователь вводит 10 целых чисел. Подсчитать и вывести, сколько среди них отрицательных, положительных чисел и сколько нулей.
-
Пользователь вводит целые числа, заканчивая ввод числом 0. Подсчитать и вывести, сколько среди них нечетных чисел, но при этом не делящихся на 5.
-
Пользователь вводит целые числа, заканчивая ввод числом 0. Подсчитать и вывести разницу между наименьшим и наибольшим из введенных чисел.
-
Вывести все двузначные целые числа по 10 в каждой строке.
-
Подсчитать и вывести сумму и произведение цифр, введенного пользователем натурального числа. N < 1000000.
Примечание: Для получения цифр числа использовать только целые числа. -
Пользователь вводит натуральное число N < 1000000. Преобразовать его в другое число, цифры которого будут следовать в обратном порядке по сравнению с введенным числом.
Примечание: Для получения цифр числа и результата использовать только целые числа. -
Пользователь вводит натуральное число N < 100000 и основание системы счисления 2 ≤ q ≤ 10. Перевести и вывести число в этой системе счисления.
Примечание: Для преобразования числа и результата использовать только целые числа.