Verhindern iener Leereingabe

Hallo Pythonrunde. Ich möchte mit einem einfachen Programm beginnen, python zu lernen: raw_input von einzelnen Daten, um dann daraus einen vorgefertigten Brief zu drucken. Frage: Wie verhindert man die LeerEingabe? Habe nach langer Suche folgendes gefunden, verstehe aber nicht, wie das funkioniert. def command(s): print "command:", s while 1: a = raw_input("a-input") if not a: break command(a) print "finished" Vielleicht gibt es eine einfachere Varieante. Danke für Tips Philipp

Am Freitag, 28. September 2007 17:47 schrieb Philipp Walderdorff: Guten Morgen Philipp,
Frage: Wie verhindert man die LeerEingabe? Habe nach langer Suche folgendes gefunden, verstehe aber nicht, wie das funkioniert. In Python sind Variabeln die nicht belegt sind per Definition False. Im Programm unten wird durch "if not a" (wenn nicht a) genau das geprüft. Ist der Eingabe-String den raw_input liefert leer beendet sich das Programm. Ansonsten wird command ausgeführt.
def command(s): print "command:", s
while 1: a = raw_input("a-input") if not a: break command(a)
print "finished"
Vielleicht gibt es eine einfachere Varieante. Nein, das ist so ziemlich die einfachste Variante. Ich würde Dir ein Einsteiger Buch zum Thema Programmieren empfehlen, am besten eins das als Lernsprache Python einsetzt :-). Damit schlägst Du gleich zwei Fliegen mit einer Klappe :-). Sich nur auf das Internet zu verlassen ist für ein Anfänger - denke ich - etwas verwirrend.
Ich habe Dein Beispiel ein bisschen erweitert probiere das mal aus: def printer(a): print a def command(s): print "command:", s while 1: a = raw_input("a-input") if not a: break command(a) print "finished" Rufe die Funktion command so auf: command(printer) Kleiner Tipp von mir, IDEL ist zum Interaktiven Ausprobieren von Python sehr gut geeignet, mach davon sehr stark (!) Gebrauch. Viel Spaß beim lernen Albert

--On 29. September 2007 11:13:09 +0200 Albert Hermeling <albert.hermeling@t-online.de> wrote:
Am Freitag, 28. September 2007 17:47 schrieb Philipp Walderdorff:
Guten Morgen Philipp,
Frage: Wie verhindert man die LeerEingabe? Habe nach langer Suche folgendes gefunden, verstehe aber nicht, wie das funkioniert. In Python sind Variabeln die nicht belegt sind per Definition False.
Diese Aussage ist doppeldeutig. "Nicht belegt" im Sinne von undefiniert wird in Python immer einen NameError verursachen. raw_input() weisst natürlich bei einer leeren Eingabe der Variablen 'a' einen Wert zu - nämlichen einen Leerstring (der Länge 0). Das kann man aber nicht als "nicht belegt" bezeichnen. Leerstrings evaluieren allerdings bei einer Abfrage zu False. -aj

Philipp Walderdorff schrieb:
def command(s): print "command:", s
while 1: a = raw_input("a-input") if not a: break command(a)
print "finished"
Warum eigentlich eine rekursion? Würde eine einfache Schleife nicht vollkommen reichen? def command(s): a = "" while not a: a = raw_input("a-input") print a print "finished" Mag sein das ich die Aufgabenstellung nicht so ganz verstanden hab. Grüße Alexander
participants (4)
-
A. Nigl
-
Albert Hermeling
-
Andreas Jung
-
Philipp Walderdorff