Ich muss eine do-while-Schleife in einem Python-Programm emulieren. Leider funktioniert der folgende unkomplizierte Code nicht:
list_of_ints = [ 1, 2, 3 ]
iterator = list_of_ints.__iter__()
element = None
while True:
if element:
print element
try:
element = iterator.next()
except StopIteration:
break
print "done"
Anstelle von "1,2,3,done" wird die folgende Ausgabe gedruckt:
[stdout:]1
[stdout:]2
[stdout:]3
None['Traceback (most recent call last):
', ' File "test_python.py", line 8, in <module>
s = i.next()
', 'StopIteration
']
Was kann ich tun, um die Ausnahme "Stop Iteration" abzufangen und eine while Schleife richtig zu unterbrechen?
Ein Beispiel dafür, warum so etwas notwendig sein kann, ist unten als Pseudocode dargestellt.
Zustandsmaschine:
s = ""
while True :
if state is STATE_CODE :
if "//" in s :
tokens.add( TOKEN_COMMENT, s.split( "//" )[1] )
state = STATE_COMMENT
else :
tokens.add( TOKEN_CODE, s )
if state is STATE_COMMENT :
if "//" in s :
tokens.append( TOKEN_COMMENT, s.split( "//" )[1] )
else
state = STATE_CODE
# Re-evaluate same line
continue
try :
s = i.next()
except StopIteration :
break