13 NİSAN 2009, PAZARTESİ
Python-while döngüsü taklit?
Python bir programda do-while döngüsü taklit etmek istiyorum. Ama, ne yazık ki, aşağıdaki basit kod çalışmıyor:
l = [ 1, 2, 3 ]
i = l.__iter__()
s = None
while True :
if s :
print s
try :
s = i.next()
except StopIteration :
break
print "done"
"1,2,3,bitti", aşağıdaki çıktıyı aldım: yerine
[stdout:]1
[stdout:]2
[stdout:]3
None['Traceback (most recent call last):
', ' File "test_python.py", line 8, in <module>
s = i.next()
', 'StopIteration
']
Ben yakalamak için yapmak 'dur yineleme' excepton ve aradan bir süre ne olabilir döngü doğru?
Böyle bir şey gerekli olabilir neden örnek. Durum makinesi:
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
CEVAP
13 NİSAN 2009, PAZARTESİ
Yapmak için çalışıyoruz ne emin değilim. Bu gibi do-while döngüsü uygulayabilirsiniz:
while True:
stuff()
if fail_condition:
break
Ya da:
stuff()
while not fail_condition:
stuff()
Bunu yaparken bir döngü listedeki şeyler yazdırmak için kullanmaya ne yapıyorsun? Neden sadece kullanmak değil:
for i in l:
print i
print "done"
Güncelleme:
Çok satırlık bir liste var mı? Ve yineleme tutmak ister misin? Hakkında:
for s in l:
while True:
stuff()
# use a "break" instead of s = i.next()
Böyle bir şey isterim ne yakın görünüyor mu? Kod örneği ile, o da şu:
for s in some_list:
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] )
break # get next s
else
state = STATE_CODE
# re-evaluate same line
# continues automatically
Bunu Paylaş:
Python taklit İşaretçiler...
Güvenli şamandıra python tamsayı dönüş...
Nasıl bir Python nesne içinde mi görün...
Python Django giriş zarif Kur...
Neden Python 3.x'In super() sihir...