Logo
Книга для начинающих
ВходРегистрация
/
Программирование
/
Курс Python
/

Цикл While

Python: Цикл While

Помимо условных конструкций, в программировании невозможно обойтись без циклов. Это специальный механизм позволяющий выполнять любое действие многократно. На его базе строятся практически любые вычисления от подсчета среднего балла в группе, до обработки входящих запросов на сайтах.

Цикл while

Цикл хранит повторяющееся действие в одном месте и запускает его снова, пока условие остается истинным.

Первый пример

Пусть программа должна пять раз вывести строку "Hello!". Чтобы остановить повторение в нужный момент, программе нужна переменная, которая хранит номер текущего шага. Такую переменную обычно называют счетчиком.

В примере счетчик называется counter. Перед циклом он равен 0. После каждого вывода строки мы увеличиваем его на единицу.

counter = 0
while counter < 5:
    print("Hello!")
    counter = counter + 1

# => Hello!
# => Hello!
# => Hello!
# => Hello!
# => Hello!

Теперь цикл может проверять значение счетчика перед каждым повтором. Пока counter < 5, выполняется код с отступом под строкой while. Такой блок называют телом цикла.

После выполнения тела интерпретатор возвращается к условию и проверяет его заново. Пока условие истинно, цикл продолжается. Когда условие становится ложным (False), программа выходит из цикла и выполняет следующий код.

Без изменения счетчика условие никогда не станет ложным, и цикл превратится в бесконечный. Со стороны это выглядит так, как будто программа зависла.

Работа цикла по шагам

Перед первым повтором counter равен 0.

Шаг 1. Интерпретатор проверяет counter < 5. Значение 0 меньше 5, поэтому выполняется тело цикла. На экран выводится Hello!, а counter увеличивается до 1.

Шаг 2. Интерпретатор снова проверяет условие. Значение 1 все еще меньше 5, поэтому тело цикла выполняется еще раз. На экран снова выводится Hello!, а counter увеличивается до 2.

Так продолжается, пока counter не станет равен 5. При следующей проверке условие counter < 5 будет ложным, поэтому цикл завершится. Дальше программа выполнит код после цикла.

Та же последовательность на схеме.

counter = 0
┌──→ counter < 5?
│     True │
│          ↓
│    print("Hello!")
│    counter = counter + 1
└──────────┘
      False → выход из цикла

После завершения цикла counter равен 5, а строка Hello! напечатана пять раз.

Отступы и продолжение программы

К телу цикла относятся все строки с одинаковым отступом под while. Когда отступ заканчивается, заканчивается и цикл.

counter = 0
while counter < 2:
    print("Hello!")
    counter = counter + 1

print("End of loop")

В этом примере print("Hello!") и counter = counter + 1 находятся внутри цикла. Строка print("End of loop") стоит без отступа, поэтому выполнится один раз после завершения цикла.

По отступам Python понимает, какие строки нужно повторять, а какие идут дальше по программе.

Цикл внутри функции

Теперь перенесем цикл в функцию. Она напечатает числа от 1 до переданного значения.

def print_numbers(n: int) -> None:
    i = 1
    while i <= n:
        print(i)
        i = i + 1
    print("Finished!")

print_numbers(3)
# => 1
# => 2
# => 3
# => Finished!

Цикл while печатает числа, пока i не станет больше n. После этого программа выходит из цикла и выполняет print("Finished!").

Условие и изменение счетчика зависят от задачи. Счетчик можно увеличивать на 1, на 2 или сразу на 10. Его можно уменьшать, если цикл идет от большего значения к меньшему. Можно менять счетчик не на каждом повторе, а через один или после выполнения дополнительной проверки. Главное, чтобы условие когда-нибудь стало ложным. Иначе цикл будет работать бесконечно.

Задание

Напишите функцию print_countdown(), которая имитирует обратный отсчет перед стартом. Функция принимает количество секунд и печатает числа от этого значения до 1.

После завершения отсчета функция должна вывести на экран строку Go!.

print_countdown(4)
# => 4
# => 3
# => 2
# => 1
# => Go!
Коммерческий опыт и Трудоустройство

Полезное

  • Цикл while

Команда проекта находится в телеграм-сообществе. Там можно задать любой вопрос и повлиять на проект

Нашли ошибку? Есть что добавить? Пулреквесты приветствуются
/
Программирование
/
Курс Python
/

Цикл While

Python: Цикл While

Помимо условных конструкций, в программировании невозможно обойтись без циклов. Это специальный механизм позволяющий выполнять любое действие многократно. На его базе строятся практически любые вычисления от подсчета среднего балла в группе, до обработки входящих запросов на сайтах.

Цикл while

Цикл хранит повторяющееся действие в одном месте и запускает его снова, пока условие остается истинным.

Первый пример

Пусть программа должна пять раз вывести строку "Hello!". Чтобы остановить повторение в нужный момент, программе нужна переменная, которая хранит номер текущего шага. Такую переменную обычно называют счетчиком.

В примере счетчик называется counter. Перед циклом он равен 0. После каждого вывода строки мы увеличиваем его на единицу.

counter = 0
while counter < 5:
    print("Hello!")
    counter = counter + 1

# => Hello!
# => Hello!
# => Hello!
# => Hello!
# => Hello!

Теперь цикл может проверять значение счетчика перед каждым повтором. Пока counter < 5, выполняется код с отступом под строкой while. Такой блок называют телом цикла.

После выполнения тела интерпретатор возвращается к условию и проверяет его заново. Пока условие истинно, цикл продолжается. Когда условие становится ложным (False), программа выходит из цикла и выполняет следующий код.

Без изменения счетчика условие никогда не станет ложным, и цикл превратится в бесконечный. Со стороны это выглядит так, как будто программа зависла.

Работа цикла по шагам

Перед первым повтором counter равен 0.

Шаг 1. Интерпретатор проверяет counter < 5. Значение 0 меньше 5, поэтому выполняется тело цикла. На экран выводится Hello!, а counter увеличивается до 1.

Шаг 2. Интерпретатор снова проверяет условие. Значение 1 все еще меньше 5, поэтому тело цикла выполняется еще раз. На экран снова выводится Hello!, а counter увеличивается до 2.

Так продолжается, пока counter не станет равен 5. При следующей проверке условие counter < 5 будет ложным, поэтому цикл завершится. Дальше программа выполнит код после цикла.

Та же последовательность на схеме.

counter = 0
┌──→ counter < 5?
│     True │
│          ↓
│    print("Hello!")
│    counter = counter + 1
└──────────┘
      False → выход из цикла

После завершения цикла counter равен 5, а строка Hello! напечатана пять раз.

Отступы и продолжение программы

К телу цикла относятся все строки с одинаковым отступом под while. Когда отступ заканчивается, заканчивается и цикл.

counter = 0
while counter < 2:
    print("Hello!")
    counter = counter + 1

print("End of loop")

В этом примере print("Hello!") и counter = counter + 1 находятся внутри цикла. Строка print("End of loop") стоит без отступа, поэтому выполнится один раз после завершения цикла.

По отступам Python понимает, какие строки нужно повторять, а какие идут дальше по программе.

Цикл внутри функции

Теперь перенесем цикл в функцию. Она напечатает числа от 1 до переданного значения.

def print_numbers(n: int) -> None:
    i = 1
    while i <= n:
        print(i)
        i = i + 1
    print("Finished!")

print_numbers(3)
# => 1
# => 2
# => 3
# => Finished!

Цикл while печатает числа, пока i не станет больше n. После этого программа выходит из цикла и выполняет print("Finished!").

Условие и изменение счетчика зависят от задачи. Счетчик можно увеличивать на 1, на 2 или сразу на 10. Его можно уменьшать, если цикл идет от большего значения к меньшему. Можно менять счетчик не на каждом повторе, а через один или после выполнения дополнительной проверки. Главное, чтобы условие когда-нибудь стало ложным. Иначе цикл будет работать бесконечно.

Задание

Напишите функцию print_countdown(), которая имитирует обратный отсчет перед стартом. Функция принимает количество секунд и печатает числа от этого значения до 1.

После завершения отсчета функция должна вывести на экран строку Go!.

print_countdown(4)
# => 4
# => 3
# => 2
# => 1
# => Go!
Коммерческий опыт и Трудоустройство

Полезное

  • Цикл while

Команда проекта находится в телеграм-сообществе. Там можно задать любой вопрос и повлиять на проект

Нашли ошибку? Есть что добавить? Пулреквесты приветствуются
← ПредыдущийСледующий →
← ПредыдущийСледующий →
← ПредыдущийСледующий →

Ваше упражнение проверяется по этим тестам

import solution


def test1(capsys):
    solution.print_countdown(2)
    out, _ = capsys.readouterr()

    with capsys.disabled():
        print('\n')
        print(out)

    assert out.strip('\n') == "2\n1\nGo!"


def test2(capsys):
    solution.print_countdown(4)
    out, _ = capsys.readouterr()

    with capsys.disabled():
        print('\n')
        print(out)

    assert out.strip('\n') == "4\n3\n2\n1\nGo!"
← ПредыдущийСледующий →

Решение учителя откроется через:

20:00

waiting_clock
← ПредыдущийСледующий →