Seite 1 von 2

Lotto Generator und Simulator

Verfasst: Sonntag 30. Januar 2011, 23:56
von Malta
Ich möchte euch meinen Lotto Generator und Simulator vorstellen.

Das Pythonprogramm generiert Lottozahlen und kann eine Ziehung simulieren.
Die GUI ist Qt4.

Download
https://github.com/MarkusHackspacher/pyLottoSimu

Info auf meiner Homepage
http://markush.cwsurf.de/joomla_17/inde ... -simulator

Re: Lotto Generator und Simulator

Verfasst: Montag 31. Januar 2011, 00:11
von derdon
Ich kann das Archivformat nicht öffnen, das du verwendest. Warum keinen Hosting-Dienst wie GitHub, Bitbucket o.ä. verwenden? Oder wenigstens ein besseres Archivformat wie *.tar.gz, *.tar.bz2, *.zip. Aber am besten fände ich immer noch, wenn man sich die Dateien online anschauen könnte.

Re: Lotto Generator und Simulator

Verfasst: Montag 31. Januar 2011, 00:20
von Malta
Ich hab die Dateien mit 7zip komprimiert.
http://www.7-zip.de/

Die Datei ist eben viel kleiner als bei .zip.

Andere sind auch schon auf 7zip umgestiegen,
z.B. Inkscape http://inkscape.modevia.com/win32/?M=D

Re: Lotto Generator und Simulator

Verfasst: Montag 31. Januar 2011, 01:56
von derdon
Inkscpae bietet deutlich mehr Formate zum Herunterladen an als 7zip: http://inkscape.org/download/?lang=en. 7zip ist da lediglich ein Format, das für Windowsbenutzer gedacht ist, die den Quellcode herunterladen wollen (anstalle einer fertigen exe oder eines Installers). Außerdem kann man bei Inkscape den Code online ansehen: https://code.edge.launchpad.net/~inkscape.dev. Wenn du es so wie Inkscape machen würdest, hätte ich überhaupt nichts zu meckern was das Bereitstellen und Verbreiten des Codes angeht ;)

Re: Lotto Generator und Simulator

Verfasst: Montag 31. Januar 2011, 04:20
von gkuhl
Ich kann es auch nicht öffnen. :(

Re: Lotto Generator und Simulator

Verfasst: Montag 31. Januar 2011, 07:33
von BlackJack
@Malta: Schau Dir mal `random.sample()` an.

Re: Lotto Generator und Simulator

Verfasst: Montag 31. Januar 2011, 08:30
von Hyperion
Ich kann es unter Linux auch nicht öffnen... muss doch eine 7zip-Implementation dafür geben? Dennoch würde ich auch für ein Hosting a la BitBucket plädieren.

Re: Lotto Generator und Simulator

Verfasst: Montag 31. Januar 2011, 08:36
von mkesper
Es gibt für alle Betriebssysteme Versionen von 7z. Jedenfalls viel besser als rar.
Dennoch ist der direkte Zugriff quasi ein Muss, wenn man Mitstreiter sucht.

Re: Lotto Generator und Simulator

Verfasst: Montag 31. Januar 2011, 08:44
von BlackJack
@Hyperion: Klar gibt's eine Implementierung -- einfach mal in die Paketverwaltung schauen. Würde mich wundern wenn es heute noch Distributionen gäbe, die p7zip nicht an Bord hätten. Das ist doch schon vor Jahren angetreten um RAR mit etwas vergleichbarem aber freiem abzulösen.

Reine Kompressionsprogramme wie ``gzip`` oder ``bz2``, die den Algorithmus können, werden mittlerweile auch von GNU Tar mit eigenen Optionen unterstützt (`-J`/`--xz`/`--lzma`) -- also nicht wundern wenn's irgendwo `*.tar.xz` oder `*.tar.lzma` zum runterladen gibt. :-)

Re: Lotto Generator und Simulator

Verfasst: Montag 31. Januar 2011, 09:01
von Hyperion
Ja, hab eine gefunden. "p7zip". Damit gings jetzt.

Zum Code: Ich würde ja das uic-Modul zum dynamischen Lader der GUI gegenüber der statischen Generierung per pyuic vorziehen!

Für die verschiedenen Sätze bei der Ziehung, solltest Du Dir auch mal Dictionaries angucken. Damit kannst Du Die etliche elif-Kaskaden sparen.

Das folgende ist typisch für Umsteiger auf Python; ich wette Du kennst PHP oder C? ;-)

Code: Alles auswählen

laenge_zuf = len(zufallszahl)
           for i in range(laenge_zuf):
               if zufallszahl[i]<10:
                   text = text + "0"+ str(zufallszahl[i]) + " "
               else:
                   text = text + str(zufallszahl[i]) + " "
Wozu brauchst Du hier den Index? Du guckst Dir doch jede einzelne Zufallszahl aus der liste "zufallszahl" (der Name passt nicht zum Inhalt nebenbei) an. Du kannst in Python doch direkt über die Elemente von Listen iterieren.

Code: Alles auswählen

for value in zufallzahl:
    print value
Das Zusammenbauen des Strings geht hier sicherlich auch eleganter; da kann man etwas mit den Formatierungsmöglichkeiten von Python basteln. Zudem entfiele hier die Schleife:

Code: Alles auswählen

In [21]: values = range(7, 13)

In [22]: "".join(map("{0:02d}".format, values))
Out[22]: '070809101112'

Re: Lotto Generator und Simulator

Verfasst: Montag 31. Januar 2011, 09:16
von Leonidas
Malta hat geschrieben:Die Datei ist eben viel kleiner als bei .zip.
Selbst wenn es 50% kleiner ist, was ich nicht glaube wären das ja auch nur 40 KB. Man muss beim Wahl des Kompressionsformates einfach auch die Sinnhaftigkeit bedenken. Ich denke am praktischsten für Leute in diesem Forum ist tar.gz, weil die Tools auf ihren Systemen schon da sind.

Re: Lotto Generator und Simulator

Verfasst: Montag 31. Januar 2011, 12:03
von lunar
Bei allem Respekt, ich finde das Verhalten mancher Beteiligter reichlich befremdlich. Es ist weiß Gott nicht schwer, die passende Linux-Implementierung für dieses Archiv-Format zu finden. Es ist folglich ziemlich dreist, den OP für die Wahl dieses Formats zu kritisieren, wenn man nicht willens oder nicht fähig ist, selbstständig das passende Programm zum Entpacken zu finden, umso mehr, als manche der Betroffenen gerne schnell dabei sind, andere zu mehr Eigeninitiative anzumahnen, wenn mal wieder eine Frage gestellt wird, die sich durch einen Blick in die Dokumentation beantworten ließe.

Re: Lotto Generator und Simulator

Verfasst: Montag 31. Januar 2011, 13:44
von Leonidas
Mich wunderts auch dass 7zip einigen unbekannt ist. Ich wollte dem OP aufzeigen, dass es sinnvoller ist Dateien wenn es nicht wirklich auf das Format ankommt, in einem populäreren Format zu verteilen. Genauso wie man keine Dateien bei 1-Click-Hostern hochladen sollte, weil sich niemand die Mühe machen will die Wartezeit abzuwarten und dann irgendwelche obskuren Captchas einzugeben.

Um mal was zum Programm zu sagen: Ich finde die Namensgebung von ``Anleitung.txt`` und ``hilfe.html`` komisch, das Programm schaut auch bei mir ziemlich hässlich aus, man kann es mittels Ctrl+C nicht in der Konsole beenden, wenn man es dann übers Menü beendet gibt es danach die KeyboardInterrupt-Exception. Außerdem finde ich das Nachfragen ob ich es schließen will ziemlich nervig - es ist ja nicht so als ob da irgendwelche Daten wären wo es schade drum wäre wenn sie verloren gehen. Programme sollten nur nachfragen wenn dabei irgendwelche Daten verloren gehen würden. Den Ausgabefeld-Leeren Button finde ich überflüssig.

Zum Code ``#!/usr/bin/python`` ist keine gute Wahl für die Shebang, ich würde das prüfen auf Gleikhommazahlen nicht über ``floor`` machen denn das filtert Zahlen wie 3.0 raus. Und wenn du das ausschließen willst, dann würde man das wohl als erste Bedingung setzen. Nach einem ``raise`` macht ein ``return`` keinen Sinn. Außerdem ist das Würfeln sehr komisch gelöst.

Code: Alles auswählen

for i in range(len(zufallszahl)):
    text1=text1 + str(zufallszahl[i]) + " "
ist sehr unpythonisch. Der Zuordnungs-Code scheint auch in ``ontimer`` irgendwie fehl am Platz.

Re: Lotto Generator und Simulator

Verfasst: Montag 31. Januar 2011, 14:07
von Rebecca
Bei mir sieht's aehnlich unschoen aus wie bei Leonidas. Ich seh da auch lauter feste Groessenangaben fuer die Widgets... Das sollte man vermeiden.

Re: Lotto Generator und Simulator

Verfasst: Freitag 4. Februar 2011, 18:46
von Malta
Hab die Formatierung jetzt anders gestaltet

Code: Alles auswählen

"".join(map("{0:02d}".format, zufallszahl))
Und kein Nachfragen beim Beenden.


Wie findet ihr den Aufruf einer Anleitung im Browser im Menü Hilfe --> Hilfe?

Oder gibt es da eine bessere Lösung?

Re: Lotto Generator und Simulator

Verfasst: Montag 7. November 2011, 13:16
von monthy
Hey kann mir jemand auch den Zip schicken? Ich will mal den zahlenarchiv auf lotto.de und http://www.lottovergleich.com unter der lupe nehmen, wäre ganz schön spannende

Re: Lotto Generator und Simulator

Verfasst: Dienstag 8. November 2011, 19:25
von Malta

Re: Lotto Generator und Simulator

Verfasst: Montag 2. April 2012, 14:08
von Malta
Hab eine neue Version und die kann bei github heruntergeladen werden.

Ich habe Github deshalb gewählt, weil ich durch das Versionsverwaltungssystem die Änderungen besser verdeutlichen kann.
https://github.com/MarkusHackspacher/pyLottoSimu

Und Änderungen im Code werden auch dokumentiert.

In der neuen Version habe ich das Hintergrundbild geändert, der Geschwindigkeitsregler ist jetzt besser sichtbar. Bei der Simulation werden jetzt zufällige Texte ausgegeben.
Und hab paar Kleinigkeiten am Code verbessert.

Re: Lotto Generator und Simulator

Verfasst: Donnerstag 24. Mai 2012, 12:23
von lackschuh
Hallo

Wollte mal das Programm testen und hab mir Qt4 runter geladen und installiert. Beim Ausführen des Programms (lotto.pyw) kommen bei mir folgende Fehlermeldungen:

Code: Alles auswählen

Traceback (most recent call last):
  File "C:\Python27\Lotto\lotto.pyw", line 13, in <module>
    lotto.lotto_gui1.gui()
  File "C:\Python27\Lotto\lotto\lotto_gui1.py", line 195, in gui
    dialog = MeinDialog()
  File "C:\Python27\Lotto\lotto\lotto_gui1.py", line 24, in __init__
    self.setupUi(self)
  File "C:\Python27\Lotto\lotto\lotto.py", line 167, in setupUi
    self.retranslateUi(MainWindow)
  File "C:\Python27\Lotto\lotto\lotto.py", line 179, in retranslateUi
    self.anzahl.setAccessibleName(QtGui.QApplication.translate("MainWindow", "Anzahl", None, QtGui.QApplication.UnicodeUTF8))
AttributeError: 'QSpinBox' object has no attribute 'setAccessibleName'
Ich bin noch ein Frischling i.S. Python und darum vermag ich diese Fehler noch nicht wirklich zu interpretieren. Kann mir jemand helfen?

mfg

Re: Lotto Generator und Simulator

Verfasst: Donnerstag 24. Mai 2012, 12:42
von /me
lackschuh hat geschrieben:Ich bin noch ein Frischling i.S. Python und darum vermag ich diese Fehler noch nicht wirklich zu interpretieren.
Ich verwende Qt bisher fast gar nicht. Dann kann ich ja mal völlig unbelastet darangehen die Fehlermeldung "AttributeError: 'QSpinBox' object has no attribute 'setAccessibleName'" gemeinsam mit dir zu deuten. Es existiert offensichtlich ein Objekt vom Typ QSpinBox. Auf diesem Objekt soll das Attribut setAccessibleName verwendet werden. Dieses gibt es laut Fehlermeldung nicht.

Wo kann es hingekommen sein?

Meine Vermutung ist, dass dieses Attribut in neueren Qt-Versionen (bzw. PyQt-Versionen) hinzugefügt wurde und du eine etwas ältere Version installiert hast. Welche Version ist es denn?


Das Netz weist nach kurzem Google-Fu auch noch auf mögliche Probleme mit Qt ohne "accessibility support" hin.