Уроки технологии
Технология Toggle Dark/Light/Auto mode Toggle Dark/Light/Auto mode Toggle Dark/Light/Auto mode Back to homepage

Циклы while и for

В Python можно использовать циклы while для выполнения одной и той же задачи несколько раз, а циклы for — один раз над данными списка. В этом модуле вы узнаете о двух типах циклов и о том, когда их применять. Цели обучения

После изучения этого модуля вы сможете сделать следующее.

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

Сценарий: работа с управлением потоком в приложении о планетах

Представьте, что создаете приложение, в котором пользователи вводят список названий планет. После того, как пользователи вводят названия, приложение будет отображать результаты. Для этого приложение несколько раз запросить ввести значение, а затем код выведет все данные из списка. В этом модуле мы рассмотрим, как можно использовать циклы while и for для создания этого приложения.

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

Цикл while

При написании кода у вас часто возникает необходимость создать задачу, которая будет выполняться неизвестное количество раз. В этом уроке вы хотите разрешить пользователю вводить список названий планет. К сожалению, вы не знаете, сколько названий введет пользователь. Для поддержки повторения цикла неизвестное число раз можно использовать цикл while.

Цикл while выполняет операцию, пока определенное условие истинно. Например, нужно посмотреть, есть ли в файле другая строка, установлен ли флаг, завершил ли пользователь ввод значений или изменилось ли что-то еще, чтобы код мог завершить операцию.

Важно!

Самое важное, что следует помнить при создании циклов while, — нужно обеспечить изменение условия. Если условие всегда истинно, Python продолжит выполнение кода до аварийного завершения программы.

Синтаксис цикла while похож на оператор if. Вы предоставляете условие и код, которые должны выполняться, пока условие истинно.

Цикл while состоит из трех важных частей:

Слово while, за которым следует пробел.

Проверяемое условие. Если условие истинно, выполняется код внутри цикла while.

Код, который требуется выполнить для каждого элемента в итеративном списке, за которым следует вложенный пробел. Пример:
while condition:
    # code here

Давайте посмотрим, как можно создать код, предлагающий пользователям вводить значения, а затем позволяющий ввести done. В нашем примере используйте данные, введенные пользователем, в качестве условия, а затем проверяйте их в верхней части цикла while.

user_input = ''

while user_input.lower() != 'done':
    user_input = input('Enter a new value, or done when done')

Обратите внимание, что вы используете input для запроса пользователей. Каждый раз, когда пользователь вводит новое значение, оно изменяет условие, то есть цикл while будет завершен после ввода команды done. В нашем примере мы использовали lower для преобразования входных данных в нижний регистр, что позволяет выполнять сравнение без учета регистра.

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

# Create the variable for user input
user_input = ''
# Create the list to store the values
inputs = []

# The while loop
while user_input.lower() != 'done':
    # Check if there's a value in user_input
    if user_input:
        # Store the value in the list
        inputs.append(user_input)
    # Prompt for a new value
    user_input = input('Enter a new value, or done when done')

Обратите внимание на оператор if внутри цикла while. Этот оператор проверяет строковое значение внутри user_input. Если цикл while выполняется в первый раз, значение отсутствует, поэтому вам нечего сохранить в inputs. После первого запуска user_input всегда сохраняет значение, только что введенное пользователем. Поскольку while выполняет проверку, чтобы убедиться, что значение не равно done (слово, которое пользователь вводит для выхода из приложения), известно, что текущее значение можно добавить в список.

Возможно, вы знакомы с другими языками программирования, поддерживающими цикл do, который позволяет выполнить проверку в нижней части цикла. В Python нет цикла do.

Цикл for

В Python есть много типов, доступных для циклического перебора. Эти типы называются итерируемыми объектами.

Списки Python являются итерируемыми, и их можно использовать с циклом for. Цикл for можно использовать с итерируемыми объектами, и циклический перебор будет происходит известное число раз, по одному для каждого элемента в итерируемом объекте.

Ниже приведен пример цикла for, который считает от 4 до 0:

countdown = [4, 3, 2, 1, 0]
for number in countdown:
    print(number)
print("Blast off!! 🚀")

Цикл for — это оператор с пятью важными компонентами:

Слово for, за которым следует пробел.
Имя переменной, которую необходимо создать для каждого значения в последовательности (number).
Слово in, заключенное в пробелы.
Имя списка (countdown в предыдущем примере) или итерируемый объект, для которого требуется циклический перебор, за которым следует двоеточие (:).
Код, который требуется выполнить для каждого элемента в итеративном списке, разделенный вложенным пробелом.