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

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.
#14
vote_ok
von flydner (20 Punkte) - 09.09.2017 um 21:35 Uhr
Quellcode ausblenden Python-Code
import random, time
random.seed()

usernumbers = []
randomnumbers = []
draws = 0
dreier = 0
vierer = 0
fünfer = 0

print("Willkommen beim Lotto-Simulator!")
print("Sie werden nun dazu aufgefordert 6 Zahlen von 1 - 49 einzugeben.")
print("Bitte verwenden Sie nur ganze Zahlen und keine Doppelten.")

while (len(usernumbers) < 6):
	try:
		x = int(input("Bitte "+str(len(usernumbers)+1)+". Zahl eingeben.	"))
		if x < 1 or x > 49 or x in usernumbers:
			print("Bitte nur Zahlen im Bereich 1 - 49 und keine Doppelten Zahlen verwenden.")
			print("Sie werden nun erneut aufgefordert, eine Zahl einzugeben.")
		else:
			usernumbers.append(x)
			usernumbers.sort()
			if len(usernumbers) == 6:
				print("Ihre finalen Zahlen:",str(usernumbers))
			else:
				print("Ihre bisherigen Zahlen:",str(usernumbers))
			
	except:
		print("Bitte nur ganze Zahlen verwenden.")
		print("Sie werden nun erneut aufgefordert, eine Zahl einzugeben.")

starttime = time.time()
while True:
    y = random.randint(1,49)
    if y in randomnumbers:
        continue
    else:
        randomnumbers.append(y)
    if len(randomnumbers) == 6:
        randomnumbers.sort()
        print(randomnumbers)
        draws = draws + 1
        joinednumbers = list(usernumbers + randomnumbers)
        if len(set(joinednumbers)) == 9:
            dreier = dreier + 1
        if len(set(joinednumbers)) == 8:
            vierer = vierer + 1
        if len(set(joinednumbers)) == 7:
            fünfer = fünfer + 1
        if len(set(joinednumbers)) == 6:
            break
        randomnumbers.clear()
        joinednumbers.clear()

endtime = time.time()
sekunden = round(endtime - starttime,2)
minuten = round(sekunden / 60,2)
stunden = round(minuten / 60,2)
drawspersec = round(draws / sekunden,2)
print(" ")
print("Gewonnen!")
print("Zahlen:",randomnumbers)
print("Nach", draws,"Ziehungen, in:", sekunden, "Sekunden.")
print("Das sind", minuten, "Minuten oder", stunden, "Stunden.")
print("Das entspricht", drawspersec, "Ziehungen pro Sekunde!")
print("Währenddessen hattest du", dreier,"mal drei Richtige,")
print(vierer, "mal vier Richtige und", fünfer, "mal fünf Richtige!")
print("Chance auf 3er: 1 zu",str(round(draws/dreier,2)),"/ 4er: 1 zu ",str(round(draws/vierer,2)))
print("Chance auf 5er: 1 zu",str(round(draws/fünfer,2)),"/ 6er: 1 zu ",str(draws))


Beispiel Ausgabe:
Willkommen beim Lotto-Simulator!
Sie werden nun dazu aufgefordert 6 Zahlen von 1 - 49 einzugeben.
Bitte verwenden Sie nur ganze Zahlen und keine Doppelten.
Bitte 1. Zahl eingeben. siebzehn
Bitte nur ganze Zahlen verwenden.
Sie werden nun erneut aufgefordert, eine Zahl einzugeben.
Bitte 1. Zahl eingeben. 16.5
Bitte nur ganze Zahlen verwenden.
Sie werden nun erneut aufgefordert, eine Zahl einzugeben.
Bitte 1. Zahl eingeben. 200
Bitte nur Zahlen im Bereich 1 - 49 und keine Doppelten Zahlen verwenden.
Sie werden nun erneut aufgefordert, eine Zahl einzugeben.
Bitte 1. Zahl eingeben. 17
Ihre bisherigen Zahlen: [17]
Bitte 2. Zahl eingeben. 17
Bitte nur Zahlen im Bereich 1 - 49 und keine Doppelten Zahlen verwenden.
Sie werden nun erneut aufgefordert, eine Zahl einzugeben.
Bitte 2. Zahl eingeben. 1
Ihre bisherigen Zahlen: [1, 17]
Bitte 3. Zahl eingeben. 31
Ihre bisherigen Zahlen: [1, 17, 31]
Bitte 4. Zahl eingeben. 8
Ihre bisherigen Zahlen: [1, 8, 17, 31]
Bitte 5. Zahl eingeben. 12
Ihre bisherigen Zahlen: [1, 8, 12, 17, 31]
Bitte 6. Zahl eingeben. 27
Ihre finalen Zahlen: [1, 8, 12, 17, 27, 31]

#3510655 Ziehungen#

Gewonnen!
Zahlen: [1, 8, 12, 17, 27, 31]
Nach 3510655 Ziehungen, in: 115.81 Sekunden.
Das sind 1.93 Minuten oder 0.03 Stunden.
Das entspricht 30313.92 Ziehungen pro Sekunde!
Währenddessen hattest du 62169 mal drei Richtige,
3392 mal vier Richtige und 59 mal fünf Richtige!
Chance auf 3er: 1 zu 56.47 / 4er: 1 zu 1034.98
Chance auf 5er: 1 zu 59502.63 / 6er: 1 zu 3510655

Kommentare:

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

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

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.