2016-10-03 4 views
-1

Ich stecke fest, um herauszufinden, wie die richtige Antwort mit der richtigen Frage übereinstimmen. Wenn die Antwort des Benutzers gleich einer der Antworten ist, wird sie korrekt zurückgegeben. Bitte helfen Sie.Einfaches Quiz - Wie verknüpfe ich Variablen?

easy_question = "The capitol of West Virginia is __1__" 
medium_question = "The device amplifies a signal is an __2__" 
hard_question = "A program takes in __3__ and produces output." 

easy_answer = "Charleston" 
medium_answer = "amplifier" 
hard_answer = "input" 

questions_and_answers = {easy_question: easy_answer, 
        medium_question: medium_answer, 
        hard_question: hard_answer} 
#print(easy_answer in [easy_question, easy_answer]) 
#print(questions_and_answers[0][1]) 

print('This is a quiz') 
ready = input("Are you ready? Type Yes.") 
while ready != "Yes": 
    ready = input("Type Yes.") 
user_input = input("Choose a difficulty: Easy, Medium, or Hard") 

def choose_difficulty(user_input): 
    if user_input == "Easy": 
     return easy_question 
    elif user_input == "Medium": 
     return medium_question 
    elif user_input == "Hard": 
     return hard_question 
    else: 
     print("Incorrect") 
     user_input = input("Type Easy, Medium, or Hard") 
print(choose_difficulty(user_input)) 


answer = input("What is your answer?") 
def check_answer(answer): 
    if answer == easy_answer: 
     return "Correct" 
    elif answer == medium_answer: 
     return "Correct" 
    elif answer == hard_answer: 
     return "Correct" 
print(check_answer(answer)) 
+0

Sie haben keinen Versuch unternommen, etwas anderes als "Korrekt" in "check_answer" zurückzusenden. – TigerhawkT3

+0

Weil 'if/elif' die Bedingungen weiter prüft, bis etwas wahr ist, und dann werden Sie die 'Rückkehr'-Bedingung erfüllen. In 'check_answer' gehst du einfach weiter bis du etwas richtig findest. – roganjosh

Antwort

1

Sie wollen den Überblick über die question halten:

question = choose_difficulty(user_input) 
print(question) 

answer = input("What is your answer?") 
def check_answer(question, answer): 
    if questions_and_answers[question] == answer: 
     return "Correct" 
    return "Incorrect" 
print(check_answer(question, answer)) 

Es gibt viel mehr coole Sachen, die Sie tun können, aber dies ist ein minimales Beispiel, das Ihr Problem lösen sollte!

EDIT:

Wenn Sie tat

questions_and_answers = {easy_question: easy_answer, 
       medium_question: medium_answer, 
       hard_question: hard_answer} 

Sie ein Wörterbuch erstellt (oder dict wie es in Python bekannt ist). Siehe examples. Grundsätzlich können Sie nach dem ersten Begriff (der Frage) suchen und es wird den zweiten Begriff (die Antwort) zurückgeben.

+0

Vielen Dank! Also was genau ist "wenn questions_and_answers [questions] == answer"? – MrWizard

-1

Die Art, wie ich es tun würde: Erstellen Sie 2 Variablen, x und y. Wenn der Benutzer "Einfach" wählt, setzt er x auf 1, "Mittel" setzt ihn auf 2 und so weiter. Dann fragst du ihn nach einer Antwort. Die Antwort auf die einfache Frage, wenn sie korrekt ist, setzt y auf 1, auf dem Medium auf 2 und so weiter. Dann haben Sie eine Überprüfung, ob x == y. Wenn ja, dann hat er die Frage richtig beantwortet.

+0

Das würde nicht funktionieren und die Einschränkungen des ursprünglichen Codes nicht beheben. Das OP war auf der richtigen Linie, eine Frage auf eine korrekte Antwort in einem Wörterbuch abzubilden, und es gibt bereits eine umfassendere Antwort auf diese Frage, als Sie angegeben haben – roganjosh