Python :: Aufgabe #3

17 Lösungen Lösungen öffentlich

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.

Lösungen:

vote_ok
von aikon3 (110 Punkte) - 28.12.2012 um 13:51 Uhr
Quellcode ausblenden Python-Code
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)
vote_ok
von Sticitov (170 Punkte) - 01.03.2015 um 00:44 Uhr
Quellcode ausblenden Python-Code
__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))
vote_ok
von jigga (4260 Punkte) - 17.05.2015 um 23:50 Uhr
Quellcode ausblenden Python-Code
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) + "%")
vote_ok
von 0 (0 Punkte) - 16.07.2015 um 23:25 Uhr
Jetzt noch ein Programm mit Eingabeaufforderung, Try/Exceptions und CTRL+C-Abbruchbedingungen. Was koennte man noch daran basteln? Zugegeben, ich hatte langeweile ;-)

Quellcode ausblenden 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()
vote_ok
von _Mala_Fide_ (820 Punkte) - 13.10.2015 um 13:22 Uhr
Quellcode ausblenden Python-Code
#!/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), "%")
vote_ok
von xy-no (250 Punkte) - 03.11.2015 um 14:02 Uhr
Quellcode ausblenden Python-Code
# 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 %
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) + "%")
vote_ok
von AnnaIhrs (460 Punkte) - 06.06.2016 um 00:35 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 " + 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) + "%")
vote_ok
von Nachbar (2820 Punkte) - 16.07.2016 um 12:47 Uhr
Quellcode ausblenden Python-Code
# -*- 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, "%"
vote_ok
von ah3n0bar6us (660 Punkte) - 17.07.2016 um 15:06 Uhr
Quellcode ausblenden Python-Code
#!/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
vote_ok
von Mio (40 Punkte) - 03.03.2017 um 06:26 Uhr
Mein erstes : )
Stelle es nur ein weil's so viel kürzer wie eure ist..


Quellcode ausblenden Python-Code

""" 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."

vote_ok
von SamYoshihara (120 Punkte) - 26.06.2017 um 21:35 Uhr
Quellcode ausblenden Python-Code
# 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.")
vote_ok
von PythonIT (240 Punkte) - 19.08.2017 um 17:48 Uhr
Meine Version:

Quellcode ausblenden 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.")
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
vote_ok
von Kotgreifer (1100 Punkte) - 16.04.2019 um 13:44 Uhr
Quellcode ausblenden Python-Code
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)
        

vote_ok
von pyth (80 Punkte) - 25.08.2019 um 10:20 Uhr
Quellcode ausblenden Python-Code
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 .."))
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%
2103530

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.