プログラムメニューの[q](終了)オプションには、次のコードがあります。
Elif choice == "q":
print()
無限ループに入れて空白行を印刷し続けるまで、それはうまくいきました。プログラムを終了できる方法はありますか?それ以外の場合、別の解決策を考えられますか?
1つの方法は次のとおりです。
_sys.exit(0)
_
もちろん_import sys
_する必要があります。
別の方法は、break
を無限ループから抜け出すことです。たとえば、これを行うことができます:
_while True:
choice = get_input()
if choice == "a":
# do something
Elif choice == "q":
break
_
さらに別の方法は、メインループを関数に入れ、return
を使用することです。
_def run():
while True:
choice = get_input()
if choice == "a":
# do something
Elif choice == "q":
return
if __== "__main__":
run()
_
return
を使用するときにrun()
関数が必要な唯一の理由は、(他の言語とは異なり)Pythonのメイン部分から直接return
できないことです。コード(関数内にない部分)。
プログラムを終了する実際の方法は、呼び出すことです
_raise SystemExit
_
それは_sys.exit
_ とにかく である。
単純なSystemExit
、またはNone
を単一の引数として使用すると、プロセスの終了コードがゼロに設定されます。整数以外の例外値(raise SystemExit("some message")
)は、例外値を_sys.stderr
_に出力し、終了コードを1に設定します。整数値は、プロセスの終了コードを値に設定します。
_$ python -c "raise SystemExit(4)"; echo $?
4
_
Python 3にはexit()
関数があります:
Elif choice == "q":
exit()
見る - sys.exit
。この関数は、指定された終了ステータスでプログラムを終了します。
Sys.exit()または例外に基づくソリューションは、マルチスレッド環境では機能しない可能性があることに注意してください。
Exit()は最終的に「のみ」例外を発生させるため、メインスレッドから呼び出されたときにのみプロセスを終了し、例外はインターセプトされません。 ( doc )
Alex Martelliからのこの回答 詳細については。