2016-04-13 4 views
0

Я пытаюсь написать простую программу, которая будет считывать с клавиатуры, как sys.stdin.readline()питон sys.stdin цикл не работает

Я пытаюсь сделать это в «для» петли, как

import sys 
for line in sys.stdin.readline().strip("\n"): 
if(line == 'stop'): 
    break 
print(line) 

Проблема 1) Цикл for не выполняется. Он выходит после первого входа 2) Условный оператор не получает удар, когда вход остановки 3) если вход «привет» и нажмите Ctrl + DI увидеть результат, как «H» «Я»

I может достичь моей цели с помощью цикла while, как показано ниже, но как это сделать в цикле For?

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() 

ответ

0

Он останавливается после первого вмешательства, потому что вы назначаете значение, которое повторяется в определении цикла for. Вы можете увидеть это, выполнив sys.stdin.readline() в интерпретаторе. Это означает, что ваш цикл эквивалентно

for line in <first entered line>: 
    do things 

В ваше время цикла, он будет держать просить больше входов, и поэтому ваш код работает.

+0

так что нет возможности читать с клавиатуры, используя только для цикла? кроме использования input()? – SanBan

Смежные вопросы