Tôi cần mô phỏng một vòng lặp do-while trong chương trình Python. Thật không may, mã đơn giản sau đây không hoạt động:
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"
Thay vì "1,2,3, xong", nó in ra kết quả sau:
[stdout:]1
[stdout:]2
[stdout:]3
None['Traceback (most recent call last):
', ' File "test_python.py", line 8, in <module>
s = i.next()
', 'StopIteration
']
Tôi có thể làm gì để bắt ngoại lệ 'dừng lặp' và phá vỡ vòng lặp while đúng cách?
Một ví dụ về lý do tại sao một điều như vậy có thể cần thiết được hiển thị dưới đây là mã giả.
Máy nhà nước:
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()
thay vì Không và có thể thực hiện một số công việc ban đầu thay vì chỉ thực hiện lần đầu tiên vượt qua vòng lặp vô dụng.