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

Probleme bei der Eingabe.

Beitragvon polypus » Donnerstag 29. September 2005, 15:22

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??
Benutzeravatar
Leonidas
Administrator
Beiträge: 16023
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Beitragvon Leonidas » Donnerstag 29. September 2005, 15:51

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

Beitragvon polypus » Donnerstag 29. September 2005, 16:48

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!
Benutzeravatar
Leonidas
Administrator
Beiträge: 16023
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Beitragvon Leonidas » Donnerstag 29. September 2005, 17:05

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

Beitragvon polypus » Freitag 30. September 2005, 08:13

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

Beitragvon henning » Freitag 30. September 2005, 09:12

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?
Benutzeravatar
Leonidas
Administrator
Beiträge: 16023
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Beitragvon Leonidas » Freitag 30. September 2005, 12:27

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 Modvoice

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder