Учебник по Python: циклы

  1. Общая структура петли
  2. Простой пример с циклом while
  3. Использование цикла while для чтения стандартного ввода
  4. Остальная часть
  5. Преждевременное завершение цикла

Предыдущая глава: Условные заявления
Следующая глава: Для петель

Общая структура петли

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

  • Петли с контролем количества
    Конструкция для повторения цикла определенное количество раз. Примером такого цикла является цикл for языка программирования C:
    для (я = 0; я
    Python не знает такой петли.
  • Состояние контролируемой петли
    Цикл будет повторяться до тех пор, пока не изменится заданное условие, т.е. изменится с True на False или с False на True, в зависимости от типа цикла. Есть циклы while и циклы do с таким поведением.
  • Контролируемый цикл
    Это специальная конструкция, которая позволяет циклически проходить по элементам «коллекции», которые могут быть массивом, списком или другой упорядоченной последовательностью. Как и цикл for оболочки bash (например, для i in *, do echo $ i; done) или цикл foreach в Perl.

Python предоставляет два различных типа циклов: цикл while и цикл for, которые соответствуют циклу с управлением условиями и циклу с управлением коллекциями.
Большинство циклов содержат счетчик или более общие переменные, которые меняют свои значения в ходе расчета. Эти переменные должны быть инициализированы до запуска цикла. Счетчик или другие переменные, которые могут быть изменены в теле цикла, содержатся в условии. Перед выполнением тела цикла условие оценивается. Если значение равно False, цикл while завершен. Это означает, что выполнение программы продолжится с первого оператора после оператора while, то есть на том же уровне отступа, что и цикл while. Если условие оценивается как True, тело, - блок с отступом ниже строки с «while» - выполняется. После того, как тело закончено, условие будет оценено снова. Тело цикла будет выполняться до тех пор, пока условие выдает True.

Простой пример с циклом while

Лучше всего проиллюстрировать принцип работы цикла на простом примере Python. Следующий небольшой скрипт вычисляет сумму чисел от 1 до 100. Позже мы представим более элегантный способ сделать это.

#! / usr / bin / env python3 n = 100 s = 0 counter = 1, а counter

Использование цикла while для чтения стандартного ввода

Прежде чем мы продолжим цикл while, мы хотим представить некоторые фундаментальные вещи о стандартном вводе и стандартном выводе. Обычно клавиатура служит стандартным входом. Стандартным выводом обычно является терминал или консоль, где был запущен скрипт, который печатает вывод. Сценарий должен отправлять свои сообщения об ошибках на стандартную ошибку.
Python также имеет эти три канала:

  • стандартный ввод
  • стандартный вывод
  • стандартная ошибка

Они содержатся в модуле sys. Их зовут:

  • sys.stdin
  • sys.stdout
  • sys.stderror

,

Следующий скрипт показывает, как читать с циклом while символ за символом со стандартного ввода (клавиатура).

import sys text = "" while 1: c = sys.stdin.read (1) text = text + c if c == '\ n': break print ("Input:% s"% text) Хотя можно прочитать Например, обычно используется функция input (). >>> name = input ("Как тебя зовут? \ n") Как тебя зовут? Смокинг >>> печать (имя) смокинг >>>

Остальная часть

Как и в операторе if, цикл while в Python также имеет необязательную часть else Как и в операторе if, цикл while в Python также имеет необязательную часть else. Это незнакомая конструкция для многих программистов традиционных языков программирования.
Операторы в части else выполняются, когда условие больше не выполняется. Некоторые могут спросить себя сейчас, где возможная выгода от этой дополнительной ветви. Если бы операторы дополнительной части else были размещены сразу после цикла while без else, они все равно были бы выполнены, не так ли. Нам нужно понять новую языковую конструкцию, то есть оператор break, чтобы получить выгоду от дополнительной ветви else цикла while.
Общий синтаксис цикла while выглядит следующим образом:

условие условия: оператор_1 ... оператор_н еще: оператор_1 ... оператор_n

Преждевременное завершение цикла

Пока цикл while завершается только в том случае, если выполняется условие в заголовке цикла Пока цикл while завершается только в том случае, если выполняется условие в заголовке цикла. С помощью оператора break цикл while может быть преждевременно оставлен, т. Е. Как только поток управления программы прерывается внутри цикла while (или других циклов), цикл будет немедленно оставлен. "break" не следует путать с оператором continue. «continue» останавливает текущую итерацию цикла и запускает следующую итерацию, проверяя условие.
Теперь наступает решающий момент: если цикл оставлен разрывом, остальная часть не выполняется.
Это поведение будет проиллюстрировано в следующем примере, немного угадывая число игры. Игрок-человек должен угадать число в диапазоне от 1 до n. Игрок вводит свое предположение. Программа информирует игрока, если это число больше, меньше или равно секретному номеру, то есть номеру, который программа создала случайным образом. Если игрок хочет сдаться, он или она может ввести 0 или отрицательное число.
Подсказка: программе необходимо создать случайное число. Поэтому необходимо включить модуль «Случайный».

импортировать случайное число n = 20 to_be_guessed = int (n * random.random ()) + 1 предположение = 0 во время догадки! = to_be_guessed: угадать = int (вход («Новое число:»)) если угадать> 0: если угадать> to_be_guessed : print ("Слишком большое число") elif догадка
Вывод игрового сеанса может выглядеть следующим образом: $ python3 number_game.py Новое число: 12 Число слишком мало Новое число: 15 Число слишком мало Новое число: 18 Число слишком велико Новое число: 17 Поздравляем. Ты сделал это! $ Предыдущая глава: Условные заявления
Следующая глава: Для петель

Gt;>> name = input ("Как тебя зовут? \ n") Как тебя зовут?