2016-04-13 7 views
0

Ich versuche, ein einfaches Programm zu schreiben, die von der Tastatur als sys.stdin.readline()Python sys.stdin for-Schleife nicht funktioniert

ich es in einer ‚für‘ Schleife als

zu tun versuchen lesen

Problem ist 1) Die for-Schleife wird nicht ausgeführt. Es tritt nach der ersten Eingabe 2) die if-Anweisung ist nicht getroffen zu werden, wenn der Eingang 3) zu stoppen, wenn ich Eingang „hallo“ und drücken Sie anschließend Strg + DI Ausgang als „H“ „I“

Ich sehe kann mein Ziel durch eine while-Schleife erreichen, wie unten gezeigt, ABER wie macht man das in der For-Schleife?

import sys 
def readfromconsole(): 
new_list = [] 
while True: 
    line = sys.stdin.readline().rstrip("\n") 
    if(line == 'enough'): 
     break 
    else: 

     new_list.append(line) 
print(new_list) 
return 
print("Welcome") 
print("please enter your input, enough to stop") 
readfromconsole() 

Antwort

0

Es stoppt nach der ersten Interaktion, weil Sie den Wert, der iteriert wird, in der Definition der for-Schleife zuweisen. Sie können dies sehen, indem Sie sys.stdin.readline() im Interpreter tun. Dies bedeutet, dass Ihre Schleife

entspricht
for line in <first entered line>: 
    do things 

In Ihrer while-Schleife, wird es für mehr Eingänge zu fragen halten, und so Ihr Code funktioniert.

+0

so gibt es keine Möglichkeit, von der Tastatur nur mit for-Schleife zu lesen? anders als mit Eingabe()? – SanBan