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

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.
#7
vote_ok
von AnnaIhrs (460 Punkte) - 05.06.2016 um 14:04 Uhr
Quellcode ausblenden Python-Code
#!/usr/bin/python3
# -*- encoding: utf-8 -*-
#
#>>>autor:      Sebastian Müller
#>>>licence:    GPL
#>>>contact:    mypythonmueller@gmail.com

# programm nach volgender aufgabenstellung
# 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.

# Abfrage der 6 lottozahlen die dann "gespielt" werden sollen, falsche eingaben oder zahlen
# auserhalb 1-49als auch 2mal die selbe zahl einzugeben ist nicht möglich die abfrage einer neuen
# richtigen zahl wird verlangt
playset = set([])
print("Bitte die Zahlen, die du spielen möchtest eingeben: ")
while len(playset) != 6:
    setzahler = len(playset) + 1
    vorstr = str(setzahler) + ": "
    try:
        pzahl = int(input(vorstr))
        if pzahl < 1:
            print(">>>" , pzahl, "ist keine Lottozahl")
            continue
        if pzahl > 49:
            print(">>>" , pzahl, "ist keine Lottozahl")
            continue
        if pzahl in playset:
            print(">>>" ,pzahl, "wurde bereits eingegeben")
            continue
    except:
        print("Eingabe war nicht korrekt")
        continue
    playset.add(pzahl)

# zufallsgenerator
import random

# programm zum auszählen

# zähler initialisieren
runden = 0
dreier = 0
vierer = 0
fuenfer = 0
sechser = 0

#set für prüfzahlen
zugset = set([])


#schleife die solange läuft bis sechser getroffen wurde
while not sechser:

#rundenzähler
    runden += 1

# ausgabe alle 250000 runden zur information wie viele runden schon duchlaufen
# wurden und dass programm noch läuft
    if runden % 250000 == 0:
        print("Bisher durchlaufene Runden ohne Sechser:", runden)

# vergleichsmenge auf null
    zugset.clear()

# vergleichszahlen ermitteln
    while len(zugset) != 6:
        zahl = random.randint(1, 49)
        zugset.add(zahl)
    treffer = playset & zugset

# treffer auszählen
    if len(treffer) == 6:
        sechser = 1
    elif len(treffer) == 5:
        fuenfer += 1
    elif len(treffer) == 4:
        vierer += 1
    elif len(treffer) == 3:
        dreier += 1

# funktionen für brüche aufrufen und runden zu zahlen übergeben, damit die
# warscheinlichkeiten automatisch auf die kleinst möglichen zahlen gekürzt werden
import fractions
fdreier = fractions.Fraction(dreier, runden)
fvierer = fractions.Fraction(vierer, runden)
ffuenfer = fractions.Fraction(fuenfer, runden)

# ausgabe
print("Benötigte Runden bis der Sechser erzielt wurde:", runden)
print("Der Sechser also mit einer Wahrscheinlichkeit von", wsechser,
    "oder ", str(1 / runden) + "%")
print()
print("In dieser Zeit wurde der Fünfer", fuenfer,"mal getroffen.")
print("Also mit einer Wahrscheinlichkeit von "+ str(ffuenfer.numerator) + ":" +
    str(ffuenfer.denominator) +" oder der mit ",
    str(fuenfer / runden) + "%")
print()
print("Der Vierer wurde", vierer,"mal getroffen.")
print("Also mit einer Wahrscheinlichkeit von " + str(fvierer.numerator) + ":" +
    str(fvierer.denominator) + " oder der mit ",
    str(vierer / runden) + "%")
print()
print("Und der Dreier wurde", dreier,"mal getroffen.")
print("Also mit einer Wahrscheinlichkeit von " + str(fdreier.numerator) + ":" +
    str(fdreier.denominator), "oder der mit",
    str(dreier / runden) + "%")

Kommentare:

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

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