Как завершить программу (с функцией), не убивая ее? - PullRequest
0 голосов
/ 10 октября 2019

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

if (answer == "no"):
    print("okay, goodbye")
    exit()
elif (answer == "yes"):
    print("great! let's continue talking")

question2 = input("What is your favorite food? ")

По сути, я хочу, чтобы prorgam останавливался / заканчивался без фактического всплывающего сообщения, говорящего мне о закрытии вкладки;как будто я просто хочу, чтобы это прекратилось, как будто я напечатал одно заявление. В любом случае я хочу, чтобы программа остановилась, когда пользователь выбирает «нет», потому что вопрос2 ставится там, если пользователь выбирает «да», но вопрос2 по-прежнему отображается после выбора «нет» и отсутствия выхода (). Для лучшего примера того, что я пытаюсь исправить, я попытался:

import time

if (answer == "no"):
    print("okay, goodbye")
    time.sleep(99999.9)

elif (answer == "yes"):
    print("great! let's continue talking")

question2 = input("What is your favorite food? ")

Но я нахожу этот способ глупым и неправильным. Какая функция похожа на exit (), так что она полностью останавливает программу, не открывая после этого вкладку, которая говорит мне закрыть вкладку?

Конечно, «ответ» не определен, потому что я специально не сделалдобавьте это, поскольку у меня нет проблем с этим вопросом.

1 Ответ

1 голос
/ 10 октября 2019

Правильный способ выхода из программы на Python, кроме достижения конца кода, - с помощью raise SystemExit('message') или import sys; sys.exit('message'). Сообщение не является обязательным. Там не будет всплывающее окно. Поскольку IDLE является средой обучения и разработки, сама IDLE не будет закрываться.

Функции quit() и exit() не являются обычными встроенными функциями. Там добавлены - возможно - модуль сайта. Они предназначены только для интерактивного использования по запросу «>>>». В обычном интерактивном питоне эффект состоит в безоговорочном выходе из питона. В IDLE пользователя спрашивают, действительно ли они хотят уничтожить окно оболочки. Поскольку IDLE нацелен на начинающих, он старается изо всех сил избегать случайного отказа пользователей. (Обратите внимание, что SystemExit в коде не будет выходить из IDLE.)

quit () и exit () не должны использоваться в коде. Это могут быть NameErrors или, как описано выше, точный эффект может зависеть от среды.

...