HOWTO · Python

Python の無限ループのテキストメニュー

この記事では、Python での無限ループを使用したテキストメニューの実装について説明します。また、無限ループを終了する 2つの方法についても説明します。

このページの内容

while ループと if-else ステートメントを使用して、Python プログラムにさまざまなツールを実装できます。この記事では、Python で無限ループのテキストメニューを作成します。

Python の無限ループのテキストメニュー

条件付きステートメントで while ループを使用して、無限ループでテキストメニューを作成します。while ループ内では、最初にユーザーにいくつかのオプションを表示し、オプションを表示した後、ユーザーからの入力を受け取ります。

入力を受け取った後、プログラムは目的の出力を出力します。最後に、プログラムはオプションを出力します。

これは、プログラムがユーザーによって手動で終了されるまで続きます。

これを理解するために、次のプログラムを検討してください。

def options():
    print("Enter 1 to print 'Hi'.")
    print("Enter 2 to print 'Hello'.")
    print("Enter 3 to print 'Namaste'.")
    print("Enter 4 to print 'Bonjour'.")
    print("Enter 5 to print 'Hola'.")


while True:
    options()
    option = int(input())
    if option == 1:
        print("Hi")
    elif option == 2:
        print("Hello")
    elif option == 3:
        print("Namaste")
    elif option == 4:
        print("Bonjour")
    elif option == 5:
        print("Hola")

出力:

Enter 1 to print 'Hi'.
Enter 2 to print 'Hello'.
Enter 3 to print 'Namaste'.
Enter 4 to print 'Bonjour'.
Enter 5 to print 'Hola'.
1
Hi
Enter 1 to print 'Hi'.
Enter 2 to print 'Hello'.
Enter 3 to print 'Namaste'.
Enter 4 to print 'Bonjour'.
Enter 5 to print 'Hola'.
2
Hello
Enter 1 to print 'Hi'.
Enter 2 to print 'Hello'.
Enter 3 to print 'Namaste'.
Enter 4 to print 'Bonjour'.
Enter 5 to print 'Hola'.
^D
Traceback (most recent call last):
  File "/home/aditya1117/PycharmProjects/pythonProject/webscraping.py", line 11, in <module>
    option = int(input())
EOFError: EOF when reading a line

上記のコードでは、最初に関数 options() を定義して、ユーザーが利用できるさまざまなオプションを出力しています。その後、while ループを作成しました。

while ループ内で、最初に options() 関数を実行しました。その後、ユーザーに番号の入力を求めました。

続いて、input() 関数が文字列を返したため、int() 関数を使用して入力を整数に変換しました。

プログラムは、入力に従ってメッセージを出力しました。その後、プログラムは再びオプションを表示しました。

これは、ユーザーがプログラムを手動で終了するまで続きました。

次のセクションで説明するように、いくつかの方法を使用して while ループを終了し、プログラムに進むことができます。

Python で break ステートメントを使用して無限ループでテキストメニューを終了する

while ループを終了するには、指定されたオプション以外の任意の番号を押すようにユーザーに求めます。その後、条件文に else ブロックを含めます。

ユーザーが指定されたオプション以外の番号を入力すると、次の例に示すように、Bye が出力され、break ステートメントを使用して while ループから抜け出します。

def options():
    print("Enter 1 to print 'Hi'.")
    print("Enter 2 to print 'Hello'.")
    print("Enter 3 to print 'Namaste'.")
    print("Enter 4 to print 'Bonjour'.")
    print("Enter 5 to print 'Hola'.")
    print("Enter any other number to terminate.")


while True:
    options()
    option = int(input())
    if option == 1:
        print("Hi")
    elif option == 2:
        print("Hello")
    elif option == 3:
        print("Namaste")
    elif option == 4:
        print("Bonjour")
    elif option == 5:
        print("Hola")
    else:
        print("Bye")
        break

出力:

Enter 1 to print 'Hi'.
Enter 2 to print 'Hello'.
Enter 3 to print 'Namaste'.
Enter 4 to print 'Bonjour'.
Enter 5 to print 'Hola'.
Enter any other number to terminate.
1
Hi
Enter 1 to print 'Hi'.
Enter 2 to print 'Hello'.
Enter 3 to print 'Namaste'.
Enter 4 to print 'Bonjour'.
Enter 5 to print 'Hola'.
Enter any other number to terminate.
3
Namaste
Enter 1 to print 'Hi'.
Enter 2 to print 'Hello'.
Enter 3 to print 'Namaste'.
Enter 4 to print 'Bonjour'.
Enter 5 to print 'Hola'.
Enter any other number to terminate.
12
Bye

上記の例では、ユーザーが 1 から 5 以外の数値を入力すると、プログラムの実行は条件ステートメントの else ブロックに入ります。したがって、プログラムは Bye を出力し、break ステートメントが実行されます。

このため、プログラムの実行は while ループから外れます。

Python の Flag 変数を使用して無限ループでテキストメニューを終了する

break ステートメントを使用する代わりに、flag 変数を使用して無限ループの実行を制御できます。まず、while ループを実行する前に、flag 変数を True に初期化します。

次に、flag 変数が True の場合、while ループを実行します。while ループ内で、ユーザーが指定されたオプション以外の数値を入力すると、Bye が出力され、値 False が flag 変数に割り当てられます。

flag 変数が False になると、while ループの実行は自動的に終了します。これは、次のコードで確認できます。

def options():
    print("Enter 1 to print 'Hi'.")
    print("Enter 2 to print 'Hello'.")
    print("Enter 3 to print 'Namaste'.")
    print("Enter 4 to print 'Bonjour'.")
    print("Enter 5 to print 'Hola'.")
    print("Enter any other number to terminate.")


flag = True
while flag:
    options()
    option = int(input())
    if option == 1:
        print("Hi")
    elif option == 2:
        print("Hello")
    elif option == 3:
        print("Namaste")
    elif option == 4:
        print("Bonjour")
    elif option == 5:
        print("Hola")
    else:
        print("Bye")
        flag = False

出力:

Enter 1 to print 'Hi'.
Enter 2 to print 'Hello'.
Enter 3 to print 'Namaste'.
Enter 4 to print 'Bonjour'.
Enter 5 to print 'Hola'.
Enter any other number to terminate.
1
Hi
Enter 1 to print 'Hi'.
Enter 2 to print 'Hello'.
Enter 3 to print 'Namaste'.
Enter 4 to print 'Bonjour'.
Enter 5 to print 'Hola'.
Enter any other number to terminate.
3
Namaste
Enter 1 to print 'Hi'.
Enter 2 to print 'Hello'.
Enter 3 to print 'Namaste'.
Enter 4 to print 'Bonjour'.
Enter 5 to print 'Hola'.
Enter any other number to terminate.
12
Bye

上記の例では、flag 変数が False になると、while ループの実行が終了します。これは、Python インタープリターが最初に flag 変数に値 True が含まれているかどうかをチェックするためです。はいの場合、while ループのみが実行されます。

値 False を flag 変数に割り当てると、インタープリターは、while ループを次に実行する前に、flag 変数の値をチェックします。flag 変数の値が False であることを確認すると、while ループを終了します。

まとめ

この記事では、Python の while ループと条件ステートメントを使用して、無限ループのテキストメニューを作成しました。また、break ステートメントと flag 変数を使用して無限ループの実行を終了する方法についても説明しました。