2016-07-22 13 views
-3

Ich lerne Python und ich habe derzeit eine Funktion, die lang und etwas repetitiv ist. Siehe unten: Ziel: Um die Funktion in Teile zu reduzieren, kann ich verstehen, wie dieser Prozess besser funktioniert.Verschachtelte Funktionen

def play_game(questions,answers): 
    '''Begins checking user input to answers/
     fills in the blanks with correct answer/
     prompts user with same question if answer is Wrong 
     :param questions: feeds .split() list to find __1__ 
     :param answers: searches for answer and replaces blank __1__ 
     :return: replaces correct answer in questions param. 
     ''' 
    print questions 
    user_input = raw_input("Fill in the blank: ") 
    if user_input == answers[0]: 
     questions = questions.replace('__1__', answers[0]) 
    if user_input != answers[0]: 
     user_input = raw_input("Wrong answer, you have 4 guesses left. ") 
    print questions 
    user_input = raw_input("\n Please answer second question: ") 
    if user_input == answers[1]: 
     questions += questions.replace('__2__', answers[1]) 
    if user_input != answers[1]: 
     user_input = raw_input("\n Incorrect, you have 3 guesses left. ") 
    print questions 

Dieser Prozess wird für 5 Vermutungen fortgesetzt. Ich möchte betonen, wie wichtig es ist, dass die gleiche Frage erneut gestellt wird, wenn der Benutzer nicht richtig rät, sie werden auch eine Schätzung von 5 auf 4 haben usw. Sollte ich hier eine Schleife zur Automatisierung verwenden?

print questions 
#for answer in answers: 
# process answer 
user_input = raw_input("Fill in the blank: ") 
if user_input == answers[0]: 
+3

ja, eine Schleife verwenden. Was hat das mit verschachtelten Funktionen zu tun? –

+0

Sie sollten auch 'else' verwenden. Anstelle von 'if a == b: do_this()' 'wenn a! = B: do_that()' solltest du 'wenn a == b: do_this()' sonst: do_that() ' –

+0

@PM 2Ring Will die überprüfen, ob die Antwort nicht in der Liste ist? – SheperdsonBrown

Antwort

0

versuchen, etwas wie folgt aus:

for guess in range(4): 
    print "Guess", guess + 1 

# Put your game function here 

    if guess == 3: 
     print "Game Over!" 
+0

wie so sein? für raten im Bereich (4): print "Guess", rate + 1 def play_game (Fragen, Antworten): – SheperdsonBrown

+0

@SheperdsonBrown - Ja, so etwas – fugu