Lotto Generator und Simulator

Stellt hier eure Projekte vor.
Internetseiten, Skripte, und alles andere bzgl. Python.
Malta
User
Beiträge: 83
Registriert: Samstag 8. Januar 2011, 23:51

Sonntag 30. Januar 2011, 23:56

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
Zuletzt geändert von Malta am Sonntag 1. April 2012, 19:16, insgesamt 3-mal geändert.
derdon
User
Beiträge: 1316
Registriert: Freitag 24. Oktober 2008, 14:32

Montag 31. Januar 2011, 00:11

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.
Malta
User
Beiträge: 83
Registriert: Samstag 8. Januar 2011, 23:51

Montag 31. Januar 2011, 00:20

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
derdon
User
Beiträge: 1316
Registriert: Freitag 24. Oktober 2008, 14:32

Montag 31. Januar 2011, 01:56

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 ;)
Benutzeravatar
gkuhl
User
Beiträge: 600
Registriert: Dienstag 25. November 2008, 18:03
Wohnort: Hong Kong

Montag 31. Januar 2011, 04:20

Ich kann es auch nicht öffnen. :(
BlackJack

Montag 31. Januar 2011, 07:33

@Malta: Schau Dir mal `random.sample()` an.
Benutzeravatar
Hyperion
Moderator
Beiträge: 7477
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

Montag 31. Januar 2011, 08:30

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.
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
Benutzeravatar
mkesper
User
Beiträge: 919
Registriert: Montag 20. November 2006, 15:48
Wohnort: formerly known as mkallas
Kontaktdaten:

Montag 31. Januar 2011, 08:36

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

Montag 31. Januar 2011, 08:44

@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. :-)
Benutzeravatar
Hyperion
Moderator
Beiträge: 7477
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

Montag 31. Januar 2011, 09:01

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'
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
Leonidas
Administrator
Beiträge: 16024
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Montag 31. Januar 2011, 09:16

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.
My god, it's full of CARs! | Leonidasvoice vs Modvoice
lunar

Montag 31. Januar 2011, 12:03

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.
Leonidas
Administrator
Beiträge: 16024
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Montag 31. Januar 2011, 13:44

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.
My god, it's full of CARs! | Leonidasvoice vs Modvoice
Benutzeravatar
Rebecca
User
Beiträge: 1662
Registriert: Freitag 3. Februar 2006, 12:28
Wohnort: DN, Heimat: HB
Kontaktdaten:

Montag 31. Januar 2011, 14:07

Bei mir sieht's aehnlich unschoen aus wie bei Leonidas. Ich seh da auch lauter feste Groessenangaben fuer die Widgets... Das sollte man vermeiden.
Offizielles Python-Tutorial (Deutsche Version)

Urheberrecht, Datenschutz, Informationsfreiheit: Piratenpartei
Malta
User
Beiträge: 83
Registriert: Samstag 8. Januar 2011, 23:51

Freitag 4. Februar 2011, 18:46

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?
Antworten