0

コマンドラインアプリケーションでは、次のコード ( Andreas Renbergから) を使用して、ユーザーに yes/no の質問をしています (標準を使用しているだけですinput)。

# Taken from http://code.activestate.com/recipes/577058-query-yesno/
#  with some personal modifications
def yes_no(question, default=True):
    valid = {"yes":True, "y":True, "ye":True,
             "no":False, "n":False }
    if default == None:
        prompt = " [y/n] "
    elif default == True:
        prompt = " [Y/n] "
    elif default == False:
        prompt = " [y/N] "
    else:
        raise ValueError("invalid default answer: '%s'" % default)
 
    while True:
        sys.stdout.write(question + prompt)
        choice = input().lower()
        if default is not None and choice == '':
            return default
        elif choice in valid.keys():
            return valid[choice]
        else:
            sys.stdout.write("Please respond with 'yes' or 'no' "\
                             "(or 'y' or 'n').\n")

ユーザーが"yes"(または同等のものを) 入力すると、関数は を返しTrue、 を"no"返しますFalse。を押すだけ↵ Returnで、default値が選択されます。

ただし、ユーザーが を押すEscと、文字として扱われます。Falseそのキーが押された場合に関数を返す方法はありますか? 私自身の検索で見つけたいくつかの結果は、過度に複雑であるか、一部のオペレーティング システムでしか機能しないようです。

4

1 に答える 1