Eurojackpot-Zahlen ziehen. Simpel, Terminal

Stellt hier eure Projekte vor.
Internetseiten, Skripte, und alles andere bzgl. Python.
Antworten
gajan
User
Beiträge: 2
Registriert: Donnerstag 5. Oktober 2017, 21:21

Donnerstag 5. Oktober 2017, 22:00

Hallo!

Bin absoluter Anfänger und hier ist mein Entwurf für einen Zahlengenerator, der nicht zufällig Zahlen generiert sondern eine Liste zufällig sortiert, die erste Zahl "zieht" und den Rest wieder zufällig sortiert, wieder die erste zieht usw... Eben wie im echten Lotto. Das ging in Python so erstaunlich einfach dass ich total begeistert von dieser Sprache bin.
Olé und eine gute Zeit!

Code: Alles auswählen

#!/usr/bin/python

import random

zahlen50 = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ,11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50]

zahlen10 = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

print("Die nächsten Eurojackpotzahlen sind eventuell:")

for i in range(5):
	random.shuffle(zahlen50)
	print(zahlen50[0]), '',
	del zahlen50[0]

print("  "),

for j in range(2):
	random.shuffle(zahlen10)
	print(zahlen10[0]), '',
	del zahlen10[0]

raw_input() # nur damit das Terminal geöffnet bleibt
Sirius3
User
Beiträge: 8788
Registriert: Sonntag 21. Oktober 2012, 17:20

Donnerstag 5. Oktober 2017, 22:17

Hallo gajan,

auch wenn man Zahlen zufällig sortiert, sind sie danach sortiert :wink: . Auch werden Zahlen nicht zufälliger, wenn man sie mehrfach mischt. Listen mit aufsteigenden Zahlen muß man nicht händisch schreiben, dafür gibt es »range«. Und wenn man zufällige Elemente einer Liste will, nimmt man statt dessen einfach »random.sample«. In Python2 ist »print« eine Anweisung; die Klammern um das erste Argument sind sehr verwirrend.

Code: Alles auswählen

#!/usr/bin/python
import random
 
print "Die nächsten Eurojackpotzahlen sind eventuell:"

zahlen50 = range(1, 50)
gezogen = random.sample(zahlen50, 5)
for zahl in gezogen:
    print zahl,

print "  ",

zahlen10 = range(1, 10)
gezogen = random.sample(zahlen10, 2)
for zahl in gezogen:
    print zahl,
gajan
User
Beiträge: 2
Registriert: Donnerstag 5. Oktober 2017, 21:21

Donnerstag 5. Oktober 2017, 22:30

Besten Dank! :) wie gesagt stehe noch ganz am Anfang... haha ich dachte gleich, dass man sicherlich nicht alle Zahlen von Hand schreibt. Ich wollte nur nah an der Wirklichkeit bleiben. ;)

Jedoch: ich wollte es ganz ausdrücklich so, wie es im echten Lotto passiert: Eine Zahl wird der Trommel entnommen, alle weiteren, minus der gezogenen natürlich, werden wieder durchgemischt. Das passiert in deinem Bsp nicht mehr, oder?

Grüße!
Sirius3
User
Beiträge: 8788
Registriert: Sonntag 21. Oktober 2012, 17:20

Donnerstag 5. Oktober 2017, 22:48

Beim Programmieren kommt es nur auf das Ergebnis an. Je einfacher man zum Ergebnis kommt, desto besser. Da ist noch ein Fehler drin, es muß »zahlen50 = range(1, 51)« heißen.
Benutzeravatar
kbr
User
Beiträge: 957
Registriert: Mittwoch 15. Oktober 2008, 09:27

Freitag 6. Oktober 2017, 23:11

Das geht auch kürzer:

Code: Alles auswählen

import random
 
print("Die nächsten Eurojackpotzahlen sind eventuell:")

for upper, numbers in ((50, 5), (10, 2)):
    for number in sorted(random.sample(range(1, upper+1), numbers)):
        print(number, end=' ')
    print()
Antworten