Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
rolgal_reloaded hat geschrieben:Und ob die Funktionen im Dict. besser lesbar sind....da kann ich sie doch frisch ausschreiben, der Zweizeiler ist mir da sympahtischer, oder gibts in deiner Fassung einen wesentlichen Vorteil?
Ich bin eigentlich davon ausgegangen, dass aus "Benutzereingabe" und "nicht in die Berechnungsfunktion" deutlich wird, dass du nicht die Berechnung in Dictionaries packen sollst.
Es läuft im Prinzip auf jbs Vorschlag mit den "options" Hinaus. Auch wenn ich kein inneres Dictionary sondern ein Tupel verwenden würde. Mit Dekoratoren kann man das ganze aber noch schöner gestalten.
EyDu hat geschrieben:Es läuft im Prinzip auf jbs Vorschlag mit den "options" Hinaus. Auch wenn ich kein inneres Dictionary sondern ein Tupel verwenden würde. Mit Dekoratoren kann man das ganze aber noch schöner gestalten.
Mit Dekoratoren wirds dann doch ganz schön magisch .
Ich mag Dictionary lieber, da man später noch sieht, was sich nun dahinter verbirgt und es lesbarer wird.
[url=http://wiki.python-forum.de/PEP%208%20%28%C3%9Cbersetzung%29]PEP 8[/url] - Quak!
[url=http://tutorial.pocoo.org/index.html]Tutorial in Deutsch[/url]
rolgal_reloaded hat geschrieben:Erst jetzt habe ich gesehen, dass ich den Code von jbs doch nicht geschnallt habe. Wofür überhaupt options?
LG
r_r
@edit:
ach nee, forget it
Ich bündle die Sachen, die zusammen gehören. Jede Aufgabe hat eine Nummer, die auch später dann im Menü auftaucht. Diese ist zugleich der Key. Unter dem Wert verbergen sich dann die Beschreibung, die ich unglücklicherweise auf die Schnelle `str` genannt habe. Vielleicht wäre hier `desc` besser gewesen. Dann bildet ja jede Option im Menü eine Funktion ab, weshalb diese ebenfalls hinzugefügt wird. Dazu kommen noch die Parameter, die benötigt werden. Alternativ könnte man die Funktion untersuchen und schauen, welche Parameter sie benötigt und danach entsprechend fragen. Wenn man es dann noch besser haben möchte, könnte man die Docstrings auswerten, die zuvor noch sinnvoll erstellt werden müssen.
Edit: Man kann mit dem Dictionary schnell neue Funktionen hinzufügen und man hat den Vorteil nicht immer `elif x == y` schreiben zu müssen, sondern man greift einfach auf das Dictionary zu.
[url=http://wiki.python-forum.de/PEP%208%20%28%C3%9Cbersetzung%29]PEP 8[/url] - Quak!
[url=http://tutorial.pocoo.org/index.html]Tutorial in Deutsch[/url]
function:mul
"mul" multiplies a with b:
a=2
b=3
2.0*3.0=6.0
function:square
"square" squares a:
a=4
16.0
function:
Und dass jetzt keiner mit Vorschlägen kommt wie "hier musst du aber noch eine Exception abfangen...."
Ich hätte auch noch eine Lösung mit Metaklassen, aber die war nicht so flexibel (man konnte jede Funktion nur einer Sammlung hinzufügen und war an Klassen gebunden).
Sebastian
Zuletzt geändert von EyDu am Dienstag 9. März 2010, 23:42, insgesamt 1-mal geändert.
Die deklarative Programmierung ist ein Programmierparadigma, bei dem die Beschreibung des Problems im Vordergrund steht. Der Lösungsweg wird dann automatisch ermittelt.
Du beschreibst die Funktion und lässt den Rest automatisch machen.
[url=http://wiki.python-forum.de/PEP%208%20%28%C3%9Cbersetzung%29]PEP 8[/url] - Quak!
[url=http://tutorial.pocoo.org/index.html]Tutorial in Deutsch[/url]
Wenn man so einen Code reinstellt, wäre schon super, wenn man ihn ausführlich kommentiert und erklärt, täten sich die weniger versierten User etwas leichter und könnten was lernen dabei.
rolgal_reloaded hat geschrieben:Wenn man so einen Code reinstellt, wäre schon super, wenn man ihn ausführlich kommentiert und erklärt, täten sich die weniger versierten User etwas leichter und könnten was lernen dabei.
Da ist dann die Frage auf welchem Niveau will man einsteigen. Soll man die Funktionsweise erklären? Dekoratoren mit Parametern? Klassen gar?
Wenn du den Code nicht verstehst, steht es dir ja genauso auch frei einfach spezifische Fragen zu stellen die dem Verständnis ggf. mehr helfen als exzessive Kommentare.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice