hat es irgendein grund warum, im modul "this" (printed den zen of python aus) der zen of python selbst verschluesselt ist?
just for fun?
implementation von this.py
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
Das sicher auch, aber es könnte ebenso als Proof of Concept gemeint sein, der zeigt dass man Python-Code durch die Codecs-Mechanik verändern kann.Joghurt hat geschrieben:vermutlich
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
"Simple is better than complex.", ...
Meine beschiedene Meinung: Der Code ist vielleicht ein wenig selbst ironisch gemeint. Wen man sich this.py mal anschaut verstößt es gegen einige Zens.
z.B.: Wäre "Simple is better than complex." **und** "There should be one-- and preferably only one --obvious way to do it.":
...
Code: Alles auswählen
s = """Gur Mra bs Clguba, ol Gvz Crgref
Ornhgvshy vf orggre guna htyl.
Rkcyvpvg vf orggre guna vzcyvpvg.
Fvzcyr vf orggre guna pbzcyrk.
Pbzcyrk vf orggre guna pbzcyvpngrq.
Syng vf orggre guna arfgrq.
Fcnefr vf orggre guna qrafr.
Ernqnovyvgl pbhagf.
Fcrpvny pnfrf nera'g fcrpvny rabhtu gb oernx gur ehyrf.
Nygubhtu cenpgvpnyvgl orngf chevgl.
Reebef fubhyq arire cnff fvyragyl.
Hayrff rkcyvpvgyl fvyraprq.
Va gur snpr bs nzovthvgl, ershfr gur grzcgngvba gb thrff.
Gurer fubhyq or bar-- naq cersrenoyl bayl bar --boivbhf jnl gb qb vg.
Nygubhtu gung jnl znl abg or boivbhf ng svefg hayrff lbh'er Qhgpu.
Abj vf orggre guna arire.
Nygubhtu arire vf bsgra orggre guna *evtug* abj.
Vs gur vzcyrzragngvba vf uneq gb rkcynva, vg'f n onq vqrn.
Vs gur vzcyrzragngvba vf rnfl gb rkcynva, vg znl or n tbbq vqrn.
Anzrfcnprf ner bar ubaxvat terng vqrn -- yrg'f qb zber bs gubfr!"""
d = {}
for c in (65, 97):
for i in range(26):
d[chr(i+c)] = chr((i+13) % 26 + c)
print "".join([d.get(c, c) for c in s]
Meine beschiedene Meinung: Der Code ist vielleicht ein wenig selbst ironisch gemeint. Wen man sich this.py mal anschaut verstößt es gegen einige Zens.
z.B.: Wäre "Simple is better than complex." **und** "There should be one-- and preferably only one --obvious way to do it.":
Code: Alles auswählen
print """The Zen of Python, by Tim Peters
Beautiful is better than ugly.
Explicit is better than implicit.
Simple is better than complex.
Complex is better than complicated.
Flat is better than nested.
Sparse is better than dense.
Readability counts.
Special cases aren't special enough to break the rules.
Although practicality beats purity.
Errors should never pass silently.
Unless explicitly silenced.
In the face of ambiguity, refuse the temptation to guess.
There should be one-- and preferably only one --obvious way to do it.
Although that way may not be obvious at first unless you're Dutch.
Now is better than never.
Although never is often better than *right* now.
If the implementation is hard to explain, it's a bad idea.
If the implementation is easy to explain, it may be a good idea.
Namespaces are one honking great idea -- let's do more of those!"""
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
Although that way may not be obvious at first unless you're Dutch.sape hat geschrieben:z.B.: Wäre "Simple is better than complex." **und** "There should be one-- and preferably only one --obvious way to do it."
(Wenn wir uns schon an jeden Buchstaben des Zens streng halten müssen.)
(Zum Glück müssen wir das nicht.)
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Hui!Code: Alles auswählen
d = {} for c in (65, 97): for i in range(26): d[chr(i+c)] = chr((i+13) % 26 + c) print "".join([d.get(c, c) for c in s])
Code: Alles auswählen
text.decode('rot13')
Ne invoces expellere non possis
[url=xmpp://florian@florianheinle.de]xmpp:florian@florianheinle.de[/url]
[url=xmpp://florian@florianheinle.de]xmpp:florian@florianheinle.de[/url]
Das ZEN gibt's AFAIK schon länger als die Möglichkeit 'rot-13' als Kodierung anzugeben.
Und Tim Peters ist kein Holländer, also zählt das Argument nicht.
Und Tim Peters ist kein Holländer, also zählt das Argument nicht.
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
Ja, ich habe grad this.py untersucht und eigentlich kann man es inzwischen anders schreiben: unthis.py.BlackJack hat geschrieben:Das ZEN gibt's AFAIK schon länger als die Möglichkeit 'rot-13' als Kodierung anzugeben.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Hat ein wenig Ähnlichkeit mit Armins Code: http://www.active-4.com/blog/archives/entry-20.html
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
Stimmt. Allerdings encoded rot13 keine Stings automatisch, das fand ich schon bei meiner Lösung interessant.sape hat geschrieben:Hat ein wenig Ähnlichkeit mit Armins Code
Überhaupt ist die Coding-Maschinerie eine ziemlich mächtige Sache. Mir kreist im Kopf grade die Idee rum, dass man PyLit auch als Codec implementieren könnte und somit Literate Python mit Transparenter Umwandung schrieben könnte. Ich glaube das werde ich mal dem Autor schreiben. Auch wenn die Codecs gar nicht für sowas gedacht sind.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
Stimmt. Aber es wäre sicherlich etwas, was man mal ausprobieren könnte. Haskell bietet mit den lhs-Dateien so etwas schon nativ an. Es ist immer interessant, welche Verrenkungen man mit Python hinbekommen kann (Lisp, anyone?). Auch wenn das nicht unbedingt praxistauglich ist.Joghurt hat geschrieben:Eben. Vielleicht sollte man es auch dabei belassen, sonst sind wir bald bei Perl angekommenLeonidas hat geschrieben:Auch wenn die Codecs gar nicht für sowas gedacht sind.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Meinst du das dann automatisch sowas erzeugt wird? http://pylit.berlios.de/tutorial/index.html -- Die Idee würde ich gut finden.Leonidas hat geschrieben:[...]Mir kreist im Kopf grade die Idee rum, dass man PyLit auch als Codec implementieren könnte und somit Literate Python mit Transparenter Umwandung schrieben könnte. Ich glaube das werde ich mal dem Autor schreiben. Auch wenn die Codecs gar nicht für sowas gedacht sind.
Och, ich hatte mal die Idee, auf dem Weg etwas Lingua::Romana::Perligata-aehnliches fuer Python zu implementierenJoghurt hat geschrieben:Eben. Vielleicht sollte man es auch dabei belassen, sonst sind wir bald bei Perl angekommen
Im Endeffekt hab ich's aber doch wieder verworfen, zu viel Aufwand fuer etwas, das eh niemand benutzt.
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
Ich habe ja mal einen Piglatin-Codec geschrieben (bis auf das er grauenhaft schlecht ist, funktioniert er sogar). Den könnte man vielleicht sogar auf Python-Code laufen lassen, aber das endet sicherlich in einem Fiasko.lumax hat geschrieben:Och, ich hatte mal die Idee, auf dem Weg etwas Lingua::Romana::Perligata-aehnliches fuer Python zu implementieren
@sape: Ja. Man schriebt diesen Literate-Code (also den der in den Beispielen in txt-Dateien gespeichert wird), gibt in der Coding-Zeile das Encoding "literate" an und lässt den Codec dann den Code umwandeln - so wie in Mitsuhikos oder meiner this.py - nur geringfügig sinnvoller. Ob das ein interessantes Konzept ist, welches man weiterverfolgen kann - darüber lässt sich streiten, aber so einen Codec zu implementieren ist ziemlich simpel, wenn man von meinem Piglatin-Codec ausgeht und dort einfach PyLit verwendet. Allerdings bin ich bisher leiter nicht dazu gekommen PyLit auszutesten, da ich mit TRE kaum weiterkomme, was mich ein wenig ärgert.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Hi Leonidas.
Das hört sich interessant an. Leider kenne ich mich mit PyLit nicht aus und habe auch momentan kleine Zeit um das zu testen, sonst würde ich mich mal ran setzen. Aber falls du mal was in der Richtung machst, halte uns auf den laufenden Ich werde mal bei Gelegenheit PyLint auch mal ansehen und mal testen.
BTW: Was ist TRE?
Das hört sich interessant an. Leider kenne ich mich mit PyLit nicht aus und habe auch momentan kleine Zeit um das zu testen, sonst würde ich mich mal ran setzen. Aber falls du mal was in der Richtung machst, halte uns auf den laufenden Ich werde mal bei Gelegenheit PyLint auch mal ansehen und mal testen.
BTW: Was ist TRE?
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
Klar, gerne.sape hat geschrieben:Aber falls du mal was in der Richtung machst, halte uns auf den laufenden
Eine interessante Regex-Engine die ich versuche über ctypes einzubinden. Siehe diesen Thread - wenn du etwas beisteuern willst/kannst, ist dein Code natürlich höchst willkommen.sape hat geschrieben:BTW: Was ist TRE?
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Python auf "deutsch" gibt's von einem Autor, der ein Package geschrieben hat, das es einfacher machen soll Python um eigene Syntaxkonstrukte zu erweitern. Das Projekt heisst Easy Extend. Dort dann links auf "Teuton" klicken. (Frames sind doof)
Das sollte sich leicht auf andere Sprachen wie zum Beispiel Latein umsetzen lassen.
Das sollte sich leicht auf andere Sprachen wie zum Beispiel Latein umsetzen lassen.
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
Irgendwie ist das lustig, ja (außer dass man ``from`` mit ``aus`` übersetzen sollte).BlackJack hat geschrieben:Dort dann links auf "Teuton" klicken. (Frames sind doof)
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice