Einstufungstest Sprachkurs

Du hast eine Idee für ein Projekt?
Antworten
AndySchwarz
User
Beiträge: 1
Registriert: Freitag 14. Mai 2010, 09:58

Hallo allerseits!

Ich habe mich erst vor einer Woche begonnen, mich intensiver mit Python auseinanderzusetzen und lese im Moment alle Tutorials, etc.., um schnell zu lernen.

Grund dafür ist, dass ich eine kleine Anwendung für meine Freundin schreiben möchte, die in einer Sprachschule arbeitet und dort täglich dutzende Einstufungstests manuell korrigieren muss. Diese Arbeit möchte ich ihr gern ersparen.

Ich erzähl euch mal, wie ich mir das so vorstelle:

-der Test besteht aus 60 Multiple-Choice Fragen mit jeweils 4 Optionen.
-am Anfang soll das Programm den Schüler nach seinem Namen fragen
-dann gehts weiter zu den Fragen
-man soll die Möglichkeit haben, mit Pfeilen zwischen von einer Frage zur nächsten und zurück springen zu können.
-die Reihenfolge der Fragen ist unveränderlich (aufsteigender Schwierigkeitsgrad)
-die Überprüfung der Richtigkeit aller Fragen erfolgt erst, wenn der Benutzer bestätigt, dass er Fertig ist.
-dann soll das Programm die Richtigkeit der Fragen überprüfen.
-aus der Punktezahl resultiert eine von 9 Niveaustufen (zB. 0-15 Anfänger; 16-30 Grundstufe, etc)
-dann soll das Programm noch zwei Sachen machen: a) den Namen, die Punktezahl und die Niveaustufe, Datum und Uhrzeit in eine Datei schreiben. b) das Gleiche auch als Email verschicken.

Ich hatte mir das ganze als Standalone-Application vorgestellt, mit PyQt als GUI.
Angesichts der Tatsache, dass ich keine Programmiererfahrung habe, wird das sicher kompliziert, aber ich muss es einfach schaffen.

Aber wo anfangen?

Ich hab mir mal folgende Sachen überlegt:

-die eigentliche Fragen werden von einer Funktion gestellt.
-der Text der Fragen, die 4 Optionen und die jeweils richtige Antwort werden als Tupel (am schnellsten?) gespeichert.
-dann noch eine Funktion um die Antworten auszulesen und einen Zähler, der die richtigen Antworten liest.
-eine Funktion, die aus der Punktezahl das Niveau errechnet.
-eine für die Datei/Emailgeschichte


Das klingt für euch erfahrene Progammierer sicher alles sehr banal, für mich gibt es bis jetzt weder Anfang noch Ende?

Könntet ihr mir einige Konzeptuelle Ratschläge geben, wo ich beginnen sollte?
Ich werd dann regelmäßig meine Fortschritte posten und eurem prüfenden Auge vorlegen.

Vielen Dank schon mal im Voraus,

Andy
Benutzeravatar
numerix
User
Beiträge: 2696
Registriert: Montag 11. Juni 2007, 15:09

AndySchwarz hat geschrieben:Ich habe mich erst vor einer Woche begonnen, mich intensiver mit Python auseinanderzusetzen und lese im Moment alle Tutorials, etc.., um schnell zu lernen.
Wenn das so zu verstehen ist, dass dies überhaupt dein erster (ernsthafter) Kontakt mit der Programmierung ist, dann hast du dir evtl. für den Anfang etwas zu viel vorgenommen.

Erfahrungsgemäß empfiehlt es sich, zunächst einmal ohne GUI-Toolkits zu arbeiten, um sich mit Python selbst vertraut zu machen. Das hilft dir natürlich im konkreten Fall wenig, weil man eine Konsolenanwendung mit der genannten Funktionalität keinem zumuten kann (außer sich selbst).

Um das Programm auf die Beine stellen zu können, brauchst du einerseits vernünftige Grundkenntnisse in Python und etwas Erfahrung im algorithmischen Denken. Gleichzeitig brauchst du ebenfalls vernünftige Grundkenntnisse in PyQt oder welchem Toolkit auch immer. Etwas einfacher dürfte es sein, wenn du es mit Tkinter versuchst; falls du Python 3.1 einsetzt, dann sieht es auch ganz akzeptabel aus.

Falls du zufällig über brauchbare Kenntnisse in HTML verfügst, könntest du es auch als Browseranwendung realisieren, statt ein GUI-Toolkit zu bemühen.
BlackJack

AndySchwarz hat geschrieben:-die eigentliche Fragen werden von einer Funktion gestellt.
Nicht wenn Du mit einer GUI arbeitest, denn bei GUIs hast du keinen linearen Programmablauf sondern einen ereignisbasierten. Du bestimmst nicht direkt den Verlauf des Programms, sondern der Anwender, in dem er über die GUI immer wieder kleinere Aktionen auslöst, die Du als Programmierer für bestimmte Ereignisse hinterlegst. Zum Beispiel wäre ein Druck auf eine Schaltfläche mit der Beschriftung "Weiter" oder einem Piktogramm von einem Pfeil so ein Ereignis.
AndySchwarz hat geschrieben:-der Text der Fragen, die 4 Optionen und die jeweils richtige Antwort werden als Tupel (am schnellsten?) gespeichert.
Die Frage nach der Geschwindigkeit stellt sich hier im Grunde nicht. Die geringen Datenmengen und die Einfachheit der Aufgabe, algorithmisch gesehen, sollten solche Überlegungen eigentlich überflüssig machen. Hier wäre eher zu fragen, wie man die Daten abspeichert, denn die Fragen sollen ja sicher nicht fest im Programm verankert sein und auch von Nicht-Programmierern bearbeitet werden können. Da wäre zum Beispiel die Frage ob man Deiner Freundin JSON als Format zumuten kann, oder ob das schon zu kompliziert ist.
AndySchwarz hat geschrieben:-dann noch eine Funktion um die Antworten auszulesen und einen Zähler, der die richtigen Antworten liest.
Das fällt auch mit zum Bereich Datenstruktur. Intern würde ich das wohl mit eigenen Typen repräsentieren, statt nur verschachtelte Strukturen aus Tupeln oder Listen und Dictionaries zu verwenden. Damit wird der Quelltext verständlicher. Also mindestens zwei Klassen -- eine für eine einzelne Frage mit den Antwortmöglichkeiten und der Möglichkeit Eine davon als ausgewählt zu kennzeichnen, und eine Containerklasse für die Fragen, mit entsprechenden Methoden zur Auswertung und zum Laden und eventuell auch Speichern der Fragen im JSON-Format. Oder welches Format auch immer verwendet werden soll.

Ich denke auch, dass das für einen (absoluten?) Anfänger ein ziemlicher Brocken ist. Und in erster Näherung an eine Lösung solltest Du Dich IMHO auch erst einmal um eine Lösung ohne GUI kümmern, allerdings dabei schon darauf hinarbeiten, dass Programmlogik und Benutzerinteraktion sauber getrennt sind. Dann kannst Du da als letzten Schritt in der Entwicklung eine GUI draufsetzen.
Antworten