Python Tutorial
- jetzt Python programmieren lernen

Lotto Simulator programmieren – 6 aus 49

Als folgende Aufgabe lernen wir den Python-Befehl range anzuwenden und erweitern unser Wissen über Listen und Methoden bei Listen.

Bei einem Lotto-Simulator mit einer Ziehung von 6 Zahlen aus 49 möglichen Zahlen darf keine Zahl doppelt vorkommen. Wäre sonst sehr merkwürdig. Daher fällt dafür die Methode über random.randint(1, 50) aus. Man könnte damit auch eine Umsetzung einer Simulation der Ziehung von Lottozahlen programmieren – nur der Aufwand ist deutlich zu hoch (genau aus dem Problem der eventuell doppelten Zahlen).

Also erstellen wir uns als erstes eine Liste aller möglichen Zahlen über range(1,50). Als Start beginnen wir bei 1 und lassen range bis 50 laufen – was bewirkt, dass wir alles Zahlen von 1 bis einschließlich 49 bekommen.

Für die Zufallsfunktion nutzen wir sample(). Hier wird in der Klammer die Liste und die gewünschte Anzahl angegeben:

lottozahlen_gewinner = random.sample(lottozahlen_alle, 6)

Bevor man die unten folgenden Schritt für Schritt Lösung liest, bitte selber testen! Es gibt auch mehrere Wege nach Rom. Es muss nicht unbedingt sample() genutzt werden.

Lösung: Lotto Simulator in Python

Wir benötigen dazu eine leere Liste:

lottozahlen_alle = []

Diese Liste erweitern wir über extend. Hier bitte nicht auf die Python-Anweisung append reinfallen.

lottozahlen_alle = []
lottozahlen_alle.extend(range(1,50))
print(lottozahlen_alle)

Ab jetzt gibt es mehrere Möglichkeiten ans Ziel. Benutzen wir als erstes die einfachste. Python soll uns einfach 6 Einträge aus unserer Liste aller Lottozahlen per Zufall auswählen. Dazu gibt es die Anweisung sample(). Diese Anweisung ist in dem Modul random integriert – sprich wir müssen dieses am Anfang importieren!

Wir lassen das Ergebnis von sample() einer neuer Liste mit dem Namen „lottozahlen_gewinner“ zuweisen.

import random
lottozahlen_alle = []
lottozahlen_alle.extend(range(1,50))
lottozahlen_gewinner = random.sample(lottozahlen_alle, 6)
print(lottozahlen_gewinner)

Wir erhalten nun als Ergebnis:

[33, 36, 2, 3, 40, 12]

Es fällt auf, dass wir eine wild gemischte Liste erhalten. Erst einmal erstaunlich, da die ursprüngliche Gesamtliste „lottozahlen_alle“ aufsteigend sortiert ist.

Lassen wir einfach noch sortieren und dann erst ausgeben:

import random
lottozahlen_alle = []
lottozahlen_alle.extend(range(1,50))
lottozahlen_gewinner = random.sample(lottozahlen_alle, 6)
lottozahlen_gewinner.sort()
print(lottozahlen_gewinner)

Wichtig ist: es ist keine Zahl doppelt! Das ist der große Unterschied zu dem Einsatz von choices(). Der Vollständigkeit halber hier auch eine Ausgabe damit. Bei dieser Anweisung muss über „k=6“ die gewünscht Anzahl mitgegeben werden.

import random
lottozahlen_alle = []
lottozahlen_alle.extend(range(1,50))
lottozahlen_gewinner = random.sample(lottozahlen_alle, 6)
lottozahlen_gewinner.sort()
print(lottozahlen_gewinner)
print(random.choices(lottozahlen_alle, k=6))

Das Ergebnis:

[12, 16, 20, 22, 28, 45]
[34, 15, 22, 32, 18, 32]

Die erste Zeile kommt von sample() und die zweite Zeile von choices(). In der zweiten Zeile ist dir 32 doppelt. Einfach einmal testen.

weitere Möglichkeiten über Mischen „shuffle()“

Eine weitere Möglichkeit stellt das mischen über shuffle dar. Auch dafür müssen wir im ersten Schritt „random“ importieren. Wir lassen unsere Liste mit allen Lottozahlen kräftig mischen und holen uns dann einfach die ersten 6 Zahlen aus der gemischten Liste. Zum Auslesen aus der Liste setzen wir die Kombination einer for-Schleife mit range() ein.

import random
lottozahlen = []
lottozahlen.extend(range(1,50))
random.shuffle(lottozahlen)
for x in range(6):
	print(lottozahlen[x])

Und nun viel Spaß beim Lotto spielen mit Python.