Seite 1 von 1

Eurojackpot-Zahlen ziehen. Simpel, Terminal

Verfasst: Donnerstag 5. Oktober 2017, 22:00
von gajan
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

Re: Eurojackpot-Zahlen ziehen. Simpel, Terminal

Verfasst: Donnerstag 5. Oktober 2017, 22:17
von Sirius3
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,

Re: Eurojackpot-Zahlen ziehen. Simpel, Terminal

Verfasst: Donnerstag 5. Oktober 2017, 22:30
von gajan
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!

Re: Eurojackpot-Zahlen ziehen. Simpel, Terminal

Verfasst: Donnerstag 5. Oktober 2017, 22:48
von Sirius3
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.

Re: Eurojackpot-Zahlen ziehen. Simpel, Terminal

Verfasst: Freitag 6. Oktober 2017, 23:11
von kbr
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()