Python に goto ステートメントが存在する場合
Najwa Riyaz
2023年1月30日
-
Python で例外を使用して
goto
ステートメントをエミュレートする -
Python で
break
およびcontinue
ステートメントでループを使用してgoto
ステートメントをエミュレートする
この記事では、Python に goto
ステートメントが存在するかどうかについての回答を提供します。
基本的に、goto
ステートメントは Python ではサポートされていません。一般に、これらのステートメントは非常に組織化されていないコードになるため、広く軽蔑されています。したがって、スパゲッティコードになってしまいます。このようなコードは、フローとデバッグを理解しようとすると、理解しにくくなり、さかのぼることができなくなります。
Python は、if-else
式、例外、ループなど、コードを分岐するいくつかの方法を使用して構造化プログラミングを可能にします。
Python で goto
ステートメントをエミュレートする場合は、この記事にいくつかの例を示します。ただし、goto
を使用するのはプログラミングの習慣としては不適切であるため、これらの方法はお勧めしません。
Python で例外を使用して goto
ステートメントをエミュレートする
推奨されるプログラミング手法ではありませんが、例外を使用して goto
を実装する構造化された方法を提供できます。結局のところ、例外は深くネストされた制御構造から飛び出す可能性があります。以下のこの例を確認してください。
class gotolabel(Exception):
print("from the goto label") # declare a label
try:
x = 4
if x > 0:
raise gotolabel() # goto the label named "gotolabel"
except gotolabel: # where to goto the label named "gotolabel"
pass
出力:
from the goto label
Python で break
および continue
ステートメントでループを使用して goto
ステートメントをエミュレートする
break
および continue
ステートメントでループを使用して、Python で goto
ステートメントをエミュレートできます。このサンプルプログラムは、この方法を示しています。
prompt = "Roll the dice "
while True:
try:
y = int(input(prompt))
except ValueError:
print("Please enter a valid number")
continue
if y > 6:
prompt = "The dice has numbers 1-6 ! Input a number <6"
elif y < 1:
prompt = "The dice has numbers 1-6 ! Input a number >1"
else:
print("Correct!")
break
出力:
Roll the dice hj
Please enter a valid number
Roll the dice 6
Correct!
ここで、continue
ステートメントは、プロセスがループの次の反復にジャンプし、無限ループを引き起こすのに役立ちます。一方、break
ステートメントはループを終了するのに役立ちます。