Пользователь решает прервать работу программы

We use cookies. Read the Privacy and Cookie Policy

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

parrot.py

(1) prompt = " Tell me something, and I will repeat it back to you:"

prompt += " Enter 'quit' to end the program. "

(2)message = ""

(3)while message != 'quit':

. .message = input(prompt)

. .print(message)

В точке (1) определяется сообщение, которое объясняет, что у пользователя есть два варианта: ввести сообщение или ввести признак завершения (в данном случае это строка 'quit'). Затем переменной message (2) присваивается значение, введенное пользователем. В программе переменная message инициализируется пустой строкой "", чтобы значение проверялось без ошибок при первом выполнении строки while. Когда программа только запускается и выполнение достигает команды while, значение message необходимо сравнить с 'quit', но пользователь еще не вводил ­никакие данные. Если у Python нет данных для сравнения, продолжение выполнения становится невозможным. Чтобы решить эту проблему, необходимо предоставить message исходное значение. И хотя это всего лишь пустая строка, для Python такое значение выглядит вполне осмысленно; программа сможет выполнить сравнение, на котором основана работа цикла while. Цикл while (3) выполняется, пока значение message не равно 'quit'.

При первом выполнении цикла message содержит пустую строку, и Python входит в цикл. При выполнении команды message = input(prompt) Python отображает подсказку и ожидает, пока пользователь введет данные. Эти данные сохраняются в message и выводятся командой print; после этого Python снова проверяет условие команды while. Пока пользователь не введет слово 'quit', приглашение будет выводиться снова и снова, а Python будет ожидать новых данных. При вводе слова 'quit' Python перестает выполнять цикл while, а программа завершается:

Tell me something, and I will repeat it back to you:

Enter 'quit' to end the program. Hello everyone!

Hello everyone!

Tell me something, and I will repeat it back to you:

Enter 'quit' to end the program. Hello again.

Hello again.

Tell me something, and I will repeat it back to you:

Enter 'quit' to end the program. quit

quit

Программа работает неплохо, если не считать того, что она выводит слово 'quit', словно оно является обычным сообщением. Простая проверка if решает проблему:

prompt = " Tell me something, and I will repeat it back to you:"

prompt += " Enter 'quit' to end the program. "

message = ""

while message != 'quit':

message = input(prompt)

. .

. .if message != 'quit':

print(message)

Теперь программа проводит проверку перед выводом сообщения и выводит сообщение только в том случае, если оно не совпадает с признаком завершения:

Tell me something, and I will repeat it back to you:

Enter 'quit' to end the program. Hello everyone!

Hello everyone!

Tell me something, and I will repeat it back to you:

Enter 'quit' to end the program. Hello again.

Hello again.

Tell me something, and I will repeat it back to you:

Enter 'quit' to end the program. quit