Zufallssex

Ich hab’s getan!

Ihr kennt das vielleicht aus eurer Jugend, als die erotischste Konsumerfahrung noch das Vorbeigehen an halbherzigen Sextoys und aufblasbaren Schafen in einem Laden für kiffende Mittelschicht-Punks war. Also bei mir war das zumindest so. Man könnte meinen, daran habe sich nie etwas geändert, als ich Freitagabends nichts besseres zu tun hatte, als Pizza zu essen und zu programmieren.

Gestern besuchte mich Genosse Erlehmann und als ich ihn gerade rauswerfen wollte, bestellten wir stattdessen im Affekt Essen (Wir guckten einen Flyer an). Um die Stunde, die wir aneinander gebunden waren, zu überbrücken, wollte ich etwas kleines programmieren. Ich wollte nicht aus dem Muster ausscheren und programmierte daher nach dem schlecht.s-Programm, der Beleidigungsmaschine, dem editor und dem Schlangenkuchenrezept erneut etwas völlig sinnloses. Und zwar:

Terminalbasierte Sexwürfel!

Und hier der Code dazu:

#!/usr/bin/env python
print "L I E B E S W U E R F E L"

# wie = ("zaertlich", "fest", "brutal", "schlecht", "angewidert", "lustig")
wo = ("Nippel", "PENIS", "Pussy", "Schenkel", "Bauch", "Po")
was = ("kuessen", "saugen", "lecken", "knabbern", "streicheln", "kitzeln")

from random import choice
# print choice (wie)
print choice (wo)
print choice (was)

Das ist ein sehr sehr sehr einfaches Programm und jedeR sollte das verstehen können. Erlehmann zeigte mir erst in einer Python-Shell, wie man choice verwendet und wie eine Liste erzeugt wird. Eine Python-Shell ist das, was passiert, wenn du im Terminal „python“ eintippst. Du kannst dann sozusagen „live“ Python Befehle ausführen, anstatt sie in ein Programm zu schreiben, das sie für dich nach und nach ausführt. Die simpelste Anwendung ist sicherlich, die Shell wie einen Taschenrechner zu verwenden. Aber die Funktion „Choice“ bspw. kann ich darin auch verwenden. In der Pythonshell lernte ich ersteinmal, wie choice überhaupt funktioniert und konnte es dann in das Programm einbinden.

Im Programm sexwuerfel.py werden zunächst die Variablen mit einer Liste belegt. Das Format ist denkbar simpel:

variable = (1, 2, 3, ..., n-1, n)

Wenn du Zufallszahlen generieren möchtest, kannst du die Zahlen einfach durch Komma getrennt in Klammern setzen. In diesem Fall gebe ich Wörter in Form von Strings in die Liste, also müssen sie in Anführungszeichen gesetzt werden, damit sie als Strings erkannt werden. Damit belege ich drei Variablen. Wobei eine auskommentiert ist, mit einer Raute (#) davor. Dadurch wird die danach folgende Zeile „wirkungslos“ gemacht, sie spielt keine Rolle mehr im Programm. Das ist lediglich Schadensbegrenzung. Kompetente und ganz besonders versaute LeserInnen können die Zeilen ja wieder reinkommentieren.

Der Korrektheit halber: Eigentlich sind die Listen keine Listen, sondern Tupel. Aber egal. Choice ist nicht besonders wählerisch und nimmt alles, was irgendwie abzählbar ist.

In der Zeile

from random import choice

weise ich das Programm an, aus dem Python-Modul „random“ die Funktion(sdefinition) „choice“ zu importieren. Das kennt die geneigte Leserin vielleicht schon aus diesem Post wo ich dasselbe mit „from sys import arg“ verwende.

Die nächsten Zeilen erklären sich eigentlich von selbst. Ich jage die „choice“-Funktion auf die Variablen, die mit den Listen belegt sind. Mit print wird mir das Ergebnis – also ein zufällig aus der Liste ausgewähltes Element – ausgegeben.

Es können natürlich beliebig viele Listen und choices noch hinzugefügt werden. Zum Beispiel

ort = ("kueche", "wohnzimmer", "aufzug", "buergeramt" ...)

oder

wer = ("ich", "du", "aufblasbares Schaf", "deine mutter",...)

und so weiter.

Jetzt brauche ich nur noch ein paar Beta-Tester, die das Spiel ein paar mal… ähm… durchspielen und Verbesserungsvorschläge und Erfahrungsberichte einreichen. Freiwillige?

Hier hört die Erklärung des Programm eigentlich schon auf, aber es folgt noch eine überspringbare Kleinigkeit, für Fortgeschrittene und alle die es werden wollen über Berechtigungen, Unix-Benutzergruppen und zur allerersten Zeile:

#!/usr/bin/env python

Das ist eine sogenannte „Shebang“-Zeile. Ja, wirklich. Sie weist das Betriebssystem beim Ausführen der Datei darauf hin, welcher Interpreter das Programm -nunja- interpretieren kann. Den Tip gab mir Erlehmann und ich weiß bei seinen Hinweisen immer nicht so genau, wie sinnvoll und notwendig die sind. Es hat aber auf jeden Fall den Vorteil, dass nicht etwa

python sexwuerfel.py

in die Kommandozeile eingetippt werden muss, sondern einfach nur

./sexwuerfel

um das Programm auszuführen. Die Endung .py hat übrigens keine Funktion, sie ist einfach nur ein Hinweis an den Menschen, dass es sich um ein Python-Programm handelt. Um eine Datei auf diese Art und Weise ausführbar zu machen, mussten wir allerdings noch ein paar Berechtigungen ändern.

Wenn ich in meinem Terminal

ls sexwuerfel.py -l

eintippe, sehe ich die Berechtigungen: -rw-r–r–
Das kann man aufspalten in  rw-, r– und r–. Das sind drei verschiedene Berechtigungen für mich, den user, die group und other
user (ich) darf:

rw-

Ich habe ein r (lesen) und ein w (schreiben, also das Programm verändern), das heißt ich darf die Datei lesen und reinschreiben. Wo ein x stehen könnte, steht ein Strich, ich darf die Datei also nicht ausführen. Group und Other dürfen nur lesen. Group bezieht sich auf eine definierte Benutzergruppe, ist aber in diesem Falle irrelevant.

Als Userin kann ich die Berechtigungen verändern. Das mache ich mit dem Befehl „chmod“, das steht für „change mode“. Mit

chmod a+x sexwuerfel.py

gebe ich allen (a) Usern das Recht, die Datei auszuführen (x). Jetzt bekomme ich mit

ls sexwuerfel.py -l

das Ergebnis rwxr-xr-x. Aufgespalten wäre das: rwx, r-x, r-x. Also kann ich jetzt als userin lesen, schreiben und ausführen und groups und others dürfen lesen und ausführen aber weiterhin nicht schreiben. Jetzt kann das Programm von jedem mit ./ ausgeführt werden.

Bessere Erklärungen zu chmod gibt es hier und hier gibt es detaillierte Erklärungen zu den Unix-Benutzergruppen.

Getaggt mit , , , , , , ,
%d Bloggern gefällt das: