Задачи

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 ипользуется в теле цикла, если необходимо пропустить дальнейшее выполнения инструкций в теле и перейти к следующему шагу цикла.

 

Задачи для самостоятельного решения