Python :: Aufgabe #3
17 Lösungen

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.
Lösungen:

import random print "Lottozahlen Zufalls-Generator" print "Bitte Zahlen zwischen 1 -49 eingeben" input = set() drawing = set() for i in range(6): x = int(raw_input('Ziffer: ')) if x < 0 or x > 50 or x in input: print "Zahl entspricht nicht den Vorgaben" input.add(x) counter = 0 includes = False one = False two = False three = False four = False five = False six = False while includes == False: drawing.clear() for j in range(6): drawing.add(random.randint(1, 49)) if len(drawing) == 6: counter += 1 if len(input&drawing) == 6: includes = True six = True if counter == 1: print ("6 richtige Zahlen --> 1 Versuch") else: print ("6 richtige Zahlen --> %s Versuche" % counter) if len(input&drawing) == 5 and five == False: five = True if counter == 1: print ("5 richtige Zahlen --> 1 Versuch") else: print ("5 richtige Zahlen --> %s Versuche" % counter) if len(input&drawing) == 4 and four == False: four = True if counter == 1: print ("4 richtige Zahl --> 1 Versuch") else: print ("4 richtige Zahlen --> %s Versuche" % counter) if len(input&drawing) == 3 and three == False: three = True if counter == 1: print ("3 richtige Zahlen --> 1 Versuch") else: print ("3 richtige Zahlen --> %s Versuche" % counter) if len(input&drawing) == 2 and two == False: two = True if counter == 1: print ("2 richtige Zahl --> 1 Versuch") else: print ("2 richtige Zahlen --> %s Versuche" % counter) if len(input&drawing) == 1 and one == False: one = True if counter == 1: print ("1 richtige Zahl --> 1 Versuch") else: print ("1 richtige Zahl --> %s Versuche" % counter)

__author__ = 'sebbi' print('Hier die Lottozahlen für die nächste Ziehung') print('(Mit einer Wahrscheinlichkeit von 1:139.838.160)') from random import randint l = [] zahl1 = randint(1, 49) zahl2 = randint(1, 49) while zahl2 == zahl1: zahl2 = randint(1, 49) zahl3 = randint(1, 49) while (zahl3 == zahl1) or (zahl3 == zahl2): zahl3 = randint(1,49) zahl4 = randint(1, 49) while (zahl4 == zahl1) or (zahl4 == zahl2) or (zahl4 == zahl3): zahl4 = randint(1, 49) zahl5 = randint(1, 49) while (zahl5 == zahl1) or (zahl5 == zahl2) or (zahl5 == zahl3) or (zahl5 == zahl4): zahl5 = randint(1, 49) zahl6 = randint(1,49) while (zahl6 == zahl1) or (zahl6 == zahl2) or (zahl6 == zahl3) or (zahl6 == zahl4) or (zahl6 == zahl5): zahl6 = randint(1, 49) l.append(zahl1) l.append(zahl2) l.append(zahl3) l.append(zahl4) l.append(zahl5) l.append(zahl6) l.sort() print(l) suzahl = randint(0, 9) print('Superzahl: ' + str(suzahl))

import random random.seed() spiele = 0 dreier = 0 vierer = 0 fuenfer = 0 liste_zahlen = [] liste_raten = [] while len(liste_zahlen) != 6: zahl = random.randint(1,49) if zahl in liste_zahlen: continue else: liste_zahlen.append(zahl) while True: spiele += 1 while len(liste_raten) != 6: zahl = random.randint(1,49) if zahl in liste_raten: continue else: liste_raten.append(zahl) laenge = len(set(liste_raten)&set(liste_zahlen)) if laenge == 3: dreier += 1 liste_raten.clear() continue elif laenge == 4: vierer += 1 liste_raten.clear() continue elif laenge == 5: fuenfer += 1 liste_raten.clear() continue elif laenge == 6: break else: liste_raten.clear() continue print("6er erzielt nach",spiele,"Spielen") print() print("Chance auf 3er: " + str(100*dreier/spiele) + "%") print("Chance auf 4er: " + str(100*vierer/spiele) + "%") print("Chance auf 5er: " + str(100*fuenfer/spiele) + "%")
Jetzt noch ein Programm mit Eingabeaufforderung, Try/Exceptions und CTRL+C-Abbruchbedingungen. Was koennte man noch daran basteln? Zugegeben, ich hatte langeweile ;-)
Python-Code

#!/usr/bin/env python # # author: Excpt0r # # use only with attribution, thanks! =) # import sys, signal, random def signal_handler(signal, frame): print('You fool pressed Ctrl+C! :)') sys.exit(0) def input(): numbers = [] for i in xrange(6): while True: try: signal.signal(signal.SIGINT, signal_handler) number = int(raw_input('Enter a number: ')) if (number < 1 or number > 49 or number in numbers): raise ValueError() numbers.append(number) break except ValueError: print('It must be an unique integer (number) from 1 to 49!') continue return numbers def gen_numbers(): gen_numbers = [] i = 0 while True: val = random.randint(1,49) if ( val not in gen_numbers and i < 7): gen_numbers.append(val) i += 1 if ( i == 6 ): return gen_numbers def proof_win(numbers1,numbers2): right = 0 same = [] for i in xrange(6): if ( numbers1[i] in numbers2 ): right += 1 same.append(True) else: same.append(False) if ( False in same ): return (False, right) else: return (True, right) def play(numbers1): print "\n" loose = True i = 0 j = 1 three, four, five = 0, 0, 0 while loose: numbers2 = gen_numbers() signal.signal(signal.SIGINT, signal_handler) if proof_win(numbers1,numbers2)[0]: print "\n6 Right! You, Madame or Sir, are a winner!" print "\nYour numbers: ", numbers1 print "\nThe random numbers: ", numbers2 loose = False i += 1 #if (i % 100000 == 0): # print "Versuch: ", j * 100000 # j += 1 if (proof_win(numbers1,numbers2)[1] == 3): three += 1 elif (proof_win(numbers1,numbers2)[1] == 4): four += 1 elif (proof_win(numbers1,numbers2)[1] == 5): five += 1 print "\nYou won after try: ", i print "\nYour change for three right is: ", float(100*three) / i, "%" print "\nYour chance for four right is: ", float(100*four) / i, "%" print "\nYour chance for five right is: ", float(100*five) /i, "%" def main(): print "\n\t This is a Lotto simulation!\n" numbers = input() play(numbers) return 0 if __name__ == "__main__": main()

#!/usr/bin/python # -*- coding: utf-8 -*- import random print "Dies ist ein Lotto-Simulator 6 aus 49." print "Es wird getestet nach wievielen Spielen\nDu einen 6er mit Deinen Zahlen erreicht\nhättest und wie hoch die Chance auf\neinen 3er, 4er und 5er war.\n" eingabe_liste = [] def tip_eingabe(): global eingabe_liste try: eingabe = input("Gib eine Zahl ein:\t") while 1 > eingabe or eingabe > 49 or eingabe in eingabe_liste: print "Du hast eine falsche Zahl eingegeben." eingabe = input("Gib eine Zahl ein:\t") eingabe_liste += [eingabe] except: print "Deine Eingabe war falsch." tip_eingabe() ausgabe_liste = [] def tip_ausgabe(): global ausgabe_liste ausgabe_liste = [] for i in range(6): zufallszahl = random.randrange(1, 49) while zufallszahl in ausgabe_liste: zufallszahl = random.randrange(1, 49) ausgabe_liste += [zufallszahl] dic_zwischengewinne = {"3er":0, "4er":0, "5er":0} def zwischengewinne(): global dic_zwischengewinne gleich = 0 for n in ausgabe_liste: if n in eingabe_liste: gleich += 1 if gleich == 3: dic_zwischengewinne["3er"] += 1 elif gleich == 4: dic_zwischengewinne["4er"] += 1 elif gleich == 5: dic_zwischengewinne["5er"] += 1 else: pass for i in range(6): tip_eingabe() eingabe_liste.sort() spiele = 0 while ausgabe_liste != eingabe_liste: tip_ausgabe() zwischengewinne() spiele += 1 ausgabe_liste.sort() print "\nDu hättest nach", spiele, "Spielen einen 6er gehabt." print "Die Chance einen 3er zu bekommen lag bei %.3f %s." % ((dic_zwischengewinne["3er"] * 100.0 / spiele), "%") print "Die Chance einen 4er zu bekommen lag bei %.3f %s." % ((dic_zwischengewinne["4er"] * 100.0 / spiele), "%") print "Die Chance einen 5er zu bekommen lag bei %.3f %s." % ((dic_zwischengewinne["5er"] * 100.0 / spiele), "%")

# coding: utf8 from random import randint sechser = [] zahl, durchlauf, treffer, dreier, vierer, fuenfer = 0, 0, 0, 0, 0, 0 print '''Deine Lotto - Simulation ------------------------ Bitte gib sechs Zahlen zwischen eins und 49 ein. Die Zahlen dürfen sich nicht wiederholen.''' # --- Eingabe --- while len(sechser) < 6: try: zahl = int(input(str(len(sechser)+1) + '. Zahl: ')) if zahl in range(1,50) and zahl not in sechser: sechser.append(zahl) else: print 'Es muss eine Zahl zwischen 1 und 49 sein' if len(sechser)>0: print 'und sie darf sich nicht wiederholen!' print 'Folgende Zahlen hast du bereits getippt:', for i in range(len(sechser)): print sechser[i], print '' except: print 'Es muss eine Zahl zwischen 1 und 49 sein' if len(sechser)>0: print 'und sie darf sich nicht wiederholen!' print 'Folgende Zahlen hast du bereits getippt:', for i in range(len(sechser)): print sechser[i], print '' print 'Dein 6er: ', for i in range(6): print sorted(sechser)[i], print '' # --- Berechnung --- while 1: zufall = [] for i in range(6): while zahl in zufall or zahl == 0: zahl = randint(1,49) else: zufall.append(zahl) durchlauf += 1 for i in range(6): if zufall[i] in sechser: treffer += 1 if treffer == 3: dreier =+ 1 elif treffer == 4: vierer += 1 elif treffer == 5: fuenfer += 1 elif treffer == 6: break treffer = 0 # --- Ausgabe --- print '------------------------' print 'Du hast nach '+ str(durchlauf) +' "Spielen" einen 6er erzielt' print 'Chance auf einen 3er:', float(100*dreier)/durchlauf, '%' print 'Chance auf einen 4er:', float(100*vierer)/durchlauf, '%' print 'Chance auf einen 5er:', float(100*fuenfer)/durchlauf, '%'
Beispiel-Ausgabe:
Dein 6er: 1 2 3 4 5 6
------------------------
Du hast nach 9247237 "Spielen" einen 6er erzielt
Chance auf einen 3er: 1.08140409941e-05 %
Chance auf einen 4er: 0.094979722051 %
Chance auf einen 5er: 0.00192489929695 %

#!/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) + "%")

#!/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) + "%")

# -*- coding: utf-8 -*- from random import randint spieler = [] lotto = [] dreier, vierer, fuenfer, versuche, treffer = 0, 0, 0, 0, 0 tipp = 1 aufforderung = "Zahl 1: " # Ziehung der 6 Zahlen def ziehung(a = []): while len(a) < 6: x = randint(1, 49) if x not in a: a.append(x) a.sort() return a print "Willkommen zur Lotto-Simulation 6 aus 49. Bitte 6 Zahlen \ tippen: \n" # Tippabgabe und Abfangen ungültiger Eingaben while len(spieler) < 6: eingabe = input(aufforderung) if eingabe > 49 or eingabe < 1: print "\nUngültige Eingabe!\n" elif eingabe in spieler: print "\nDie Zahl", eingabe, "wurde bereits getippt!\n" else: spieler.append(eingabe) tipp = tipp + 1 aufforderung = "Zahl " + str(tipp) + ": " spieler.sort() print "\nDeine Tippabgabe: ", spieler print "\nBitte warten. Simulation läuft..." while spieler != lotto: lotto = [] treffer = 0 versuche = versuche + 1 lotto = ziehung([]) # Wahrscheinlichkeit für 3er, 4er und 5er ermitteln for i in lotto: if i in spieler: treffer = treffer + 1 if treffer == 3: dreier = dreier + 1 elif treffer == 4: vierer = vierer + 1 elif treffer == 5: fuenfer = fuenfer + 1 lotto.sort() print "" print "Du hast nach", versuche, "Versuchen einen 6er erzielt\n\n" print "*" * 40 print "Chance für einen 3er: ", float(dreier * 100) / versuche, "%" print "Chance für einen 4er: ", float(vierer) * 100 / versuche, "%" print "Chance für einen 5er: ", float(fuenfer) * 100 / versuche, "%"

#!/usr/bin/env python3 from random import randint in49 = [] in49shuffing = [] def lotto(): """ Lets play Lotto """ print("Bitte 6 zahlen zwischen 1 und 49 wählen: ") z1,z2,z3,z4,z5,z6 = 0,0,0,0,0,0 # fill variable for i in z1,z2,z3,z4,z5,z6: i = input() i = int(i) if i <1 or i >49: validIn(i) elif i in in49: alreadyIn(i) else: in49.append(i) in49.sort() print("Ihre Eingabe ist: ",in49) print("Lottozahlen werden gewürfelt, bitte warten ...") # play Lotto roundAll, round5, round4 = 0,0,0 while in49 != in49shuffing: del in49shuffing[:] lottoDigits() in49shuffing.sort() counter = 0 for i in range(0,6): if in49shuffing[i] in in49: counter += 1 if counter == 4: round4 += 1 if counter == 5: round5 += 1 roundAll += 1 # print result print ("Lottozahlen: ", in49shuffing, "in der",roundAll, "Runde") print ("Die Wahrscheinlichkeit auf einen 6er im Lotto betrug: ", 100/roundAll, "%" ) print ("Die Wahrscheinlichkeit auf einen 5er im Lotto betrug: ", round5 * 100/roundAll, "%" ) print ("Die Wahrscheinlichkeit auf einen 4er im Lotto betrug: ", round4 * 100/roundAll, "%" ) def alreadyIn(elem): """ check if number already in list""" print("Die Eingabe",elem," wurde schon ausgewählt. Neuer Versuch: ") elem = input() elem = int(elem) if elem < 0 or elem > 49: validIn(elem) else: in49.append(elem) def validIn(elem): """ check if number is valid in range 1 to 49 """ print ("Die Eingabe",elem," ist ungültig. Neuer Versuch: ") elem = input() elem = int(elem) if elem in in49: alreadyIn(elem) else: in49.append(elem) def lottoDigits(): """ generate a list with 6 int between 1 and 49 """ while len(in49shuffing) != 6: lZ = randint(1,49) if lZ not in in49shuffing: in49shuffing.append(lZ) in49shuffing.sort() def main(): lotto() if __name__ == "__main__": main()
LG, Ah3
Mein erstes : )
Stelle es nur ein weil's so viel kürzer wie eure ist..
Python-Code
Stelle es nur ein weil's so viel kürzer wie eure ist..

""" 6 aus 49 """ import random versuche = 0 dreier = 0 vierer = 0 fuenfer = 0 deinezahlen = [] zahlenraum = range(1, 50) dierichtigen = random.sample(zahlenraum, 6) dierichtigen.sort() while deinezahlen != dierichtigen: deinezahlen = random.sample(zahlenraum, 6) deinezahlen.sort() versuche += 1 stimmig = set(deinezahlen).intersection(dierichtigen) if len(stimmig) == 3: dreier += 1 if len(stimmig) == 4: vierer += 1 if len(stimmig) == 5: fuenfer += 1 print "Die 6 Richtigen: ", dierichtigen dreierratio = (float(dreier)/versuche)*100 viererratio = (float(vierer)/versuche)*100 fuenferratio = (float(fuenfer)/versuche)*100 print versuche," Versuche." print dreier," mal 3 Richtige. Das entspricht ",dreierratio,"% der Versuche." print vierer," mal 4 Richtige. Das entspricht ",viererratio,"% der Versuche." print fuenfer," mal 5 Richtige. Das entspricht ",fuenferratio,"% der Versuche."

# Lotto import random treffer, dreier, vierer, fünfer, x, y, z, a = 0, 0, 0, 0, 0, 0, 0, [] print("Ziehe sechs Kugeln zwischen 1 und 49") while y != 6: z = int(input("Zahl: ")) if z in a or z < 1 or z > 49: print("Bitte eine Zahl zwischen 1 und 49 ohne Wiederholungen !!") else: a.append(z), a.sort() print ("Deine Wahl:", a) y += 1 while treffer != 6: x += 1 b = (random.sample(range(1, 50), 6)) c = [i for i in a if i in b] treffer = len(c) if treffer == 3: dreier += 1 elif treffer == 4: vierer += 1 elif treffer == 5: fünfer += 1 print (dreier, "Dreier,", vierer, "Vierer und", fünfer, "Fünfer in", x, "Tipps") elif treffer == 6: print ("Die Ziehung brauchte", x, "Tipps bis zum Sechser,") print ("inkl.", fünfer, "Fünfer =", round(fünfer*100/x, 5), "% Chance,") print ("inkl.", vierer, "Vierer =", round(vierer*100/x, 5), "% Chance,") print ("inkl.", dreier, "Dreier =", round(dreier*100/x, 5), "% Chance.")
Meine Version:
Python-Code

# lottoziehung.py from random import randint def lottoziehung(): lotto = [] for i in range(6): zahl = randint(1,49) while zahl in lotto: zahl = randint(0,49) lotto.append(zahl) return lotto zahlen = [] for i in range(6): zahl = int(input("Geben Sie eine Lottozahl ein: ")) while zahl in zahlen or zahl < 1 or zahl > 49: zahl = int(input("Ungültige Zahl! Neue Eingabe: ")) zahlen.append(zahl) ziehungen = 0 zaehler = 0 lottoliste = [] while True: zaehler = 0 ziehungen += 1 lotto = lottoziehung() print(lotto) for i in zahlen: if i in lotto: zaehler += 1 lottoliste.append(zaehler) if zaehler == 6: break else: continue vierer = 0 fuenfer = 0 sechser = 0 dreier = 0 for element in lottoliste: if element == 4: vierer += 1 elif element == 3: dreier += 1 elif element == 5: fuenfer += 1 elif element == 6: sechser += 1 print(lottoliste) print("In " + str(ziehungen) + " Ziehungen hast du " + str(sechser) + " Mal im Lotto gewonnen. Dabei hast du " + str(fuenfer) + " Mal fünf, " + str(vierer) + " Mal vier und " + str(dreier) + " Mal drei richtige erzielt.")

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

import random tipp=[26,2,12,40,36,32,1] gezogen=list() i=0 end=False while end==False: i+=1 zahlen= list(range(1,50)) for rounds in range(1,8): rnd = random.choice(zahlen) zahlen.remove(rnd) if rnd not in tipp:break if rounds ==7: print('ENDE') end=True break print(i) print(zahlen)

from random import randrange def gen_lottozl() : lz = [] while len(lz) != 6 : lottozahl = randrange(1, 50) if lottozahl not in lz : lz.append(lottozahl) #print("Zahl erstellt ..") else : #print("Doppelte Zahl ...") continue return lz tipp = [] for i in range(6) : while True : try : eingabe = (int(input("Bitte Zahl eingeben: "))) if eingabe in range(1, 50) : if eingabe in tipp : print("Die Zahl haben Sie bereits getippt. Geben Sie eine neue ein: ") input.add(eingabe) tipp.append(eingabe) else : print('Die Lottozahl muss zwischen 1 und 49 liegen! Bitte erneut probieren.') input.add(eingabe) break except : print("Die Eingabe ist keine Zahl ! Bitte erneut probieren.") tipp.sort() lottozahlen = gen_lottozl() lottozahlen.sort() #print(("Ihr Tipp für die Lottozahlen ist :") + str(tipp)) #print(("Die gezogenen Lottozahlen sind :") + str(lottozahlen)) counter = 0 dreirichtige = 0 vierrichtige = 0 fuenfrichtige = 0 while (str(tipp)) != (str(lottozahlen)): lottozahlen = gen_lottozl() lottozahlen.sort() counter += 1 print (str(counter) + (" Lottoziehungen")) print (str(lottozahlen)) print (str(tipp)) r1 = lottozahlen.count(tipp[0]) r2 = lottozahlen.count(tipp[1]) r3 = lottozahlen.count(tipp[2]) r4 = lottozahlen.count(tipp[3]) r5 = lottozahlen.count(tipp[4]) r6 = lottozahlen.count(tipp[5]) richtige = r1+r2+r3+r4+r5+r6 print (str(richtige)) if richtige == 3: dreirichtige +=1 if dreirichtige >=1: r3c = (((dreirichtige/counter) * 100)) print(str(round(r3c,4))+ (" % Chance auf drei Richtige.")) #print(str(dreirichtige) + (" : mal drei richtige ..")) if richtige == 4: vierrichtige +=1 if vierrichtige >= 1 : r4c = (((vierrichtige/counter) * 100)) print(str(round(r4c, 4))+ (" % Chance auf vier Richtige.")) #print(str(vierrichtige) + (" : mal vier richtige ..")) if richtige == 5: fuenfrichtige +=1 if fuenfrichtige >= 1 : r5c = (((fuenfrichtige/counter) * 100)) print(str(round(r5c, 4))+ (" % Chance auf fuenf Richtige.")) #print(str(fuenfrichtige) + (" : mal fuenf richtige .."))

# 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%