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]:
ja, eine Schleife verwenden. Was hat das mit verschachtelten Funktionen zu tun? –
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() ' –
@PM 2Ring Will die überprüfen, ob die Antwort nicht in der Liste ist? – SheperdsonBrown