Zuweisungsbedingung in Python while Loop

In C kann man das machen

while( (i=a) != b ) { } 

Aber in Python, scheint es, kann man nicht.

 while (i = sys.stdin.read(1)) != "\n": 

Erzeugt

  while (i = sys.stdin.read(1)) != "\n": ^ SyntaxError: invalid syntax 

(Die ^ sollte auf der = )

Gibt es einen Workaround?

4 Solutions collect form web for “Zuweisungsbedingung in Python while Loop”

Pause benutzen:

 while True: i = sys.stdin.read(1) if i == "\n": break # etc... 

Sie können dies mit der eingebauten Funktion iter() mit der Zwei-Argument-Aufrufmethode erreichen:

 import functools for i in iter(fuctools.partial(sys.stdin.read, 1), '\n'): ... 

Dokumentation dazu:

iter(o[, sentinel])

Wenn das zweite Argument, Sentinel , gegeben wird, dann muss o ein kallierbares Objekt sein. Der Iterator, der in diesem Fall erstellt wird, ruft o ohne Argumente für jeden Aufruf seiner next() Methode auf; Wenn der zurückgegebene Wert gleich Sentinel ist , wird StopIteration erhöht, andernfalls wird der Wert zurückgegeben.

Eine nützliche Anwendung der zweiten Form von iter() besteht darin, Zeilen einer Datei zu lesen, bis eine bestimmte Zeile erreicht ist. Das folgende Beispiel liest eine Datei, bis die readline() Methode einen leeren String zurückgibt:

 with open('mydata.txt') as fp: for line in iter(fp.readline, ''): process_line(line) 

Persönlich mag ich imm's und Marks Antworten mit break , aber du könntest auch:

 a = None def set_a(x): global a a = x return a while set_a(sys.stdin.read(1)) != '\n': print('yo') 

Obwohl ich es nicht empfehlen würde.

Eine Version ohne functools :

 for i in iter(lambda: sys.stdin.read(1), '\n'): 
  • Wie brechen Sie aus, während Schleife in Python?
  • Wie man Variable Zuweisung innerhalb einer Weile (Ausdruck) Schleife in Python?
  • Wie stelle ich sicher, dass ein Python while-loop eine bestimmte Zeitspanne dauert?
  • Python-Looping und Programm neu starten, wenn true
  • Python 3.2 globale Variable nicht aktualisiert, wenn seine in einem Thread
  • Schwein Latein Übersetzer
  • Python Während der Schleife funktioniert der und (&) - Operator nicht
  • Während die Schleife auf Eingabe python warten
  • Umwandlung für Loops zu Loops in Python
  • Mit Countdown-Timer zu springen, während Schleife Python
  • Python & PyGTK: Stop, während auf Knopf klicken
  • Python ist die beste Programmiersprache der Welt.