2016-11-08 2 views
-2

Ich versuche, einen zufälligen Fragegenerator zu erstellen, der mir hilft, zu revidieren. Ich habe das Problem, wenn ich meine Antwort richtig oder falsch eintrage, werde ich eine Ausgabe von falsch zweimal hintereinander bekommen.Zufälliger Input-Python-Generator

Hier ist mein Code, an der Unterseite habe ich Zeilen kommentiert. Sie waren für, als ich nur die Möglichkeit einer Antwort hatte, wahrscheinlich nicht gebraucht aber trotzdem behalten.

import random 
a = ('What is 1 + 2?') 
b = ('What is 2 + 2?') 

questions = [a, b] 
answer = (int(input(random.choice(questions)))) 

answer = a 
answer = b 

if a == 3: 
    print('Correct') 
else: 
    print ('False') 

if b == 4: 
    print('Correct') 
else: 
    print ('False') 

#if answer == 2: 
# print ('Well Done') 
#else: 
# print ('No Incorect') 
+1

Was denken Sie, werden die folgenden Zeilen zu tun: 'answer = a; answer = b' –

+1

Ihre Variablen 'a' und' b' sind die Fragen, die keiner Zahl gleich sind, also fallen beide 'if'-Anweisungen auf ihre 'else'. – kindall

+0

Alle 'if' Fälle werden ausgewertet. Wenn ich 'a == 2' eingegeben habe, dann' wenn a == 3: '' False' ist, wird 'print ('False')' ausgelöst. Aber dann wird es auch gegen 'if b == 4:' gut ... ich denke, das ist '== ('Was ist 2 + 2?')' In diesem Fall ist es auch 'Falsch' und du Erhalte 'print ('False')' erneut. – roganjosh

Antwort

0

Ich habe Ihren Code ein wenig geändert.

import random 
questions = ['What is 1 + 2?','What is 2 + 2?' ] 
a,b = questions 
x = random.choice(questions) 
if x == a: 
    l = int(input(a)) 
    if l == 3: 
     print('Correct') 
    else: 
     print('False') 
elif x == b: 
    l = int(input(b)) 
    if l == 4: 
     print('Correct') 
    else: 
     print('False') 

Wenn Sie nicht verstehen, was es ist, nur drucken in() Aussagen :)

0

Klingt wie Sie Antwort als Lambda-Funktion zu erklären versuchen.

Sie könnten besser haben Glück zu tun, dass:

... 
answer = lambda q: int(input(q)) 
answer_a = answer(a) 
answer_b = answer(b) 

if (answer_a == 3): 
....