PK óˆnFâíó” ó” pyzufall-0.13/index.html
Die Python-Bibliothek PyZufall beinhaltet Funktionen für das Generieren zufälliger Daten.
Die Entwicklung begann als Satzgenerator und wird noch in diese Richtung weitergeführt. Durch die große Sammlung an Funktionen kann sie inzwischen vielfältig eingesetzt werden. So wird sie bereits von anderen Projekten verwendet, wie dem Random VCard-Generator.
PyZufall ist Freie Software. Der Quellcode ist Open Source und steht unter der GPL Version 3.
Das Code Repository und ein Bugtracker sind auf Github.
Jeder ist eingeladen zum Projekt beizutragen!
Ausführliche Informationen sind in der Dokumentation zu finden.
Mit der Paketverwaltung pip lässt sich die neuste stabile Version installieren.
# pip install pyzufall
Es läuft mit Python 2.7 und Python 3.
Hier ein einfaches Beispiel, wie du mit PyZufall einen zufälligen Namen generieren kannst:
from pyzufall.generator import vorname, nachname
name = vorname() + ' ' + nachname()
print(name)
In der Dokumentation findest du weitere Beispiele und eine Referenz aller Funktionen.
Als Kind hatte ich bei meiner Oma öfter das Spiel Opa plätschert lustig in der Badewanne gespielt.
Dabei hat jeder Spieler ein Blatt Papier, dass er quer nimmt und als erstes einen Namen oder eine Person darauf schreibt, es an der Stelle faltet, so dass man es nicht mehr lesen kann und es im Uhrzeigersinn weitergibt. Dann schreibt jeder auf das erhaltene Blatt ein Verb, gibt es weiter und schribt ein Adjektiv und nach nochmaligem Weitergeben einen Ort darauf.
So entstehen absurde und zufällige Sätze. Das war immer sehr witzig.
Als ich älter wurde, begann ich Programmieren zu lernen. Dabei hat mich immer begeistert, durch Zufall etwas zu generieren, was teilweise einen Sinn ergibt, aber oft sehr absurd und dadurch lustig ist.
So ist ein Personendatengenerator entstanden, mit dem eine Personendatenbank befüllt wurde.
Auch hab ich ein Script geschrieben, dass Sätze nach dem Muster des Spiels generiert. Erst in Perl und dann in Python. Diese Sätze werden natürlich auf Dauer langweilig.
Da mittlerweile Python die Programmiersprache meiner Wahl ist, habe ich das Script darin weiterentwickelt, mit diversen Satz-Schemata und anderen tollen Funktionen.
Inzwischen gibt es satzgenerator.de. Auf dieser Webseite werden zufällige Sätze generiert, die bewertet und geteilt werden können.
Für die Generierung der Sätze wird PyZufall genutzt. Die Seite ist auch in Python programmiert, benutzt das Web-Framework Bottle und eine MySQL-Datenbank für die Speicherung der Sätze und Bewertungen.
PyZufall ist Open Source und wird bereits für andere Projekte benutzt.
Mit der Paketverwaltung pip lassen sich Python-Pakete vom Python Package Index (PyPI) herunterladen und installieren.
Die neuste stabile Version von PyZufall installierst du mit:
# pip install pyzufall
Hinweis
Pip benötigt Admin-Rechte für die Installation neuer Pakete. Wenn du nicht root bist benutze sudo.
Oder du installierst PyZufall manuell, indem du die neuste Version vom PyPI runterlädst, diese entpackst und installierst.
# wget https://pypi.python.org/packages/source/P/PyZufall/PyZufall-0.11.tar.gz
# tar -xzf PyZufall-0.11.tar.gz
# cd PyZufall-0.11/
# python3 setup.py install
Hinweis
Auch hier brauchst du Admin-Rechte.
Anhand von Beispielen werden die verschiedenen Module von PyZufall vorgestellt.
Um einen Namen zu generieren wird das Modul pyzufall.generator verwendet, dass eine Vielzahl von Funktionen für das Generieren von Daten bereitstellt.
from pyzufall.generator import vorname, nachname
name = vorname() + ' ' + nachname()
print(name)
Samira Reschke
Siehe auch
Eine Ãœbersicht aller Funktionen findest du in der Referenz.
Indem du mehrere Funktionen kombinierst, kannst du eine ganze Mahlzeit generieren.
from pyzufall.generator import essen, beilage, trinken
s = "Heute Abend gibt es {} mit {} und dazu ein Glas {}.".format(essen(), beilage(), trinken())
print(s)
Heute Abend gibt es Salzkartoffeln mit Rösti und dazu ein Glas Zuckerschnaps.
Auch Funktionen für eine Band gibt es.
from pyzufall.generator import bandart, band, vorname
s = "Meine {} heißt '{}' und besteht aus {}, {} und mir.".format(bandart(), band(), vorname(), vorname())
print(s)
Meine Ambientband heißt 'Enten bei den Affen im Zoo' und besteht aus Dietmar, Kira und mir.
Das Modul pyzufall.satz generiert zufällige Sätze nach diversen Schemata.
from pyzufall.satz import satz
s = satz()
print(s)
Der anonyme Vater fällt auf dem Straßenfest auf.
Es kann auch eine spezielle Art von Satz generiert werden.
from pyzufall.satz import satz_absurde_farbfunktion
s = satz_absurde_farbfunktion()
print(s)
Violett ist aggressiver als Gelb.
Die Klasse Person des Moduls pyzufall.person generiert eine Person mit diversen Daten. Du kannst den Datensatz der Person ausgeben oder direkt auf jede einzelne Variable zugreifen.
from pyzufall.person import Person
p1 = Person()
p2 = Person()
print(p1)
print("{} und {} sitzen auf einer Bank im Park.".format(p1.vorname, p2.vorname))
print("{} ({}) wohnt in {} und isst gerne {}.".format(p1.vorname, p1.alter, p1.wohnort, p1.lieblingsessen))
del p1, p2
********************************************************************************
Name: Fred Wittke (die_taube)
Geburtsname: Dornemann
Geschlecht: männlich
Geburtsdatum: 06.01.1912 (103)
Geburtsort: Wittlich
Wohnort: Kaltenkirchen
Beruf: Rentner
E-Mail: fred@die-taube.de
Homepage: http://die-taube.de/
Interessen: Brieftauben züchten
Lieblingsfarbe: Gelb
Lieblingsessen: Frischbraten mit Röstzwiebeln
Motto: Reden ist Silber, Schweigen ist Gold.
********************************************************************************
Fred und Franz sitzen auf einer Bank im Park.
Fred (103) wohnt in Kaltenkirchen und isst gerne Frischbraten mit Röstzwiebeln.
Ein praktischer Einsatszweck dafür ist der Random VCard-Generator.
Die Vielfalt und Anzahl der möglichen Sätze steigt mit den Datensätzen. Es ist einfach neue Worte oder Satzteile beizutragen und hilft enorm die Sätze noch abwechslungsreicher zu machen.
Bemerkung
An einer einfachen Möglichkeit, Daten hinzuzufügen, wird gearbeitet.
Zu tun
Dokuwiki auf satzgenerator.de/beitragen einrichten mit Kopie der Datensätze. Bearbeiten nach Registrierung möglich.
Das Projekt verwendet den Bugtracker auf github um Fehler und Verbesserungsvorschläge zu sammeln.
Wenn du auf github angemeldet bist, kannst du PyZufall forken, das Repository runterladen und anfangen neue Funktionen zu programmieren oder den bestehenden Code zu verbessern.
Dann stellst du einen Pull-Request mit deinen Änderungen.
Hier ist eine Liste mit Projekten, die PyZufall verwenden:
Dein Projekt füge ich auch gerne hinzu.
Einfach eine E-Mail mit Beschreibung und Link an post at davidak punkt de.
Bei der Entwicklung von PyZufall wird git für die Versionierung eingesetzt.
Die Dokumentation wird mit Sphinx erzeugt und die Unittests durch nose ausgeführt.
Hier wird das Ergebnis der automatischen Unittests und die Coverage des Codes im Repository angezeigt:
$ git clone https://github.com/davidak/pyzufall.git
Mit folgendem Befehl wird die HTML-Version sowie LaTeX samt PDF erzeugt.
$ make docs
Einzeln geht das mit:
$ make html
$ make pdf
Um den Code auf deinem System zu testen, führe folgenden Befehl im heruntergeladenen Repository aus:
imac:PyZufall davidak$ nosetests --with-doctest
..................................................
----------------------------------------------------------------------
Ran 50 tests in 0.867s
OK
Versionsnummer in version.py überprüfen, niemals ‘dev’ auf PyPI laden!
Changelog aktualisieren, Versionsnummer und Datum überprüfen
Unittests ausführen:
$ nosetests --with-doctest
Dokumentation bauen und überprüfen:
$ make docs
Installation von PyPI mit pip testen: https://wiki.python.org/moin/TestPyPI
Paket nach testpypi hochladen:
$ python3 setup.py sdist upload -r https://testpypi.python.org/pypi
Prüfen auf Syntax-Fehler in der README: https://testpypi.python.org/pypi/PyZufall
Einmal testweise installieren:
$ pip install -i https://testpypi.python.org/pypi <package name>
letzte Änderungen in git einchecken
git tag mit Versionsnummer setzen
push auf github
auf PyPI veröffentlichen:
$ python3 setup.py sdist upload
Die Module mit ihren Klassen und Funktionen.
Stellt diverse Hilfsfunktionen bereit.
Berechnet das Alter in Jahren anhand des Geburtsdatums.
Rückgabetyp: | int |
---|
Neu in Version 0.12.
Erzeugt eine grammatikalisch korrekte Aufzählung aus einer Liste.
Beispiel:
>>> a = ['lesen', 'reiten', 'Freunde treffen']
>>> s = aufzaehlung(a)
>>> print(s)
lesen, reiten und Freunde treffen
>>> b = ['Ãœberwachen', 'Strafen']
>>> s = aufzaehlung(b)
>>> print(s)
Ãœberwachen und Strafen
>>> c = ['schlafen']
>>> s = aufzaehlung(c)
>>> print(s)
schlafen
Parameter: | liste (list) – Eine Liste von Strings. |
---|---|
Rückgabetyp: | string |
Neu in Version 0.12.
Der übergebene Wert wird mit der gewählten Wahrscheinlichkeit zurückgegeben.
Neu in Version 0.11.
Parameter: |
|
---|
Macht den ersten Buchstaben gross.
Beispiele:
>>> a = erste_gross('das ist ein Beispiel?')
>>> print(a)
Das ist ein Beispiel?
>>> b = erste_gross('über Stock und Stein.')
>>> print(b)
Ãœber Stock und Stein.
>>> c = erste_gross('älter als das Internet!')
>>> print(c)
Älter als das Internet!
Liest die Textdatei mit dem übergebenen Namen aus data/ zeilenweise ein und gib eine Liste zurück.
Beispiel:
>>> liste = lese('baeume.txt')
http://stackoverflow.com/questions/10174211/make-an-always-relative-to-current-module-file-path
Parameter: | dateiname (string) – Dateiname inklusive Endung, z.B. vornamen.txt |
---|---|
Rückgabetyp: | list |
Fügt einen String ans Ende eines Wortes an, ohne doppelte Buchstaben zu erzeugen.
Beispiele:
>>> a = str_add('feige', 'er')
>>> print(a)
feiger
>>> b = str_add('feige', 'e')
>>> print(b)
feige
>>> c = str_add('blöd', 'e')
>>> print(c)
blöde
Neu in Version 0.11.
Stellt diverse Generator-Funktionen zur Verfügung.
Gibt ein gültiges Datum zwischen <vor 50 Jahren> und <heute> zurück.
Rückgabetyp: | string |
---|
Generiert eine E-Mail-Adresse.
Beispiel: ismail@ismail-christ.eu, emelieeiru63@lebanese.cc, nic@copacabana.com
Neu in Version 0.13.
Gibt einen fiktiven Firmenname zurück.
Zu tun
Funktion programmieren
Gibt ein gültiges Datum zwischen <vor 110 Jahren> und <heute> zurück.
Rückgabetyp: | string |
---|
Gibt ein zufälliges Geschlecht zurück.
1 = männlich 0 = weiblich
2011 gibt es laut Statistik 51,18% weibliche Personen in Deutschland: https://www.destatis.de/DE/ZahlenFakten/GesellschaftStaat/Bevoelkerung/Bevoelkerungsstand/Tabellen/Zensus_Geschlecht_Staatsangehoerigkeit.html
Rückgabetyp: | int |
---|
Gibt die Domain einer persönlichen Homepage zurück.
Beispiel: lilim.eu, heruntergekommene-kastanie.net, damian-schuett.org
Neu in Version 0.13.
Gibt ein zufälliges Interesse bzw Hobby zurück.
Veraltet ab Version 0.11: Wird durch pyzufall.generator.interessen_liste() ersetzt.
Generiert einen Nickname, Angabe von Vor- und Nachname optional.
Beispiel: dicker_falke, beate_brutal85, stinkender_panda24
Neu in Version 0.13.
Bringt ein Objekt in Berzug zu einer männlichen Person.
Beispiel: ‘der Bär’ wird zu ‘den Bären’ oder ‘seinen Bären’
Bringt ein Objekt in Berzug zu einer weiblichen Person.
Beispiel: ‘der Bär’ wird zu ‘den Bären’ oder ‘ihren Bären’
Gibt eine Ortsangabe zurück.
Beispiel: ‘im Flur’
Zu tun
aufteilen in generator und zufällige aus liste
Gibt eine Person als Objekt in Bezug auf eine männliche Person zurück.
Beispiel: seine Mitarbeiterin
Gibt eine Person als Objekt in Bezug auf eine weibliche Person zurück.
Beispiel: ihre Mutter
>>> url('davidak.de')
'http://davidak.de/'
Neu in Version 0.13.
Stellt die Klasse Person zur Verfügung. Mit ihr kann man ein Objekt erzeugen, dass eine Person mit zufällig generierten Daten darstellt.
Es kann auf jedes Attribut einzeln zugegriffen werden oder mit print(person) alle aufeinmal ausgeben werden.
Die generierten Daten basieren teilweise auf statistischen Werten und versuchen möglichst authentisch zu sein.
Quellen für Statistiken:
Stellt Funktionen bereit, die Sätze nach diversen Satz-Schemata generieren.
Die Funktion pyzufall.satz.satz() beinhaltet alle.
Generiert einen zufälligen Satz.
20% Standard-Sätze, 20% Fragen und 60% Themen-Sätze
Generiert einen Satz nach folgendem Muster: Gelb ist brauner als Türkis.
Generiert einen Satz nach dem Muster: <Ort> <Verb> <Person> <Adjektiv>.
Beispiel: Auf dem Spielplatz ist die Freundin hilfsbereit.
Generiert einen Satz nach dem Muster: Je untrainierter desto lächerlicher.
Generiert einen Satz über eine berufstätige Person.
Beispiel: Achmed, der Grafiker aus Waldheim, spielt den Nasenbär.
Generiert einen Satz mit den Mitgliedern einer Band.
Beispiel: Die Black Metal Band “Die Oralen Nudeln” besteht aus Marlene, Gert, Stefanie, Timm, Andrej, Friederike und Dorothea.
Generiert einen Satz, der den Zeitpunkt einer Bandgründung zum Thema hat.
Beispiel: Die Electroband “Kartoffel auf dem Klo” wurde am 26.10.2009 in Selb gegründet.
Generiert einen Satz, in dem ein Bandmitglied vorgestellt wird.
Beispiel: Annelise ist Gitarristin von der Gothicband “Kräuter in der Innenstadt”.
Generiert einen Satz mit dem Thema Baum.
Beispiel: Die gnadenlose Kerstin tritt gegen den Apfelbaum.
Generiert einen Satz mit Essen und/oder Trinken.
Beispiel: Die Wärterin isst Orangen mit Mayonnaise und trinkt dazu Milch.
Generiert einen Satz nach dem Muster: Braun ist eine unsittliche Farbe.
Generiert einen Satz, der eine Folgehandlung beschreibt.
Beispiel: Ohne dass Irmgard überlebt, bricht sie aggressiv ein.
Generiert eine Frage nach dem Grund, aus dem eine Person eine Tätigkeit ausführt
Beispiel: Wieso fällt dein Partner in Gedanken hin?
Generiert eine Frage nach der Person, die eine Tätigkeit ausführt.
Beispiel: Wer telefoniert bewusstlos in der Abtei?
Generiert eine Frage nach dem Ort, an dem eine Person eine Tätigkeit ausführt.
Beispiel: Wo singt ein Siebdrucker?
Generiert eine Frage nach der Art, wie eine Person eine Tätigkeit ausführt.
Beispiel: Wie wird sie beim ersten Date angefasst?
Generiert eine Frage nach dem Zeitpunkt, an dem eine Person eine Tätigkeit ausführt.
Beispiel: Wann säuft eine Hure?
Generiert einen Satz über eine Person mit Eigenschaften.
Beispiel: In der Garage ist das Mannsweib lesbisch.
Generiert einen Satz über eine Person in einem Kloster.
Beispiel: Bruder Ludwig ist der böseste Mönch im Kloster.
Generiert einen Satz zum Thema Körperteile.
Beispiel: Die ekelhafte Oma massiert ihren Fuß.
Generiert einen Satz mit einem nulltransitiven Verb.
Beispiel: Im Park schneit es.
Generiert einen einfachen Satz nach dem Muster: <Person> <Verb> <Adjektiv> <Ort>.
Beispiel: Die Geschmacklose bepisst sich cool in der Kirche.
Generiert einen einfachen Satz nach dem Muster: <Ort> <Verb> <Person> <Adjektiv>.
Beispiel: Beim ersten Date flieht er.
Generiert einen einfachen Satz nach dem Muster: <Adjektiv> <Verb> <Person> <Ort>.
Beispiel: Gehirntot weint die Schädlingsbekämpferin in der Psychiatrie.
Hier sind die Änderungen jeder Version dokumentiert.
Veröffentlicht am 14.03.2015
Veröffentlicht am 14.01.2014
Veröffentlicht am 22.09.2013
Veröffentlicht am 15.09.2013
Veröffentlicht am 15.09.2013
Veröffentlicht am 13.09.2013
Veröffentlicht am 13.09.2013
Veröffentlicht am 23.08.2013
Veröffentlicht am 23.07.2013
Vor der Version 0.8 gab es keine Versionsnummern, sie wurde als gefühlter Entwicklungsstand vergeben.
Alle Änderungen können den Kommentaren der Commits im Repository entnommen werden.
Der erste Commit war am 27.08.2012.