Seite 2 von 2

Verfasst: Samstag 7. November 2009, 14:16
von Dav1d
numerix hat geschrieben:
Dav1d hat geschrieben:weil man daraus auch etwas lernen kann und weil die Lösung in eine ganz andere Richtung geht
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.
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()!

Verfasst: Samstag 7. November 2009, 14:32
von jbs
Statt eval(raw_input()) kannst du dann gleich input nehmen...

eval ist evil und sollte peinlichst vermieden werden

Verfasst: Samstag 7. November 2009, 14:53
von cofi
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()!
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.
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).

Verfasst: Samstag 7. November 2009, 19:27
von Dav1d
mit dem eval(), war ne blöde Idee!
sma hat geschrieben:

Code: Alles auswählen

print ['a', 'b', 'c'][int(raw_input()) - 1]
Stefan
Das würd ich nicht nutzen, da es zu Verwirrungen führen kann wenn man 0 eingibt und dann c ausgegeben wird

Verfasst: Samstag 7. November 2009, 20:01
von cofi
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
Dann bliebe - allerdings auch nur fuer positive zahlen:

Code: Alles auswählen

a = ['a', 'b', 'c']
a[(int(raw_input()) - 1) % len(a)]
Im Allgemeinen finde ich aber Dicts besser fuer so etwas geeignet.

Verfasst: Sonntag 8. November 2009, 11:02
von sma
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
Guter Punkt. Hatte ich gar nicht bedacht. Ich nenne das ein Feature :)

Stefan