يسمح لك استخدام حلقات for
أو while
في بايثون بأتمتة وتكرار المهام بطريقة فعّالة.
لكن في بعض الأحيان، قد يتدخل عامل خارجي في طريقة تشغيل برنامجك، وعندما يحدث ذلك، فربما تريد من برنامجك الخروج تمامًا من حلقة التكرار، أو تجاوز جزء من الحلقة قبل إكمال تنفيذها، أو تجاهل هذا العامل الخارجي تمامًا. لذا يمكنك فعل ما سبق باستخدام تعابير break
و continue
و pass
.
التعبير break
يوفِّر لك التعبير break
القدرة على الخروج من حلقة التكرار عند حدوث عامل خارجي. حيث عليك وضع التعبير break
في الشيفرة التي ستُنفَّذ في كل تكرار للحلقة، ويوضع عادةً ضمن تعبير if
.
ألقِ نظرةً إلى أحد الأمثلة الذي يستعمل التعبير break
داخل حلقة for
:
number = 0 for number in range(10): number = number + 1 if number == 5: break # break here print('Number is ' + str(number)) print('Out of loop')
هذا برنامجٌ صغيرٌ، هيّأنا في بدايته المتغير number
بجعله يساوي الصفر، ثم بنينا حلقة تكرار for
التي تعمل لطالما كانت قيمة المتغير number
أصغر من 10.
ثم قمنا بزيادة قيمة المتغير number
داخل حلقة for
بمقدار 1 في كل تكرار، وذلك في السطر number = number + 1
.
ثم كانت هنالك عبارة if
التي تختبر إن كان المتغير number
مساوٍ للرقم 5، وعند حدوث ذلك فسيُنفَّذ التعبير break
للخروج من الحلقة.
وتوجد داخل حلقة التكرار الدالة print()
التي تُنفَّذ في كل تكرار إلى أن نخرج من الحلقة عبر التعبير break
، وذلك لأنَّها موجودة بعد التعبير break
.
لكي نتأكد أننا خرجنا من الحلقة، فوضعنا عبارة print()
أخيرة موجودة خارج حلقة for
.
سنرى الناتج الآتي عند تنفيذ البرنامج:
Number is 1
Number is 2
Number is 3
Number is 4
Out of loop
الناتج السابق يُظهِر أنَّه بمجرد أن أصبح العدد الصحيح number
مساويًا للرقم 5، فسينتهي تنفيذ حلقة التكرار عبر التعبير break
.
الخلاصة: التعبير break
يؤدي إلى الخروج من حلقة التكرار.
التعبير continue
التعبير continue
يسمح لنا بتخطي جزء من حلقة التكرار عند حدوث عامل خارجي، لكن إكمال بقية الحلقة إلى نهايتها. بعبارةٍ أخرى: سينتقل تنفيذ البرنامج إلى أوّل حلقة التكرار عند تنفيذ التعبير continue
.
يجب وضع التعبير continue
في الشيفرة التي ستُنفَّذ في كل تكرار للحلقة، ويوضع عادةً ضمن تعبير if
.
سنستخدم نفس البرنامج الذي استعملناها لشرح التعبير break
أعلاه، لكننا سنستخدم التعبير continue
بدلًا من break
:
number = 0
for number in range(10):
number = number + 1
if number == 5:
continue # continue here
print('Number is ' + str(number))
print('Out of loop')
الفرق بين استخدام التعبير continue
بدلًا من break
هو إكمال تنفيذ الشيفرة بغض النظر عن التوقف الذي حدث عندما كانت قيمة المتغير number
مساويةً إلى الرقم 5. لننظر إلى الناتج:
Number is 1
Number is 2
Number is 3
Number is 4
Number is 6
Number is 7
Number is 8
Number is 9
Number is 10
Out of loop
نلاحظ أنَّ السطر الذي يجب أن يحتوي على Number is 5
ليس موجودًا في المخرجات، لكن سيُكمَل تنفيذ حلقة التكرار بعد هذه المرحلة مما يطبع الأرقام من 6 إلى 10 قبل إنهاء تنفيذ الحلقة.
يمكنك استخدام التعبير continue
لتفادي استخدام تعابير شرطية معقدة ومتشعّبة، أو لتحسين أداء البرنامج عن طريق تجاهل الحالات التي ستُرفَض نتائجها.
الخلاصة: التعبير continue
سيؤدي إلى جعل البرنامج يتجاهل تنفيذ حلقة التكرار عند تحقيق شرط معين، لكن بعدئذٍ سيُكمِل تنفيذ الحلقة كالمعتاد.
التعبير pass
التعبير pass
يسمح لنا بالتعامل مع أحد الشروط دون إيقاف عمل حلقة التكرار بأي شكل، أي ستُنفَّذ جميع التعابير البرمجية الموجودة في حلقة التكرار ما لم تستعمل تعابير مثل break
أو continue
فيها.
وكما هو الحال مع التعابير السابقة، يجب وضع التعبير pass
في الشيفرة التي ستُنفَّذ في كل تكرار للحلقة، ويوضع عادةً ضمن تعبير if
.
سنستخدم نفس البرنامج الذي استعملناها لشرح التعبير break
أو continue
أعلاه، لكننا سنستخدم التعبير pass
هذه المرة:
number = 0
for number in range(10):
number = number + 1
if number == 5:
pass # pass here
print('Number is ' + str(number))
print('Out of loop')
التعبير pass
الذي يقع بعد العبارة الشرطية if
يخبر البرنامج أنَّ عليه إكمال تنفيذ الحلقة وتجاهل مساواة المتغير number
للرقم 5.
لنشغِّل البرنامج ولننظر إلى الناتج:
Number is 1
Number is 2
Number is 3
Number is 4
Number is 5
Number is 6
Number is 7
Number is 8
Number is 9
Number is 10
Out of loop
لاحظنا عند استخدامنا للتعبير pass
في هذا البرنامج أنَّ البرنامج يعمل كما لو أننا لم نضع عبارة شرطية داخل حلقة التكرار؛ حيث يخبر التعبير pass
البرنامج أن يكمل التنفيذ كما لو أنَّ الشرط لم يتحقق.
يمكن أن تستفيد من التعبير pass
عندما تكتب برنامجك لأوّل مرة أثناء تفكيرك بحلّ مشكلة ما عبر خوارزمية، لكن قبل أن تضع التفاصيل التقنية له.
الخلاصة
تسمح لك التعابير break
و continue
و pass
باستعمال حلقات for
و while
بطريقةٍ أكثر كفاءة.
ترجمة –وبتصرّف– للمقال How To Use Break, Continue, and Pass Statements when Working with Loops in Python 3 لصاحبته Lisa Tagliaferri
أفضل التعليقات
لا توجد أية تعليقات بعد
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.