-4
from sys import exit

def answer():
    answer = raw_input("> ")
    if answer == "Yes" or answer == "yes":
        #going to next
        joint()
    elif answer == "No" or answer == "no":
        print "You still have something, I know..."
        again()
    else:
        fubar()

def again():
    again = raw_input("> ")
    if again == "Yes" or again == "yes":
        #going to next
        joint()
    elif again == "No" or again == "no":
        print "You still have something, I know..."
    else:
        fubar()

def fuck():
    print "Fubar'd!"

def joint():
    print "To be continue..."

def question():
    print "Hi duuuude..."
    raw_input("To say 'Hi' press Enter")
    print "Can you help me?"
    answer()

question() 

こんにちは、これを手伝ってくれませんか?「いいえ」という答えが返ってきたら、「答え」という機能を繰り返そうとしています。関数を「もう一度」エスケープしたい...そして、「answer == "Yes"またはanswer == "yes":」をエスケープする方法もあるので、答えを受け入れるために大文字または小文字を書いても、そうではありませんnoobのように書くには「はい」または「はい」?

4

2 に答える 2

3

これは通常、while ループで実現されます。

編集: 指摘したように、 while ループは素晴らしく明確であり、再帰の制限を回避します。

簡単な答えがこれほど多くの票を生み出すとは思わなかった....

例を挙げましょう

while True:
    ans = raw_input("Enter only y or n to continue").strip().lower()
    if ans == "y":
        print "Done!"
        break
    elif ans == "n":
        print "No?"
    else:
        print "Not valid input."
于 2012-11-11T17:03:20.420 に答える
1

問題の最も簡単な解決策は、again関数を削除して再帰することです。

def answer():
    ans = raw_input("> ")
    if ans == "Yes" or ans == "yes":
        #going to next
        joint()
    elif ans == "No" or ans == "no":
        print "You still have something, I know..."
        answer() # again()
    else:
        fubar()

関数名と衝突しないように、answer変数の名前を に変更する必要がありました。ans


2 番目の質問では、次のいずれかが必要です。

if answer.lower() == "yes":

また

if answer in ("Yes", "yes"):
于 2012-11-11T17:03:42.183 に答える