Как построить пока Loops в Python 3

Вступление

Компьютерные программы отлично подходят для автоматизации и повторения задач, поэтому нам не нужно этого делать. Один из способов повторить аналогичные задачи - использоватьloops. В этом руководстве мы рассмотрим Pythonwhile loop.

Циклwhile реализует повторное выполнение кода на основе заданного условияBoolean. Код, который находится в блокеwhile, будет выполняться до тех пор, пока операторwhile оценивается как True.

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

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

Пока петля

В Python циклыwhile построены так:

while [a condition is True]:
    [do something]

То, что делается, будет выполняться до тех пор, пока оцениваемое условие больше не будет истинным.

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

  • Если парольis правильный, циклwhile завершится.

  • Если парольnot правильный, циклwhile продолжит выполнение.

Мы создадим файл с именемpassword.py в выбранном текстовом редакторе и начнем с инициализации переменнойpassword как пустогоstring:

password.py

password = ''

Пустая строка будет использоваться для ввода от пользователя в циклеwhile.

Теперь мы построим операторwhile вместе с его условием:

password.py

password = ''

while password != 'password':

Здесь заwhile следует переменнаяpassword. Мы ищем, установлена ​​ли для переменнойpassword строкаpassword (в зависимости от ввода пользователя позже), но вы можете выбрать любую строку, которую хотите.

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

Затем мы добавим блок кода, который что-то делает в циклеwhile:

password.py

password = ''

while password != 'password':
    print('What is the password?')
    password = input()

Внутри циклаwhile программа запускает оператор печати, который запрашивает пароль. Затем переменнаяpassword устанавливается на ввод пользователя с помощью функцииinput().

Программа проверит, присвоена ли переменнаяpassword строкеpassword, и если это так, циклwhile завершится. Давайте дадим программе еще одну строчку кода, когда это произойдет:

password.py

password = ''

while password != 'password':
    print('What is the password?')
    password = input()

print('Yes, the password is ' + password + '. You may enter.')

Последний операторprint() находится вне циклаwhile, поэтому, когда пользователь вводитpassword в качестве пароля, он увидит последний оператор печати вне цикла.

Однако, если пользователь никогда не вводит словоpassword, он никогда не доберется до последнего оператораprint() и застрянет в бесконечном цикле.

infinite loop возникает, когда программа продолжает выполняться в одном цикле, никогда не покидая его. Чтобы выйти из бесконечного цикла в командной строке, нажмитеCTRL + C.

Сохраните программу и запустите ее:

python password.py

Вам будет предложено ввести пароль, а затем вы можете проверить его с различными возможными вводами. Вот пример вывода из программы:

OutputWhat is the password?
hello
What is the password?
sammy
What is the password?
PASSWORD
What is the password?
password
Yes, the password is password. You may enter.

Имейте в виду, что строки чувствительны к регистру, если вы также не используетеstring function для преобразования строки во все строчные буквы (например) перед проверкой.

Пример программы с циклом while

Теперь, когда мы понимаем общую предпосылку циклаwhile, давайте создадим игру в угадывание командной строки, которая эффективно использует циклwhile. Чтобы лучше понять, как работает эта программа, вам также следует прочитать оusing conditional statements иconverting data types.

Сначала мы создадим файл с именемguess.py в выбранном текстовом редакторе. Мы хотим, чтобы компьютер выдавал случайные числа, чтобы пользователь мог их угадать, поэтому мы добавимimport к модулюrandom с операторомimport. Если вы не знакомы с этим пакетом, вы можете узнать больше оgenerating random numbers from the Python docs.

guess.py

import random

Затем мы присвоим случайное целое число переменнойnumber и оставим его в диапазоне от 1 до 25 (включительно) в надежде, что это не сделает игру слишком сложной.

guess.py

import random

number = random.randint(1, 25)

На этом этапе мы можем войти в наш циклwhile, сначала инициализируя переменную, а затем создавая цикл.

guess.py

import random

number = random.randint(1, 25)

number_of_guesses = 0

while number_of_guesses < 5:
    print('Guess a number between 1 and 25:')

    guess = input()
    guess = int(guess)

    number_of_guesses = number_of_guesses + 1

    if guess == number:
        break

Мы инициализировали переменнуюnumber_of_guesses равной 0, так что мы увеличиваем ее с каждой итерацией нашего цикла, чтобы у нас не было бесконечного цикла. Затем мы добавили операторwhile, чтобы числоnumber_of_guesses было ограничено 5. После пятого предположения пользователь вернется в командную строку, и на данный момент, если пользователь введет что-то кроме целого числа, он получит ошибку.

Внутри цикла мы добавили операторprint(), предлагающий пользователю ввести число, которое мы взяли с функциейinput() и установили в переменнуюguess. Затем мы преобразовалиguess из строки в целое число.

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

Наконец, мы пишем условный операторif, чтобы увидеть, эквивалентен лиguess, созданный пользователем,number, сгенерированный компьютером, и если да, мы используемbreak statement выйти из петли.

Программа полностью функционирует, и мы можем запустить ее с помощью следующей команды:

python guess.py

Хотя это работает, сейчас пользователь никогда не знает, верна ли его догадка, и он может угадать полные 5 раз, даже не зная, правильно ли они это сделали. Пример вывода текущей программы выглядит следующим образом:

OutputGuess a number between 1 and 25:
11
Guess a number between 1 and 25:
19
Guess a number between 1 and 25:
22
Guess a number between 1 and 25:
3
Guess a number between 1 and 25:
8

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

guess.py

import random

number = random.randint(1, 25)

number_of_guesses = 0

while number_of_guesses < 5:
    print('Guess a number between 1 and 25:')
    guess = input()
    guess = int(guess)

    number_of_guesses = number_of_guesses + 1

    if guess == number:
        break

if guess == number:
    print('You guessed the number in ' + str(number_of_guesses) + ' tries!')

else:
    print('You did not guess the number. The number was ' + str(number))

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

Чтобы помочь пользователю в процессе, давайте добавим еще несколько условных операторов в циклwhile. Они могут сказать пользователю, было ли их число слишком низким или слишком высоким, так что они могут с большей вероятностью угадать правильное число. Мы добавим их перед строкойif guess == number

guess.py

import random

number = random.randint(1, 25)

number_of_guesses = 0

while number_of_guesses < 5:
    print('Guess a number between 1 and 25:')
    guess = input()
    guess = int(guess)

    number_of_guesses = number_of_guesses + 1

    if guess < number:
        print('Your guess is too low')

    if guess > number:
        print('Your guess is too high')

    if guess == number:
        break

if guess == number:
    print('You guessed the number in ' + str(number_of_guesses) + ' tries!')

else:
    print('You did not guess the number. The number was ' + str(number))

Когда мы снова запускаем программу сpython guess.py, мы видим, что пользователь получает более управляемую помощь в своих предположениях. Таким образом, если случайно сгенерированное число равно12 и пользователь угадывает18, ему сообщат, что его предположение слишком велико, и они могут соответствующим образом скорректировать свое следующее предположение.

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

Заключение

В этом руководстве было рассмотрено, как циклыwhile работают в Python и как их создавать. While loops продолжает цикл через блок кода при условии, что условие, установленное в оператореwhile, истинно.

Отсюда вы можете продолжить изучение циклов, прочитав руководства поfor loops иbreak, continue, and pass statements.