0

最近、if else ステートメントで小さな問題が発生しました。つまり、スクリプトが作成したファイルを読みたいかどうかをユーザーに入力を求める関数を作成したいので、入力が正しい場合は機能しますが、入力が正しくない場合は再び質問に戻ります。

コードは次のとおりです。

def read_the_file(output):
    print """
Do you want me to read your newly created file?
Type [Y]es or [N]o
    """
    question = raw_input("> ")
    reading = output.read()
    if question == 'yes'or question == 'Y' or question == 'y':
        print "BEGINNING OF FILE\n\n" + reading + "\n END OF FILE"
    elif question == 'no' or question == 'N' or question == 'n':
        sys.exit[1]
    else :
        print "wrong input"

read_the_file(output_file)

そのため、関数に実行してもらいたいのは、代わりに次のように書くことです

else:
    print "wrong input"

戻って繰り返すことです。

4

4 に答える 4

0

別の方法は、同じ関数に再帰することです。これは「再試行」する方法であり、関数本体をwhileループにラップする必要がありません。

回線を交換する

else:
    print "wrong input"

行によって

else:
    print "wrong input. Try again..."
    read_the_file(output_file);
    return;

returnまた、再帰の直後であることを確認してください。

このトリックは、書き込み先のファイル名をユーザーに尋ね、ファイルが存在し、上書きしてはならない場合は新しい名前を尋ねるときに便利であることがわかりました。

于 2013-06-04T08:38:50.693 に答える
0

これを試して:

def read_the_file(output):

    reading = open(output, "rb").read()
    while True:
        question = raw_input("Do you want me to read your newly created file?\
                        Type [Y]es or [N]o :")
        if question in ["Yes","yes","YES", "y","Y"]:

            print "BEGINNING OF FILE\n\n" + reading + "\n END OF FILE"
            break

        elif question in ["NO", "no", "n", "N"]:
            sys.exit[1]

        else:
            print "wrong input"
于 2013-06-04T08:06:51.660 に答える