Strings mit einer Variablen abrufen - oder so ähnlich

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.
Dav1d
User
Beiträge: 1437
Registriert: Donnerstag 30. Juli 2009, 12:03
Kontaktdaten:

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()!
the more they change the more they stay the same
Benutzeravatar
jbs
User
Beiträge: 953
Registriert: Mittwoch 24. Juni 2009, 13:13
Wohnort: Postdam

Statt eval(raw_input()) kannst du dann gleich input nehmen...

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]
Benutzeravatar
cofi
Python-Forum Veteran
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

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).
Dav1d
User
Beiträge: 1437
Registriert: Donnerstag 30. Juli 2009, 12:03
Kontaktdaten:

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
the more they change the more they stay the same
Benutzeravatar
cofi
Python-Forum Veteran
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

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.
sma
User
Beiträge: 3018
Registriert: Montag 19. November 2007, 19:57
Wohnort: Kiel

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
Antworten