Зацикливание кода с помощью while
Вы согласны с изложенным ниже утверждением?
пока есть, что делать
сделай это
Обратите внимание, что эта запись также заявляет, что если нечего делать, вообще ничего не произойдет.
В общем, в Python цикл можно представить следующим образом:
while условное_выражение:
инструкция
Если вы заметили некоторое сходство с инструкцией if, все в порядке. Действительно, синтаксическая разница только одна: вы используете слово while
вместо слова if
.
Семантическая разница более важна: когда условие выполняется, if выполняет свои инструкции только один раз; while повторяет выполнение, пока условие равняется True
.
Примечание: здесь также применимы все правила, касающиеся отступов. Скоро мы вам это покажем.
Посмотрите на алгоритм ниже:
while conditional_expression:
instruction_one
instruction_two
instruction_three
:
:
instruction_n
Теперь важно помнить, что:
- если вы хотите выполнить более одного выражения внутри одного цикла
while
, вы должны (как и в случае сif
) делать одинаковый отступ для всех инструкций; - инструкция или набор инструкций, выполняемый внутри цикла
while
, называется телом цикла; - если условие равняется
False
(равно нулю) уже при первом тестировании, тело не выполняется ни разу (обратите внимание на аналогию с отсутствием необходимости делать что-либо, если делать нечего); - тело должно иметь возможность изменять значение условия, потому что если условие
True
в начале, тело может работать непрерывно до бесконечности - обратите внимание, что выполнение какой-либо вещи обычно уменьшает количество действий, которые нужно сделать).
Вечный цикл
Вечный цикл, также называемый бесконечным циклом, представляет собой последовательность инструкций в программе, которые повторяются вечно (зацикливаются бесконечно).
Вот пример цикла, который не может завершить свое выполнение:
while True:
print("I'm stuck inside a loop.")
Этот цикл будет бесконечно печатать "Я застрял внутри цикла"
на экране.
ПРИМЕЧАНИЕ
Если вы хотите получить лучший опыт обучения, наблюдая, как ведет себя бесконечный цикл, запустите IDLE, создайте новый файл, скопируйте и вставьте приведенный выше код, сохраните файл и запустите программу. Вы увидите бесконечную последовательность строк "Я застрял внутри цикла"
, выводимых в окно консоли Python. Чтобы завершить работу вашей программы, просто нажмите Ctrl-C (или Ctrl-Break на некоторых компьютерах). Это вызовет исключение KeyboardInterrupt
и позволит вашей программе выйти из цикла. Мы поговорим об этом позже в курсе.
Вернемся к наброску алгоритма, который мы вам недавно показали. Мы собираемся показать вам, как использовать этот недавно изученный цикл, чтобы найти наибольшее число из большого набора введенных данных.
Внимательно проанализируйте программу. Посмотрите, где начинается цикл (строка 8). Найдите тело цикла и узнайте, как он завершается:
# Store the current largest number here.
largest_number = -999999999
# Input the first value.
number = int(input("Enter a number or type -1 to stop: "))
# If the number is not equal to -1, continue.
while number != -1:
# Is number larger than largest_number?
if number > largest_number:
# Yes, update largest_number.
largest_number = number
# Input the next number.
number = int(input("Enter a number or type -1 to stop: "))
# Print the largest number.
print("The largest number is:", largest_number)
Проверьте, как этот код реализует алгоритм, который мы показали вам ранее.