2014-12-31 3 views
0

Я хочу, чтобы мой код, считанный в строках числа и прекратить чтение в том, когда три нуля, вводятся в Что-то вроде этого:. Как читать строки до определенной строки?

1231343 
13242134 
. 
. 
(more lines of numbers) 
. 
. 
0 0 0(end of the line) 

Я пытался делать что-то подобное, но, очевидно, не работает потому что строка не была объявлена ​​до первой строки.

while line != "0 0 0": 
    line = raw_input() 

Я даже на правильном пути? Или мне нужно использовать что-то еще?

+1

Так почему бы не просто добавить 'line = None' непосредственно перед' whil é'? –

+0

ваш код работает для меня. –

+0

О, я думаю, я тоже мог это сделать: p –

ответ

6

Как об использовании бесконечного цикла, а также использовать break statement, чтобы выйти из цикла, если условие выполнено:

while True: 
    line = raw_input() 
    if line == '0 0 0': 
     break 
    # do something with `line` 

Или с помощью iter со значением дозорным:

for line in iter(raw_input, '0 0 0'): # will keep call `raw_input` until meet 0 0 0 
    # do something with `line` 
+0

Большое вам спасибо! –

+0

определенно 'iter' является идеальным решением – jamylak

+0

@jamylak,' raw_input' удаляет завершающую новую строку. – falsetru

1

Предполагая, что вы читаете из файла

for line in open('path to file'): 
    if line.strip() == '0 0 0': 
     break 
+0

OP использует 'raw_input': чтение из stdin. – falsetru

+0

IOW, 'open ('путь к файлу')' должен быть 'sys.stdin'. – falsetru

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