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

#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.
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.
#8

von AnnaIhrs (460 Punkte)
- 06.06.2016 um 00:35 Uhr

#!/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 " + str(1) + ":" + str(runden), "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
Seite 1 von 0
1