Python :: Aufgabe #3 :: Lösung #17

17 Lösungen Lösungen öffentlich
#3

Lotto - Simulation - 6 aus 49

Anfänger - Python von Gustl - 25.11.2012 um 16:16 Uhr
Schreiben Sie ein Programm, welches 6 Zahlen zwischen 1 und 49 abfrägt. Danach soll das Programm solange 6 Zufallszahlen berechnen bis alle 6 eingegebenen Zahlen übereinstimmen. Natürlich darf eine Zahl nicht zweimal vorkommen.
Dann soll ausgegeben werden nach wie vielen "Spielen" ein 6er erzielt wurde und wie hoch die Chance auf einen 3er, einen 4er und einen 5er war.
#17
vote_ok
von PythonLui (400 Punkte) - 07.04.2021 um 14:46 Uhr
Quellcode ausblenden Python-Code
# Schreiben Sie ein Programm, welches 6 Zahlen zwischen 1 und 49 abfragt.
# Danach soll das Programm solange 6 Zufallszahlen berechnen bis alle 6 eingegebenen Zahlen übereinstimmen.
# Natürlich darf eine Zahl nicht zweimal vorkommen.
# Dann soll ausgegeben werden nach wie vielen "Spielen" ein 6er erzielt wurde
# und wie hoch die Chance auf einen 3er, einen 4er und einen 5er war.

import random

def lotto_zahlen_einlesen():
    """
    Liest die Lottozahlen des Spielers ein 
    :return: Lottozahlen als list[int] 
    """
    lotto_zahlen = []
    # Solange bis 6 Zahlen in der Liste stehen
    while len(lotto_zahlen) < 6:
        eingabe = input(f"{len(lotto_zahlen)+1}. Zahl: ")
        # Überprüfung ob Eingabe Ziffern zwischen 1 - 49 und noch nicht vorhanden sind
        if eingabe.isdigit() and 0 < int(eingabe) < 50 and (int(eingabe) not in lotto_zahlen):
            lotto_zahlen.append(int(eingabe))
        else:
            print("Bitte nur eine Zahl zwischen 1 und 49 eingeben! Die Zahl darf nur einmal vorkommen!")
            print("Ihre bisherigen Lottozahlen: ", " ".join([str(_) for _ in lotto_zahlen]))

        lotto_zahlen.sort()
    return lotto_zahlen

def zufall_lotto_zahlen_erstellen():
    """
    Liest die Zufällig generierten Lottozahlen ein 
    :return: Zufällige Lottozahlen als list[int]
    """
    zufall_lotto_zahlen = []
    # Solange bis 6 Zahlen in der Liste stehen
    while len(zufall_lotto_zahlen) < 6:
        zufall_zahl = random.randint(1, 49)
        # Überprüfung ob Zahl noch nicht vorhanden ist
        if zufall_zahl not in zufall_lotto_zahlen:
            zufall_lotto_zahlen.append(zufall_zahl)

    zufall_lotto_zahlen.sort()
    return zufall_lotto_zahlen

# Aufruf der Funktion für Spieler Lottozahlen
lotto_spieler = lotto_zahlen_einlesen()

anzahl_ziehungen = 0
dreier = 0
vierer = 0
fuenfer = 0

while True:
    anzahl_ziehungen += 1
    lotto_zufall = zufall_lotto_zahlen_erstellen()
    anzahl_richtige = 0
    # Überprüfen wie viele richtige vorhanden sind
    for i in lotto_spieler:
        if i in lotto_zufall:
            anzahl_richtige += 1
    # Zählen der dreier, vierer und fünfer bei einem sechser wird abgebrochen
    if anzahl_richtige == 3:
        dreier += 1
    elif anzahl_richtige == 4:
        vierer += 1
    elif anzahl_richtige == 5:
        fuenfer += 1
    elif anzahl_richtige == 6:
        break

# Ausgabe der Ergebnisse
print()
print("Deine Lottozahlen:", " ".join([str(_) for _ in lotto_spieler]))
print(f"Ein sechser bzw. der Jackpott wurde nach {anzahl_ziehungen:,d} Ziehungen erreicht")
print(f"Die Chance einen dreier zu bekommen liegt bei {dreier/anzahl_ziehungen*100:.2f}%")
print(f"Die Chance einen vierer zu bekommen liegt bei {vierer/anzahl_ziehungen*100:.2f}%")
print(f"Die Chance einen fünfer zu bekommen liegt bei {fuenfer/anzahl_ziehungen*100:.2f}%")


Ergebnis:

1. Zahl: 1
2. Zahl: 2
3. Zahl: 3
4. Zahl: 4
5. Zahl: 5
6. Zahl: 6

Deine Lottozahlen: 1 2 3 4 5 6
Ein sechser bzw. der Jackpott wurde nach 19,145,690 Ziehungen erreicht
Die Chance einen dreier zu bekommen liegt bei 1.77%
Die Chance einen vierer zu bekommen liegt bei 0.10%
Die Chance einen fünfer zu bekommen liegt bei 0.00%

Kommentare:

Für diese Lösung gibt es noch keinen Kommentar

Bitte melden Sie sich an um eine Kommentar zu schreiben.
Kommentar schreiben
2103731

Du scheinst einen AdBlocker zu nutzen. Ich würde mich freuen, wenn du ihn auf dieser Seite deaktivierst und dich davon überzeugst, dass die Werbung hier nicht störend ist.