जवाबों:
यहाँ एक सरल उदाहरण दिया गया है:
for letter in 'Django':
if letter == 'D':
continue
print("Current Letter: " + letter)
आउटपुट होगा:
Current Letter: j
Current Letter: a
Current Letter: n
Current Letter: g
Current Letter: o
यह लूप के अगले पुनरावृत्ति के लिए जारी है।
continue
करता है, लेकिन यह बहुत उपयोगी नहीं है, जब आप कर सकते थेif letter != 'D': print 'Current Letter:', letter
मैं लूप में जारी रखना पसंद करता हूं, जहां "व्यापार से नीचे" होने से पहले बहुत सारी प्रतियोगिताओं को पूरा करना है। इसलिए इस तरह कोड के बजाय:
for x, y in zip(a, b):
if x > y:
z = calculate_z(x, y)
if y - z < x:
y = min(y, z)
if x ** 2 - y ** 2 > 0:
lots()
of()
code()
here()
मुझे इस तरह का कोड मिलता है:
for x, y in zip(a, b):
if x <= y:
continue
z = calculate_z(x, y)
if y - z >= x:
continue
y = min(y, z)
if x ** 2 - y ** 2 <= 0:
continue
lots()
of()
code()
here()
इस तरह से करने से मैं बहुत गहराई से नेस्टेड कोड से बचता हूं। इसके अलावा, पहले सबसे अधिक बार होने वाले मामलों को समाप्त करके लूप को अनुकूलित करना आसान है, ताकि मुझे केवल अन्य शोस्टॉपर न होने पर अनंतिम लेकिन महत्वपूर्ण मामलों (जैसे विभाजक 0) से निपटना पड़े।
continue
इस फैशन में उपयोग करना समान है GOTO
। हालांकि, यह उपयोग करने का सही तरीका है GOTO
।
आमतौर पर वह स्थिति जहां जारी रहना आवश्यक / उपयोगी होता है, जब आप शेष कोड को लूप में छोड़ना चाहते हैं और पुनरावृत्ति जारी रखना चाहते हैं।
मैं वास्तव में विश्वास नहीं करता कि यह आवश्यक है, क्योंकि आप हमेशा उपयोग कर सकते हैं यदि कथन एक ही तर्क प्रदान करते हैं, लेकिन यह कोड की पठनीयता बढ़ाने के लिए उपयोगी हो सकता है।
if <condition>: continue
बजाय if not <condition>: ...
इंडेंटेशन के एक स्तर से बचा जाता है जो अन्यथा आवश्यक होगा यदि इसके बिना लिखा गया था।
continue
बयान का उपयोग करते हैं, हम अनिवार्य रूप से एक सशर्त परीक्षण खंड से बाहर कूद रहे हैं और लूप के पुनरावृत्ति को आगे बढ़ने की अनुमति देते हैं अगले पुनरावृत्ति के लिए? यह मेरे लिए स्पष्ट नहीं है कि यह उपयोग करने से बेहतर कैसे होगा else
। क्या यह केवल बेहतर पठनीयता और रन-टाइम प्रदर्शन के बारे में है?
import random
for i in range(20):
x = random.randint(-5,5)
if x == 0: continue
print 1/x
जारी रखना एक अत्यंत महत्वपूर्ण नियंत्रण कथन है। उपरोक्त कोड एक विशिष्ट एप्लिकेशन को इंगित करता है, जहां शून्य से एक विभाजन के परिणाम से बचा जा सकता है। जब मैं प्रोग्राम से आउटपुट को स्टोर करने की आवश्यकता होती है, तो मैं अक्सर इसका उपयोग करता हूं, लेकिन अगर प्रोग्राम क्रैश हो गया है तो आउटपुट को स्टोर नहीं करना चाहता। ध्यान दें, उपरोक्त उदाहरण का परीक्षण करने के लिए, अंतिम विवरण को प्रिंट 1 / फ्लोट (x) से बदलें, या जब भी कोई अंश हो, तो आपको शून्य मिलेगा, क्योंकि रैंडिंट एक पूर्णांक देता है। मैंने इसे स्पष्टता के लिए छोड़ दिया।
कुछ लोगों ने पठनीयता के बारे में टिप्पणी करते हुए कहा है, "ओह यह पठनीयता में मदद नहीं करता है कि ज्यादा, कौन परवाह करता है?"
मान लें कि आपको मुख्य कोड से पहले एक चेक की आवश्यकता है:
if precondition_fails(message): continue
''' main code here '''
ध्यान दें कि आप इसके बाद कर सकते हैं उस कोड को वैसे भी बदलने के बिना मुख्य कोड लिखे के । यदि आप कोड को अलग करते हैं, तो केवल "जारी" के साथ जोड़ी गई रेखा को हाइलाइट किया जाएगा क्योंकि मुख्य कोड में कोई रिक्ति परिवर्तन नहीं हैं।
कल्पना कीजिए कि यदि आपको उत्पादन कोड का एक ब्रेकफ़िक्स करना है, जो जारी रखने के साथ बस एक पंक्ति जोड़ रहा है। यह देखना आसान है कि जब आप कोड की समीक्षा करते हैं तो यह एकमात्र परिवर्तन होता है। यदि आप मुख्य कोड को if / in में लपेटना शुरू करते हैं, तो अंतर नए इंडेंट कोड को उजागर करेगा, जब तक कि आप रिक्ति परिवर्तन को अनदेखा नहीं करते हैं, जो विशेष रूप से पायथन में खतरनाक है। मुझे लगता है कि जब तक आप उस स्थिति में नहीं होते जब आपको शॉर्ट नोटिस पर कोड रोल करना पड़ता है, तो आप पूरी तरह से इसकी सराहना नहीं कर सकते।
def filter_out_colors(elements):
colors = ['red', 'green']
result = []
for element in elements:
if element in colors:
continue # skip the element
# You can do whatever here
result.append(element)
return result
>>> filter_out_colors(['lemon', 'orange', 'red', 'pear'])
['lemon', 'orange', 'pear']
continue
बयान यहाँ क्या जोड़ता है? इसका उपयोग करके इसे समाप्त किया जा सकता है element not in colors
, और कोड केवल पठनीय होगा।
मान लें कि हम उन सभी नंबरों को प्रिंट करना चाहते हैं जो 3 और 5 के गुणक नहीं हैं
for x in range(0, 101):
if x % 3 ==0 or x % 5 == 0:
continue
#no more code is executed, we go to the next number
print x
if x %3 == 0 or x % 5 == 0:
, pass
, else:
,print x
continue
। मेरा निष्कर्ष यह है कि कभी कोई आवश्यकता नहीं है , लेकिन कुछ मामलों में (जैसे यह) कोड का उपयोग करने में अधिक पठनीय है continue
। यह बहुत अच्छा उदाहरण है।
यह बिल्कुल आवश्यक नहीं है क्योंकि यह IFs के साथ किया जा सकता है लेकिन यह अधिक पठनीय है और रन टाइम में कम खर्चीला भी है।
यदि डेटा कुछ आवश्यकताओं को पूरा नहीं करता है, तो मैं इसे एक लूप में पुनरावृत्ति को छोड़ने के लिए उपयोग करता हूं:
# List of times at which git commits were done.
# Formatted in hour, minutes in tuples.
# Note the last one has some fantasy.
commit_times = [(8,20), (9,30), (11, 45), (15, 50), (17, 45), (27, 132)]
for time in commit_times:
hour = time[0]
minutes = time[1]
# If the hour is not between 0 and 24
# and the minutes not between 0 and 59 then we know something is wrong.
# Then we don't want to use this value,
# we skip directly to the next iteration in the loop.
if not (0 <= hour <= 24 and 0 <= minutes <= 59):
continue
# From here you know the time format in the tuples is reliable.
# Apply some logic based on time.
print("Someone commited at {h}:{m}".format(h=hour, m=minutes))
आउटपुट:
Someone commited at 8:20
Someone commited at 9:30
Someone commited at 11:45
Someone commited at 15:50
Someone commited at 17:45
जैसा कि आप देख सकते हैं, गलत मूल्य continue
बयान के बाद नहीं बना था ।
if
केवल वही कर सकता continue
है यदि सभी कोड एक ब्लॉक में समाहित हैं। ब्लॉक के continue
बाहर भी है कि skips कोड if
।
उदाहरण के लिए यदि आप एक चर के मूल्य के आधार पर विभिन्न चीजें करना चाहते हैं:
my_var = 1
for items in range(0,100):
if my_var < 10:
continue
elif my_var == 10:
print("hit")
elif my_var > 10:
print("passed")
my_var = my_var + 1
ऊपर दिए गए उदाहरण में अगर मैं break
दुभाषिया का उपयोग करता हूं तो लूप को छोड़ देगा। लेकिन इसके साथ continue
केवल if-elif स्टेटमेंट्स को छोड़ देता है और सीधे लूप के अगले आइटम पर जाता है।
my_var
की 0
।
continue
।
elif
एक होना चाहिए if
। कोड केवल वह स्वरूप नहीं देता है जो आप जानते हैं कि आप क्या कर रहे हैं।
continue
बस अगले पुनरावृत्ति तक लूप में बाकी कोड को छोड़ देता है