Seite 1 von 1

Frage zum einem Quiz Programm

Verfasst: Freitag 26. Januar 2018, 18:28
von Matsiw
Hallo Leute:
ich habe hier ein kleines Problem und wollte euch um Rat bitten.
Meine frage lautet wie folgt:
Ich habe in meiner Funktion MAIN() 2 Variabeln mit dem namen richtige_antworten und falsche_antworten.
Diese möchte ich am ende der 10 Fragen ausgegeben haben :

print(" Das waren %d richtige und %d falsche Antworten." % (richtige_antworten, falsche_antworten))
print(" Von 25 Fragen haben sie %d richtig und %d falsch beantwortet!" % (richtige_antworten, falsche_antworten))

Mein Problem ist, das die 2 Variabeln nicht definiert sind weil sie ja nur in der Funktion enthalten sind. Jetzt ist die Frage, wie bekomme
ich diese 2 Variabeln aus der Funktion Main(), um sie am ende ausgeben zu können? Vielen dank im vorraus !

Code: Alles auswählen

import random

QUESTION_FILENAME = ("FragenundAntworten.txt")
NUM_QUESTIONS = 10


def read_questions(filename):
    with open(filename) as lines:
        return [line.strip().split("\t") for line in lines]



def main():
    fragen = read_questions(QUESTION_FILENAME)
    random.shuffle(fragen)
    richtige_antworten = falsche_antworten = 0
    for nr, (frage, antwort) in enumerate(fragen[:NUM_QUESTIONS]):
        nr += 1
        print("FrageNR.%d von %d" % (nr, NUM_QUESTIONS))
        print("~~~~~~~~~~~")
        guess = input(frage)
        datei=open("FalscheAntworten.txt","a") 
        print(nr,"___FRAGE:",frage,"___","___RICHTIGE ANTWORT:",antwort,"___","___IHRE ANTWORT:",guess,"___","___ERGEBNIS:",antwort == guess, file=datei)
        if guess.lower() == antwort:
            richtige_antworten += 1
            print("Richtig!")
        else:
            falsche_antworten += 1
            print("Falsch, die korrekte Antwort lautet %s!" % antwort)
        print("|  Richtig: %d  |  Falsch: %d" % (richtige_antworten, falsche_antworten))
        print("-----------------------------------------------------------")
        datei.close()
        

if __name__ == '__main__':
    main()
    

print(" Das waren %d richtige und %d falsche Antworten." % (richtige_antworten, falsche_antworten))  
print(" Von 25 Fragen haben sie %d richtig und %d falsch beantwortet!" % (richtige_antworten, falsche_antworten))
print("--------------------------------------------------------------")




while True:
    answer = input("Run again? (y/n): ")
    if answer not in ('y', 'n'):
        print("Invalid input.")
        break
    if answer == 'y':
        print("--------------------------------------------------------------")
        print("Allgemine Infomationen:")
        print(" Von 25 Fragen haben sie %d richtig und %d falsch beantwortet!" % (richtige_antworten, falsche_antworten))
        print("--------------------------------------------------------------")
        main()
    else:
        print("Goodbye")
        break

Re: Frage zum einem Quiz Programm

Verfasst: Freitag 26. Januar 2018, 19:42
von nezzcarth
Matsiw hat geschrieben:
Mein Problem ist, das die 2 Variabeln nicht definiert sind weil sie ja nur in der Funktion enthalten sind. Jetzt ist die Frage, wie bekomme
ich diese 2 Variabeln aus der Funktion Main(), um sie am ende ausgeben zu können? Vielen dank im vorraus !
Ein erster Schritt ist, dein Skript besser zu strukturieren. Zwar hast du eine main-Funktion, verwendest sie aber nicht so, wie sie eigentlich gedacht ist. Wenn man eine main-Funktion hat (und in aller Regel sollte man das), hat kein Code, der die Programmlogik abbildet etwas auf Modul-Ebene zu suchen. Das gehört dann alles in Funktionen und/oder Klassen. Teil deinen Code in kleine Funktionen auf und stell ihn so um, dass du diese von 'main' aus ansteuern kannst. Dann ergibt sich eigentlich recht schnell eine Struktur, bei der du in der main Funktion nur noch so c.a. den Code hast, der aktuell bei dir zum Schluss kommt und die restliche Funktionalität, die in sinnvolle Funktionen gekapselt ist, im Schleifen-Inneren aufruft.