Lottozahlen der Reihe nach durchlaufen
Zielsetzung
Wir gehen von einer Ziehung (ohne Zusatzzahl) aus:
Zusätzlich soll ein Tipp gegeben sein:
Beide Zahlenfolgen - die Zahlen einer Lotto-Ziehung (ohne Zusatzzahl) und die Zahlen eines Tipps - sollen jeweils mit einer Liste verwaltet werden:
Beachte, dass die Listenelemente - beginnend mit 0 - mit einem Index durchnummeriert sind.
Ziel ist es, die Anzahl der richtig getippten Zahlen mit einem Programm zu ermitteln. Im vorliegenden Fall müsste das Programm "2 Richtige" ausgeben.
Eine Strategie besteht darin, der Reihe nach alle Zahlen der Ziehung zu durchlaufen und dabei zu überprüfen, ob sie im Tipp vorkommen oder nicht.
Bevor wir ein Programm zu dieser Stratgie entwickeln, müssen wir erst einmal das Durchlaufen einer Liste genauer betrachten.
Eine Liste über den Index durchlaufen
Das folgende Demo-Programm zeigt, wie man eine Liste durchläuft, indem man Schritt für Schritt über den Index auf die einzelnen Listenelemente zugreift.
# Initialisierung
ziehung = [25, 40, 44, 1, 45, 21]
# Verarbeitung und Ausgabe
i = 0
while i < len(ziehung):
print(ziehung[i])
i = i+1
Aufgabe 1
(a) Was leistet das Programm? Kannst du es - ohne vorheriges Testen - vorhersagen?
(b) Ergänze das Programm so, dass man folgende Ausgabe erhält:
>>> Kugel 1 : 25 Kugel 2 : 40 Kugel 3 : 44 Kugel 4 : 1 Kugel 5 : 45 Kugel 6 : 21
(c) Teste auch das folgende Programm. Was leistet der range
-Operator?
# Initialisierung ziehung = [25, 40, 44, 1, 45, 21] # Verarbeitung und Ausgabe for i in range(len(ziehung)): print(i) print(ziehung[i])
Eine Liste über die Elemente durchlaufen
In Python kann man Listen auch direkt über die Elemente durchlaufen.
# Initialisierung ziehung = [25, 40, 44, 1, 45, 21] # Verarbeitung und Ausgabe for z in ziehung: print(z)
Aufgabe 2
Teste auch dieses Programm.
Anzahl der Richtigen bestimmen
Jetzt können wir Programme zur Bestimmung der Anzahl der richtig getippten Zahlen entwickeln. Wir benutzen hierzu die folgende Strategie: Vergleiche jede Zahl der Ziehung mit jeder Zahl des Tipps.
Aufgabe 3
(a) Das folgende Programm liefert ein Gerüst, mit dem man jede Zahl der Liste ziehung
mit jeder Zahl der Liste tipp
vergleichen könnte. Teste erst einmal das vorgegebene Programm.
Ergänze anschließend den noch fehlenden Vergleich.
# Initialisierung
ziehung = [25, 40, 44, 1, 45, 21]
tipp = [1, 12, 21, 31, 37, 46]
# Verarbeitung
richtige = 0
i = 0
while i < len(ziehung):
j = 0
while j < len(tipp):
print('vergleiche: ', ziehung[i], tipp[j])
# ...
j = j+1
i = i+1
# Ausgabe
print(richtige)
(b) Man kann beide Listen auch direkt durchlaufen. Das Programm wird dann einfacher. Ergänze auch hier den noch fehlenden Vergleich.
# Initialisierung ziehung = [25, 40, 44, 1, 45, 21] tipp = [1, 12, 21, 31, 37, 46] # Verarbeitung richtige = 0 for z in ziehung: for t in tipp: print('vergleiche: ', z, t) # ... # Ausgabe print(richtige)
(c) Teste auch das folgende Programm. Was leistet es? Kannst du das auch erklären?
# Initialisierung ziehung = [25, 40, 44, 1, 45, 21] tipp = [1, 12, 21, 31, 37, 46] # Verarbeitung richtige = 0 for z in ziehung: if z in tipp: richtige = richtige + 1 # Ausgabe print(richtige)
Aufgabe 4
Die Lotto- und Tippzahlen sollen hier ebenfalls mit Listen verwaltet werden, aber auf eine etwas andere Weise.
Ergänze das Programm so, dass man die Anzahl der Richtigen erhält.
# Initialisierung ziehung = [ True , False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, True , False, False, False, True , False, False, False, False, False, False, False, False, False, False, False, False, False, False, True , False, False, False, True , True , False, False, False, False, ] tipp = [ True , False, False, False, False, False, False, False, False, False, False, True , False, False, False, False, False, False, False, False, True , False, False, False, False, False, False, False, False, False, True , False, False, False, False, False, True , False, False, False, False, False, False, False, False, True , False, False, False, ] # Verarbeitung richtige = 0 # ... # Ausgabe print(richtige)