Hi,
nun diesmal eine längere Antwort (hoffe zumindest mal).
Ich habe mir im anderen Buch nun das Kapitel 'Dictionarys' angesehen. Aber für mein Programm ist das denke ich noch unnötig.
Ich speichere alle Fragen und Antworten in einer Liste, um sie dann abrufen zu können.
Hab da etwas rumexperimentiert und habe dabei diesen Code erschaffen:
Code: Alles auswählen
import easygui
liste = [[("Was ist Fifa13?", ["Ein Computerspiel", "Eine Trompete", "Eine Uhr"]), ("Was ist Python?", ["Eine Programmiersprache", "Eine Computerschlange", "Das Internet"])]]
print liste[0][0][0] #Was ist Fifa13
print liste[0][0][1] #Antworten dazu in einer Liste
print
print liste[0][1][0] #Was ist Python
print liste[0][1][1] #Antworten dazu in einer Liste
print
print liste[0][0][1][0] #Lösung für 1. Frage
print liste[0][1][1][0] # Lösung für 2. Frage
print
for i in liste[0][0][0]:
print i, #Ausgabe der 1. Frage mit vielen Leerzeichen!(da ,)
print
for k in liste[0][1][0]:
print k, #Ausgabe der 2. Frage mit vielen Leerzeichen (da ,)
Ich habe dabei genau kommentiert, was der ausgibt. Damit könnte ich praktisch wieder ein Programm schreiben, jedoch sind die vielen Indizes, wie BlackJack schon sagte, sehr kompliziert.
Man benutzt Datenstrukturen um Daten auf möglichst leichtem Wege zu speichern. Meiner Meinung eignen sich dafür Listen, Tupel und Dictionarys am Bestem. Nur das Aufrufen mehrerer Indizes ist kompliziert und daher auch viel Denkarbeit! Ich denke mir immer wieder, was die beste Taktik sei, Daten zu speichern, aber sie wieder aufzurufen?
Nun ändere ich das Programm so ab, damit die Fragen mit einer GUI ausgegeben werden:
Code: Alles auswählen
import easygui
liste = [[("Was ist Fifa13?", ["Ein Computerspiel", "Eine Trompete", "Eine Uhr"]), ("Was ist Python?", ["Eine Programmiersprache", "Eine Computerschlange", "Das Internet"])]]
ende = 1
punkte = 0
while ende == 1:
frage1 = easygui.buttonbox(liste[0][0][0], choices = liste[0][0][1])
frage2 = easygui.buttonbox(liste[0][1][0], choices = liste[0][1][1])
if frage1 == liste[0][0][1][0]:
punkte += 100
if frage2 == liste[0][1][1][0]:
punkte += 100
ende = 0
print punkte
In diesem Programm sind immer die ersten Möglichkeiten die richtigen Antworten. Da wäre meine erste Frage schon mal, wie man die vermischen kann. Somit habe ich mir das Modul random etwas angeschaut und habe dabei random.shuffle() gefunden.
In der Hoffnung das dieses geht:
Code: Alles auswählen
import easygui, random
liste = [[("Was ist Fifa13?", ["Ein Computerspiel", "Eine Trompete", "Eine Uhr"]), ("Was ist Python?", ["Eine Programmiersprache", "Eine Computerschlange", "Das Internet"])]]
ende = 1
punkte = 0
while ende == 1:
frage1 = easygui.buttonbox(liste[0][0][0], choices = random.shuffle(liste[0][0][1]))
frage2 = easygui.buttonbox(liste[0][1][0], choices = random.shuffle(liste[0][1][1]))
if frage1 == liste[0][0][1][0]:
punkte += 100
if frage2 == liste[0][1][1][0]:
punkte += 100
ende = 0
print punkte
Wurde ich nochmals enttäuscht. Dann wäre ja wieder der erste Anlaufpunkt,
was da schief läuft, denn wenn ich sowas teste:
Code: Alles auswählen
import random
l = [3, 1, 3, 4, 5, 6]
random.shuffle(l)
print l
geht alles. (Auch getestet mit strings!)
Aber diese Fragen sind etwas abseits vom Thema, denn ich will ja eigentlich wissen, was Ihr euch unter Datenstruktur vorstellt. Wie schon gesagt, definiere ich eine Datenstruktur als große Datenspeicherung, z.B. Listen, die man dann später mit den verschiedenen Indizes aufrufen kann.
Dann dacht ich mir, in Google werd ich schon was sinnvolles finden- Nun, was man findet, sind Erklärungen über Listen, Dictionarys und Tupel - mehr nicht.
Ich zerbrech mir den Kopf dabei.

Aber wenigstens bin ich schon viel weiter als vor einigen Wochen!
Bye