Probleme bei der Eingabe.

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.
Antworten
polypus
User
Beiträge: 37
Registriert: Dienstag 27. September 2005, 14:11
Wohnort: Salzburg

Hallo!

Habe folgendes (kleines) Problem: Wenn ich ein Pythonscript ausführe in dem eine normale Eingabe mittels input() erfolgt, ist diese Eingabe automatisch ein tuple. Im interaktiven modus ist das nicht so.
Ist das einfach eine Tatsache und muss ich mir immer auf folgende art helfen:

Code: Alles auswählen

 def detype(input_tup):
	input_str= input_tup[0]
	input_float = float(input_str)
	return input_float 
oder kann man das anders auch machen??
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Ja, raw_input() nutzen. Das ist sowieso empfohlen.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
polypus
User
Beiträge: 37
Registriert: Dienstag 27. September 2005, 14:11
Wohnort: Salzburg

Das gibt aber auch kein float oder int...
Heißt das, ich muss es auf jeden fall erst umwandeln?!!
Wenn das so ist, muss ichs eh akzeptieren, wollts nur genau wissen.
Danke für die schnelle Antwort!
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Ja, du tust mit raw_input() Srings entgegen, denn der User gibt Zeichen ein und diese lassen sich am besten als String repräsentieren. Danach kannst du den String parsen (also mit int(), float() und gegebenfalls noch regulären Ausdrücken) um daraus Ints oder Floats zu bekommen.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
polypus
User
Beiträge: 37
Registriert: Dienstag 27. September 2005, 14:11
Wohnort: Salzburg

Alles klar! mit hat ja auch nur gewundert, warum input() im interaktiven Modus einen integer nimmt und beim laufenlassen eines Scripts ein Tuple.
Muss ich wohl akzeptieren.
henning
User
Beiträge: 274
Registriert: Dienstag 26. Juli 2005, 18:37

Ich nehme mal an, su hast den float-Wert mit Komma statt mit punkt eingegeben?
Kann sein, dass das im interaktiven Modus kein Problem ist, weil da die Locale-Settings entsprechend sind, aber vielleicht sind die irgendwie anders gesetzt, wenn du das skript nicht-interaktiv laufen lässt?
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Es ist so, dass der Code bei input() vom Interpreter ausgeführt wird, so wie mit eval & exec, und das ist eben unsicher (auch was die Datentypen angeht, die der User eingibt), deswegen nimmt man raw_input().

input() macht etwa sinngemäß eval(raw_input()) und dabei kann alles mögliche rauskommen.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Antworten