मैं एक सूची के माध्यम से पुनरावृति करने के लिए कोशिश कर रहा हूँ, और मैं विशिष्ट कार्रवाई करने के लिए जब और केवल जब यात्रा सूची के अंत पर पहुंच गया, नीचे उदाहरण देखें की जरूरत है:सूची के माध्यम से दोहराएं और अजगर में StopIteration संभाल खूबसूरती से
data = [1, 2, 3]
data_iter = data.__iter__()
try:
while True:
item = data_iter.next()
try:
do_stuff(item)
break # we just need to do stuff with the first successful item
except:
handle_errors(item) # in case of no success, handle and skip to next item
except StopIteration:
raise Exception("All items weren't successful")
मेरा मानना है कि यह कोड बहुत पाइथनिक नहीं है, इसलिए मैं एक बेहतर तरीका ढूंढ रहा हूं। मुझे लगता है कि आदर्श कोड नीचे इस काल्पनिक टुकड़े की तरह दिखना चाहिए:
data = [1, 2, 3]
for item in data:
try:
do_stuff(item)
break # we just need to do stuff with the first successful item
except:
handle_errors(item) # in case of no success, handle and skip to next item
finally:
raise Exception("All items weren't successful")
किसी भी विचार का स्वागत है।
'else' के साथ 'आखिरकार' को प्रतिस्थापित करें? – WolframH
"सभी आइटम सफल नहीं थे" के बजाय आपके पास ''सभी आइटम सफल नहीं थे' 'क्यों? वह मध्य एस्ट्रोफ़े आपके स्ट्रिंग/अपवाद को तोड़ देगा यदि यह चलता है। इसके अलावा, वोल्फ्रामएच के बिंदु पर, [डॉक्स] (http://docs.python.org/reference/compound_stmts.html#for) देखें - 'आखिरकार' के बजाय 'else' काम करना चाहिए। – thegrinner
यह ध्यान देने योग्य है कि 'छोड़कर:' एक भयानक बात है - अगर यह सिर्फ उदाहरण के लिए है, ठीक है, लेकिन किसी भी वास्तविक उदाहरण में, कृपया केवल एक विशिष्ट अपवाद प्राप्त करें। –