পাইথনে "চালিয়ে" বিবৃতি ব্যবহারের উদাহরণ?


177

সংজ্ঞা এর continueবিবৃতি হল:

continueবিবৃতি লুপ এর পরবর্তী পুনরাবৃত্তিতে সঙ্গে চলতে থাকে।

আমি কোডের কোনও ভাল উদাহরণ পাই না।

কেউ continueপ্রয়োজন আছে যেখানে কিছু সহজ ক্ষেত্রে পরামর্শ দিতে পারে ?

উত্তর:


218

এখানে একটি সাধারণ উদাহরণ:

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

এটি লুপের পরবর্তী পুনরাবৃত্তিতে অবিরত থাকে।


1
আমি গত তিন বা চার দিন ধরে ভাবছিলাম, কেন আমাকে কখনই 'চালিয়ে যাওয়া' স্টেটমেন্টের প্রয়োজন হবে এবং তারপরে আমি এই পোস্টটিতে চলে যা ফলস্বরূপ আমাকে কিছু কিউএ সাহায্য করে - অনেক ধন্যবাদ!
ফ্রেডি

3
এখানেও একইভাবে, যখন আমরা পাইথন স্ক্রিপ্ট লিখি (ক্রোন জবের জন্য) এবং বড় মূল্যবোধগুলিতে পুনরাবৃত্তি করি এবং কিছু ব্যতিক্রম ঘটে তখন ক্রোন জব বন্ধ হয়ে যায় এবং আপনি কেবল জানতে পারবেন যে পরের দিন, এটি সত্যিই সেই ক্ষেত্রে অনেক সাহায্য করে, হ্যাঁ আমরা ব্যতিক্রমটিতে মেইল ​​প্রেরণ বৈশিষ্ট্যটি লিখতে পারি তবে তবুও কার্যকর করা বন্ধ হবে।
স্নেহাল পরমার

2
এটি কী করবে continueতা চিত্রিত করে তবে এটি অতিরিক্ত কার্যকর নয়, যখন আপনি করতে পারতেনif letter != 'D': print 'Current Letter:', letter
Chris_Rands

আমি প্রার্থনা / অপসারণ, বা দ্রুত / অপসারণ পছন্দ করতাম।
বেনিয়ামিন ক্রাউজিয়ার

102

আমি লুপগুলিতে চালিয়ে যাওয়া ব্যবহার করতে পছন্দ করি যেখানে আপনি "ব্যবসায়ের দিকে নামার আগে" প্রচুর চুক্তি পূরণ করতে হবে। পরিবর্তে এই কোড এর পরিবর্তে:

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 হয়) মোকাবেলা করতে হয়।


2
সুতরাং "চালিয়ে যাওয়া" ইন্ডেন্টেশন হ্রাস করে বেশিরভাগ পাঠযোগ্যতার জন্য ব্যবহৃত হয়। আমি "অবিরত" কোনও অভিব্যক্তি শক্তি যোগ করে কিনা তা ভাবছি।
জনজি

14
continueএই ফ্যাশন ব্যবহার করা অনুরূপ GOTO। তবে এটি ব্যবহারের সঠিক উপায় GOTO
dotancohen

1
@ জোহানজি আমি বিশ্বাস করি না যে চালিয়ে যাওয়া (বা বিরতি, সে ক্ষেত্রে) এর কোনও ব্যবহার রয়েছে যা এগুলি ছাড়া পুনরুত্পাদন করা যায় না, যদিও এটি রান-টাইমে ব্যয়বহুল হতে পারে।
স্পার

18

আপনি যখন লুপের মধ্যে বাকি কোডটি এড়িয়ে যেতে চান এবং পুনরাবৃত্তিটি চালিয়ে যেতে চান তখন পরিস্থিতিটি অবিরত প্রয়োজনীয় / দরকারী is

আমি এটি সত্যই বিশ্বাস করি না, যেহেতু আপনি সর্বদা একই যুক্তি সরবরাহ করতে যদি বিবৃতি ব্যবহার করতে পারেন তবে কোডের পঠনযোগ্যতা বাড়াতে এটি কার্যকর হতে পারে।


23
নোট করুন if <condition>: continueপরিবর্তে ব্যবহার করে এমন if not <condition>: ...স্তরকে এড়িয়ে যায় যা অন্যথায় এটি লেখা না থাকলে প্রয়োজন হত।
ড্যান ডি

1
আমি জনজি-তে একটি অনুরূপ কিউএন পোস্ট করতে যাচ্ছিলাম কিন্তু তারপরে আমি দেখতে পেয়েছি যে তিনি ইতিমধ্যে জিজ্ঞাসা করেছিলেন যা আমি জানতে চেয়েছি। এখানে সমস্ত প্রতিক্রিয়াগুলি পড়তে সহায়তা করেছে, তবে আমার এখনও একটি বিষয় সম্পর্কে নিশ্চিত হওয়া দরকার - তাই হ'ল আমরা যখনই কোনও continueবিবৃতি ব্যবহার করি তখনই আমরা শর্তসাপেক্ষ পরীক্ষার বিভাগটি থেকে মূলত ঝাঁপিয়ে পড়ে এবং লুপটির পুনরাবৃত্তিকে এগিয়ে যেতে দিয়েছি allowing পরবর্তী পুনরাবৃত্তি? এটি ব্যবহারের চেয়ে কীভাবে ভাল হবে তা আমার কাছে স্পষ্ট নয় else। এটি কি কেবলমাত্র উন্নত পাঠযোগ্যতা এবং রান-টাইম পারফরম্যান্স সম্পর্কে?
AKKO

"আমি বিশ্বাস করি না এটি প্রয়োজনীয়" ... ঠিক আছে, পাইথন স্রষ্টারা অন্যথায় ভেবেছিলেন।
জিন-

12
import random  

for i in range(20):  
    x = random.randint(-5,5)  
    if x == 0: continue  
    print 1/x  

চালিয়ে যাওয়া একটি অত্যন্ত গুরুত্বপূর্ণ নিয়ন্ত্রণ বিবৃতি। উপরের কোডটি একটি সাধারণ অ্যাপ্লিকেশন নির্দেশ করে, যেখানে শূন্য দ্বারা বিভাজনের ফলাফল এড়ানো যায়। প্রোগ্রামগুলি থেকে আউটপুট সংরক্ষণ করার সময় আমি এটি প্রায়শই ব্যবহার করি, তবে প্রোগ্রাম ক্র্যাশ হয়ে থাকলে আউটপুট সংরক্ষণ করতে চাই না। দ্রষ্টব্য, উপরের উদাহরণটি পরীক্ষা করার জন্য, প্রবন্ধটি 1 / ফ্লোট (এক্স) দিয়ে শেষের বিবৃতিটি প্রতিস্থাপন করুন বা যখনই কোনও ভগ্নাংশ থাকবে তখনই আপনি শূন্য পাবেন, যেহেতু র্যান্ডেন্টটি পূর্ণসংখ্যা দেয় returns আমি স্বচ্ছতার জন্য এটি বাদ দিয়েছি।


10

কিছু লোক পঠনযোগ্যতা সম্পর্কে মন্তব্য করে বলেছে যে "ওহ এটি পাঠের পক্ষে এতটা সাহায্য করে না, কে চিন্তা করে?"

ধরুন আপনার মূল কোডের আগে একটি চেক প্রয়োজন:

if precondition_fails(message): continue

''' main code here '''

নোট আপনি যেভাবেই কোনও কোড পরিবর্তন না করে মূল কোডটি লেখার পরে এটি করতে পারেন । আপনি যদি কোডটি পৃথক করেন তবে মূল কোডটিতে কোনও ব্যবধান পরিবর্তন না হওয়ায় কেবল "চালিয়ে যাও" যুক্ত যুক্ত লাইনটি হাইলাইট করা হবে।

ভাবুন আপনার যদি প্রডাকশন কোডের একটি ব্রেকফিক্স করতে হয়, যা কেবল চালিয়ে যাওয়ার সাথে একটি লাইন যুক্ত করে। আপনি কোডটি পর্যালোচনা করার সময় এটিই একমাত্র পরিবর্তন এটি দেখতে সহজ। যদি আপনি / অন্য কোনও ক্ষেত্রে মুখ্য কোডটি মোড়তে শুরু করেন তবে ডিফ নতুন নতুন ইনডেন্ট কোডটি হাইলাইট করবে, যদি না আপনি স্পেসিং পরিবর্তনগুলিকে অগ্রাহ্য করেন, যা বিশেষত পাইথনের ক্ষেত্রে বিপজ্জনক। আমি মনে করি আপনি যদি সংক্ষিপ্ত বিজ্ঞপ্তিতে কোডটি রোল আউট করতে না চান তবে আপনি এটির পুরোপুরি প্রশংসা করতে পারবেন না।


5
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']

4
তবে continueবিবৃতিটি এখানে কী যুক্ত করে ? এটি ব্যবহার করে নির্মূল করা যেতে পারে element not in colorsএবং কোডটি ততটাই পাঠযোগ্য।
এখুমোরো

4

ধরা যাক আমরা সমস্ত সংখ্যা মুদ্রণ করতে চাই যা 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
ওয়াইল্ডকার্ড

সঠিক উপায় হয় চালিয়ে যাওয়া ব্যবহার করা বা অপারেটরটি নয়। অযথা পাস কেন ব্যবহার করবেন?
ytpillai

আমি আপনার উপায় ভাল পছন্দ (তাই upvote)। আমি ব্যবহার করার প্রয়োজন আছে কিনা বাছাই চেষ্টা করার জন্য এই পৃষ্ঠায় এসেছি continue। আমার উপসংহারটি হল যে কখনই প্রয়োজন হয় না , তবে কিছু ক্ষেত্রে (এইগুলির মতো) কোডটি ব্যবহার করে আরও পঠনযোগ্য continue। এটি একটি খুব ভাল উদাহরণ।
ওয়াইল্ডকার্ড

3

এটি একেবারে প্রয়োজনীয় নয় যেহেতু এটি আইএফএস দিয়ে করা যায় তবে এটি আরও পাঠযোগ্য এবং রান সময়কালেও কম ব্যয়বহুল।

ডেটা কিছু প্রয়োজনীয়তা পূরণ না করে একটি লুপে একটি পুনরাবৃত্তি এড়ানোর জন্য আমি এটি ব্যবহার করি:

# 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বিবৃতি দেওয়ার পরে এটি তৈরি করে নি ।


ifcontinueসমস্ত কোড কোনও ব্লকে থাকা থাকলে কেবল সেগুলি করতে পারে । continueএমনকি ifব্লকের বাইরে থাকা কোডগুলিও এড়িয়ে যায় ।
bryc

কেন ঘন্টা 24-সমেত কিন্তু মিনিট 60-একচেটিয়া?
প্যাট্রিক আর্টনার

কোনও নির্দিষ্ট কারণ নেই, কেবল উদাহরণস্বরূপ, নির্দ্বিধায় সম্পাদনা করতে পারেন
বাস্তিয়ান

1

উদাহরণস্বরূপ, যদি আপনি কোনও ভেরিয়েবলের মানের উপর নির্ভর করে ডিফেরেন্ট জিনিসগুলি করতে চান:

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 বিবৃতি এড়িয়ে যায় এবং সরাসরি লুপের পরবর্তী আইটেমে যায়।


3
আপনার শর্তটি কখনই মুদ্রণ করবে না, কারণ প্রথম শর্তটি সর্বদা সত্য। একটি প্রাথমিক মান অভিমানী my_varএর 0
ড্যান ডি

আমি কেবল আমার একটি পুরানো কোডের একটি উদাহরণ মানিয়েছি। ভেরের মূল মান 0 নয় এবং বাড়ার অংশটি মূল জায়গাটি না থাকায় সুবিধার জন্য যুক্ত করা হয়েছিল। যেহেতু এটি একটি উদাহরণ এবং এর মান সত্যিকার অর্থে গুরুত্বপূর্ণ নয় আমি অনুমান করি এটি ঠিক আছে।
jonathan.hepp

9
এটা ঠিক না. এটি ব্যবহারের জন্য ভাল বিজ্ঞাপন নয় continue
জন মাচিন

3
এবং প্রথমটি elifএকটি হওয়া উচিত if। কোডটি কেবল এমন চেহারা দেয় না যা আপনি জানেন যে আপনি কী করছেন।
জন মাচিন

এটি একটি খারাপ উদাহরণ
প্যাট্রিক

0

continue পরবর্তী পুনরাবৃত্তি হওয়া পর্যন্ত লুপের মধ্যে বাকী কোডটি কেবল এড়িয়ে যায়

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.