Kann sein, allerdings kann man z.B. lernen wie man eval() einetzten kann, wenn man dann bei raw_input() ein int drum rum macht int(raw_input()) und mit dem try...except noch nen ValueError abfängt, ist es sogar einigermasen sicher trotz eval()!numerix hat geschrieben:Daraus kann man nur lernen, wie man es NICHT machen sollte. Und wenn das nicht ausdrücklich und deutlich dabei steht, wird so ein Schrott auch noch von anderen aufgegriffen.Dav1d hat geschrieben:weil man daraus auch etwas lernen kann und weil die Lösung in eine ganz andere Richtung geht
Strings mit einer Variablen abrufen - oder so ähnlich
the more they change the more they stay the same
Statt eval(raw_input()) kannst du dann gleich input nehmen...
eval ist evil und sollte peinlichst vermieden werden
eval ist evil und sollte peinlichst vermieden werden
[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]
[url=http://tutorial.pocoo.org/index.html]Tutorial in Deutsch[/url]
- cofi
- Python-Forum Veteran
- Beiträge: 4432
- Registriert: Sonntag 30. März 2008, 04:16
- Wohnort: RGFybXN0YWR0
Wo ist da denn noch ein `eval`? Das Problem mit `eval` ist, dass es nur dann Exceptions schmeisst, wenn es _gar nichts_ (und erst dann!) mit dem uebergebenen String anfangen kann.Dav1d hat geschrieben:Kann sein, allerdings kann man z.B. lernen wie man eval() einetzten kann, wenn man dann bei raw_input() ein int drum rum macht int(raw_input()) und mit dem try...except noch nen ValueError abfängt, ist es sogar einigermasen sicher trotz eval()!
Bei `int(raw_input())` weiss man, dass es den `ValueError` schmeisst, wenn es keine passende String Repraesentation einer Zahl ist.
Fuer einen Anfaenger gilt wie jbs schon sagte "eval is evil", erst wenn man `eval` und den Input ganz genau kennt, kann man anfangen das anders zu sehen. Aber auch dann ist es meist die schlechteste Wahl (sofern nicht gar nichts anderes geht).
Michael Markert ❖ PEP 8 Übersetzung ❖ Tutorial Übersetzung (3.x) ⇒ Online-Version (Python 3.3) ❖ Deutscher Python-Insider ❖ Projekte
mit dem eval(), war ne blöde Idee!
Das würd ich nicht nutzen, da es zu Verwirrungen führen kann wenn man 0 eingibt und dann c ausgegeben wirdsma hat geschrieben:StefanCode: Alles auswählen
print ['a', 'b', 'c'][int(raw_input()) - 1]
the more they change the more they stay the same
- cofi
- Python-Forum Veteran
- Beiträge: 4432
- Registriert: Sonntag 30. März 2008, 04:16
- Wohnort: RGFybXN0YWR0
Dann bliebe - allerdings auch nur fuer positive zahlen:Dav1d hat geschrieben:Das würd ich nicht nutzen, da es zu Verwirrungen führen kann wenn man 0 eingibt und dann c ausgegeben wird
Code: Alles auswählen
a = ['a', 'b', 'c']
a[(int(raw_input()) - 1) % len(a)]
Michael Markert ❖ PEP 8 Übersetzung ❖ Tutorial Übersetzung (3.x) ⇒ Online-Version (Python 3.3) ❖ Deutscher Python-Insider ❖ Projekte
Guter Punkt. Hatte ich gar nicht bedacht. Ich nenne das ein Feature :)Dav1d hat geschrieben:... Das würd ich nicht nutzen, da es zu Verwirrungen führen kann wenn man 0 eingibt und dann c ausgegeben wird
Stefan