मुझे पायथन कार्यक्रम में एक लूप करते समय अनुकरण करने की आवश्यकता है। दुर्भाग्य से, निम्नलिखित सीधा कोड काम नहीं करता है:
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"
"1,2,3, किया गया" के बजाय, यह निम्नलिखित आउटपुट प्रिंट करता है:
[stdout:]1
[stdout:]2
[stdout:]3
None['Traceback (most recent call last):
', ' File "test_python.py", line 8, in <module>
s = i.next()
', 'StopIteration
']
'रोक पुनरावृत्ति' अपवाद को पकड़ने और थोड़ी देर के लूप को ठीक से तोड़ने के लिए मैं क्या कर सकता हूं?
इस तरह की चीज की आवश्यकता क्यों हो सकती है, इसका एक उदाहरण नीचे छद्मकोश के रूप में दिखाया गया है।
राज्य मशीन:
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
s=i.next()
कोई भी नहीं के बजाय सेट करते हैं और संभवतः कुछ प्रारंभिक काम करते हैं, बजाय इसके कि आप अपना पहला पास लूप को बेकार कर दें।