I have a program like this:
def read():
while True:
for line in temp1:
if event in line:
print temp1.next()
elif date in line:
print temp1.next()
elif ending in line:
print 'End of file'
break
event = '1'
date = '2'
ending = '3'
temp1 = open('test.txt')
And test.txt looks like this:
1
ABC
2
CAB
3
The program outputs this:
ABC
CAB
And then it goes into an infinite loop. Is there a way to fix this?
2 Answers 2
Your break statement only breaks out of the for loop (if it's hit). It doesn't, and indeed, can't break out of the while loop as well. Though I'm not sure what the while loop is there for, since the for loop should iterate over the whole file. Since you're already in a function, you can use a return statement to break out of multiple loops (though it would probably be better to just get rid of the extra loop).
Comments
Add a second break statement on the line after the first break statement, but line it up with your for statement.
breakis breaking out of the for loop, not the while loop.while 1is understood,while Trueis typically better for clarity.