0

現在pythonの使い方を勉強中です。理解できない定義について学習しているときに、問題を見つけました。0-4 を選択できるシンプルなメニューを提供します。ユーザーが上記の 4 を選択すると、「これは有効な選択ではありません...」というメッセージが表示されるはずです。

ただし、10 以上の値を入力すると、メニュー以外は何も返されません...メッセージはありません。

ご意見をお寄せいただきありがとうございます。

これが私のコードです:

# Multitasker
# Allows User to Pick an Item that is Defined.

def exit():
    print("See You Later!")
def task1():
    print("This is Task 1!")
def task2():
    print("This is Task 2!")
def task3():
    print("This is Task 3!")
def task4():
    print("This is Task 4!")

choice = None
while choice != "0":
    print(
        """
        Multitask Selector

        0 - Quit
        1 - Task 1
        2 - Task 2
        3 - Task 3
        4 - Task 4
        """
        )

    choice = input("Pick a Task Between 1-4:\t#")
    print()

    # Exit
    if choice == "0":
        exit()

    # Task 1
    elif choice == "1":
        task1()

    # Task 2
    elif choice == "2":
        task2()

    # Task 3
    elif choice == "3":
        task3()

    # Task 4
    elif choice == "4":
        task4()

    # Not a Correct Selection
    elif choice > "4":
        print("That is not a valid choice.  Please Select a Task Between 1-4.")
4

2 に答える 2

7

文字列である選択を比較しています(印刷関数からPython 3を想定しています)、これも文字列である「4」です。

elif choice > "4":

これは辞書的に機能します:

>>> '1' < '2'
True
>>> '1' < '100'
True
>>> '100' < '2'
True

数値比較が必要な場合は、選択を数値に変換する必要があります。

>>> int('1') > 4
False
>>> int('10') > 4
True
>>> 
于 2012-06-02T04:25:58.373 に答える
3

「10」は「4」以下です。どちらも文字列で、文字ごとに比較されます。「1」は「4」より小さいので、「10」は「4」より小さいです。あなたがすべきことは、それらを整数に変換することです:

choice = input("Pick a Task Between 1-4:\t#")
choice = int(choice) if choice.isdigit() else 9  # add this line

これにより、数値以外のエントリが 9 に変換されるため、メニューが再び表示されます。

次に、文字列ではなく数値で比較します。

if choice == 0:
    exit()

最後の条件は単純にelseにすることができます。そこで使用する必要はありませんelif

于 2012-06-02T04:28:20.393 に答える