217
7.4
Listen
7.4.7 Modellieren mit Listen – Beispiel: die Charts
Eine typische Anwendung von Listen ist die Repräsentation von Tabellen.
Als Beispiel programmieren wir ein kleines System, das Musik-Charts verwaltet. (Eine Liste
von Musik-Charts im Internet findet Sie z.B. unter folgendem URL:
http://www.
glistmusic.com/charts/deutschland.htm
). Wenn Sie sich nicht für Musik interessie-
ren, stellen Sie sich vor, es handele sich um eine Umfrage mit nur einer Frage (wie etwa die
berühmte Sonntagsfrage »Welche Partei würden Sie wählen, wenn am nächsten Sonntag
Bundestagswahl wäre?«). Die Charts kann man sich als Tabelle folgenden Formats vorstellen:
Jede einzelne Zeile der Tabelle kann durch eine Liste repräsentiert werden. Die gesamte
Tabelle ist dann eine Liste von Listen. Unser Mini-System besteht aus zwei kleinen Skripten:
Ein Managementprogramm charts.py, das erlaubt, eine Hitliste aus mehreren Titeln
zusammenzustellen und abzuspeichern
Ein Voting-Programm voting.py, das von stimmberechtigten Personen aufgerufen
wird. Ein Titel der Charts kann ausgewählt werden und erhält eine Stimme.
In diesem System wird die Liste mit den Charts in einer Datei auf einem Peripheriespeicher
(Festplatte) abgespeichert. Dies ist ein kleiner Vorgriff. Mehr zum Thema Dateien finden
Sie in Abschnitt 9.1.
Zur Vorbereitung müssen Sie ein Verzeichnis einrichten, in dem sich die Datei mit der Liste
befindet. In dem Beispielskript gehen wir davon aus, dass sich im Wurzelverzeichnis ein
Verzeichnis namens
charts befindet (Pfad unter Windows: c:\charts\).
Beschäftigen wir uns zunächst mit dem Management-Programm. Wir entwickeln es nach
der Methode der schrittweisen Verfeinerung. Drei Teilaufgaben sind zu lösen, für die
jeweils eine Funktion definiert wird:
Eingabe der Charts (Titel und Interpret)
Speichern der Charts in einer Datei auf der Festplatte
Ausgabe der Charts auf dem Bildschirm
Im Hauptprogramm werden diese Funktionen nacheinander aufgerufen.
Index Stimmen Titel Interpret
0 23 Ohne dich Nicole
1 12 Nur mit dir Sascha
2 6 Du allein Natascha
3 0 Einsam Rudi
Tabelle 7.3: Beispiel einer Hitliste
# chartsmanager.py
# Funktionsdefinitionen
def eingabe(charts):
Kapitel 7
Sequenzen, Mengen und Generatoren
218
Erläuterung:
#1: Wenn der Benutzer nach dem Prompt Titel: einfach auf (Return) drückt, wird der Vari-
ablen
titel ein leerer String zugewiesen, dieser besitzt den Wahrheitswert False und die
while-Schleife wird beendet.
#2: Mithilfe der dump()-Funktion des Moduls pickle kann ein beliebiges Objekt gespei-
chert werden.
#3: Hier wird ein File-Objekt mit dem Namen f erzeugt. Dabei wird eine Datei mit dem Pfad
c:\charts\charts.txt (Windows) zum Schreiben geöffnet. Falls die Datei nicht existiert,
wird eine neue Datei mit dem Namen
charts.txt im Verzeichnis c:\charts\ angelegt.
Beachten Sie, dass die Escape-Sequenz
\\ einen einzelnen Backslash \ darstellt. Das Argu-
ment
"wb" hat folgende Bedeutung: Die Datei wird zum Schreiben geöffnet (w) und es wird
ein Bytestring (kein normaler String) gespeichert (
b).
print("Eintragungen (mit ENTER beenden)")
titel = input("Titel: ")
wh i l e ti t el: #1
interpret = input("Interpret: ")
charts += [[0,titel, interpret]]
titel = input("Titel: ")
print()
print("Vielen Dank. Die Liste wird gespeichert")
def speichern (charts):
im p o rt p i ckle #2
f = open("c:\\charts\\charts.txt","wb") #3
pi c k le. d ump( c har t s , f) #4
f. c l ose ( ) #5
def ausgabe(charts):
print("Die Charts")
print("----------")
for i in range (len(charts)): #6
eintrag = charts[i]
print("Platz", i+1, ":", eintrag[1], "\t von",
eintrag[2], "\t", eintrag[0], "Stimmen")
# Hauptprogramm
print("Erstellen Sie eine Hitliste.")
charts = []
eingabe(charts)
ausgabe(charts)
speichern(charts)
219
7.4
Listen
#4: Die Liste charts wird im File-Objekt f in Form eines Bytestrings abgespeichert.
#5: Die Datei wird geschlossen und damit physisch gespeichert.
#6: Die Tabelle mit den Musiktiteln wird zeilenweise ausgegeben. Die Escape-Sequenz \t
repräsentiert ein Tabulatorzeichen.
Programmlauf:
Nun das Voting-Programm. Folgende Teilaufgaben sind zu lösen, für die wiederum jeweils
eine Funktion definiert wird:
Laden der Charts aus einer Datei
Ausgabe der Charts auf dem Bildschirm
Stimmabgabe (Voting) und Neusortieren der Liste
Speichern der Liste (mit aktualisierter Stimmenverteilung)
Erstellen Sie eine Hitliste.
Eintragungen (mit ENTER beenden)
Titel: Ohne dich
Interpret: Nicole
Titel: Nur mit dir
Interpret: Sascha
Titel: Du allein
Interpret: Natascha
Titel: Einsam
Interpret: Rudi
Titel:
Vielen Dank. Die Liste wird gespeichert
Die Charts
----------
Platz 1 : Ohne dich von Nicole 0 Stimmen
Platz 2 : Nur mit dir von Sascha 0 Stimmen
Platz 3 : Du allein von Natascha 0 Stimmen
Platz 4 : Einsam von Rudi 0 Stimmen
# chartsvoting.py
import pickle
# Funktionsdefinitionen
def laden():
t r y :
f = open("c:\\charts\\charts.txt","rb") #1
c h arts = pic k le. l o ad( f ) #2

Get Python 3 - Lernen und professionell anwenden now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.