Seite 1 von 1
von stdin lesen
Verfasst: Freitag 23. Juni 2006, 12:30
von Frank
Hi,
eigentlich hätte ich gestern Abend ins Bett sollen. Allerdings mußte ich mich zu später Stunde entschließen nun doch mal ein wenig Python zu schnuppern. Nu bin ich mit Kaffee vollgepumpt
und hab eine kleine Sorge:
Ist es ratsam, Integer die von stdin kommen generell als String zu lesen und zu casten? Ein
foo = int (raw_input ('Insert :')) läßt sich prima durch faule Eingaben abschießen. Oder hab ich nur nicht die richtige Funktion gefunden?
Gruß, Frank
Re: von stdin lesen
Verfasst: Freitag 23. Juni 2006, 12:41
von gerold
Frank hat geschrieben:läßt sich prima durch faule Eingaben abschießen.
Hi Frank!
So nicht
:
Code: Alles auswählen
#!/usr/bin/env python
# -*- coding: iso-8859-1 -*-
def eingabe():
prompt = "Bitte geben Sie eine Ganzzahl ein (0 beendet das Programm): "
retval = raw_input(prompt)
try:
return int(retval)
except:
return eingabe()
def main():
while True:
intval = eingabe()
if intval == 0:
break
else:
print "Ergebnis: %s" % (intval * intval)
print
if __name__ == "__main__":
main()
mfg
Gerold
Verfasst: Freitag 23. Juni 2006, 12:47
von pr0stAta
Wenn du dir sicher sein kannst, das ein Integer kommt,
kannst auch auch input() statt raw_input() verwenden.
um aus dem wiki zu zitieren:
raw_input gibt immer den unverarbeiteten Eingabestring (Typ: str) zurück
input hingegen wertet den String vor der Rückgabe aus
Der Rückgabewert ist daher nicht unbedingt vom Typ str
Code: Alles auswählen
>>> import types
>>> eingabe = raw_input("Eingabe: ")
Eingabe: 100
>>> types.TypeType(eingabe)
<type 'str'>
>>> eingabe = input("Eingabe: ")
Eingabe: 100
>>> types.TypeType(eingabe)
<type 'int'>
*edit* Nochmal kurz als Warnung möchte ich auf den Artikel bei
Wikipedia verlinken. Input() ist nicht immer ratsam:
http://de.wikibooks.org/wiki/Python-Pro ... Datentypen
relativ weit unten ist raw_input und input erklärt
Verfasst: Freitag 23. Juni 2006, 13:32
von gerold
Verfasst: Freitag 23. Juni 2006, 13:48
von Frank
@Gerold
Ah, die try/except-Geschichte hab ich gesucht. Vielen Dank!
@pr0stAta
pr0stAta hat geschrieben:Wenn du dir sicher sein kannst, das ein Integer kommt...
Indianisches IT-Sprichwort: Nur geprüfte Daten sind gute Daten.
Gruß, Frank
Verfasst: Freitag 23. Juni 2006, 14:04
von pr0stAta
Indianisches IT-Sprichwort: Nur geprüfte Daten sind gute Daten.
hehe das stimmt, daher ist der weg von gerold definitv der bessere. safety first
man sollte sich input auch gar nicht erst angewöhnen, aber wenn man nur kleine programme für sich selber schreibt, dürfte es meist
auch ausreichen :>