Abschlussprojekt

Spickzettel

Spätestens jetzt solltest Du den Spickzettel noch einmal genau durchgehen und/oder Dir eine eigene Zusammenfassung der wichtigsten Python-Grundlagen erstellen.

Abschlussprojekt - Quiz

Programmiere ein Spiel, bei dem man eine festgelegt Zahl an Quizfragen beantworten muss. Der Highscore sowie die Quizfragen sollen in einer Datei gespeichert werden. Den genauen Aufbau der Dateien sollst Du selbst festlegen.

Text kann man folgendermaßen in einer Datei speichern:

    datei = open('meineDati.txt', 'w')
    datei.write('Inhalt der Datei')
    datei.close()

Eine Datei einlesen kann man so:

    datei = open('meineDatei.txt', 'r')
    text = datei.read()
    datei.close()

Bei Bedarf musst Du noch die Zeichencodierung als zusätzlichen Parameter angeben, z.B. open('meineDatei.txt', 'r', encoding='utf-8'). Weitere mögliche Codierungen sind z.B. utf-8-sig für UTF-8 codierten Text mit BOM oder iso-8859-1.

Eventuell ist es für Dich noch nützlich zu wissen, wie man Zeichenketten zeilenweise oder an beliebigen anderen Stellen aufteilt. Dies demonstriert der folgende Python-Dialog:

>>> text = '''Das ist
ein ziemlich
langer Text'''
>>> text.splitlines()
['Das ist', 'ein ziemlich', 'langer Text']
>>> zeichenkette = 'Erster Teil#und zweiter Teil'
>>> zeichenkette.split('#')
['Erster Teil', 'und zweiter Teil']

Nutze zur Strukturierung des Programms Funktionen.Die von Dir erstellten Funktionen könnten u.a. folgende sein:

  • schreibeDatei(dateiname, text): Schreibt den übergebenen Text in die angegebene Datei
  • leseDatei(dateiname): Liest Text aus einer Datei aus und gibt den Inhalt als Zeichenkette zurück
  • ladeQuiz(dateiname): Liest eine Datei ein und gibt die darin enthaltenen Aufgaben in gut verarbeitbarer Form zurück, z.B. als Liste von Listen [['Frage1','Antwort1'], ['Frage2','Antwort2'], ...]
  • zufaelligeAufgabe(quiz): wählt eine zufällige Aufgabe -bestehend aus Frage und Antwort- aus und gibt diese zurück
  • quizStarten(quiz): startet das Quiz mit den übergebenen Aufgaben und stellt bspw. fünf Fragen.

Wenn Dein Programm in der Basisversion fertig ist, kannst Du es z.B. folgendermaßen erweitern:

  • Man kann gegen einen anderen Spieler spielen.
  • Alternative Lösungen sollen zugelassen werden. Auf die Frage "An welcher Erfindung war Gottlieb Daimler maßgeblich beteiligt?" sollen also z.B. die Antworten "Auto", "Automobil", "KFZ" gültig sein.
  • Einmal gestellte Fragen sollen nicht mehr wiederholt werden.
  • Zum Speichern soll das Modul "pickle" benutzt werden. Welche Vor- und Nachteile hat dies?