فهم حلقة Python والتحكم في التدفق للمبتدئين

بايثون هو واحد من أكثر اللغات استخدامًا اليوم. مثل معظم لغات البرمجة الأخرى تقريبًا، لديها بايثون بنية الحلقة. حلقات بايثون مثل حلقة for وحلقة while تسمح للمطورين بتكرار مجموعات أو بناءً على شروط مختلفة.

في هذا البرنامج التعليمي، ستتعلم كيفية إنشاء واستخدام كل نوع من حلقات بايثون وأيضًا كيفية التحكم في الحلقات باستخدام تعليمات بايثون break و pass و continue.

لنبدأ!

متطلبات مسبقة

سيكون هذا المنشور برنامجًا تعليميًا تدريجيًا. إذا كنت ترغب في المتابعة، تأكد من أن لديك بايثون v3.6 أو أحدث مثبتًا. سيتم استخدام بايثون v3.9.2 في هذا البرنامج التعليمي على جهاز يعمل بنظام التشغيل Windows 10.

فهم هياكل بايثون القابلة للتكرار

قبل أن تبدأ في تعلم الحلقات، يجب عليك أن تتعرف على مفهوم الكائنات القابلة للتكرار في بايثون. تعالج الحلقات مجموعات العناصر مثل القوائم، التراكيب، و القواميس. تحتوي كل هذه الهياكل على عناصر متعددة يمكنك “التكرار عليها”. وبالتالي، كل كائن هو قابل للتكرار مع عناصر يمكن لحلقة معالجتها بشكل فردي.

عندما تسمع شخصًا يتحدث عن شيء يمكن تكراره، فاعلم أن هذا عنصر يمكنك قراءته لكل كائن داخل تلك المجموعة باستخدام حلقة.

حلقات For في Python

لنبدأ هذا البرنامج التعليمي بتعلم حلقات for أولاً. تكرر حلقات for تنفيذ البيانات أو مجموعة البيانات التي تتحكم فيها تعبير يمكن تكراره. بعبارة أخرى، تقوم بتنفيذ الشيفرة لكل عنصر داخل مجموعة العناصر.

حلقات For والسلاسل

على سبيل المثال، ربما لديك عنصر يمكن تكراره مثل سلسلة. في Python، السلسلة هي سلسلة من الأحرف. تتكون كل سلسلة من مجموعة من الأحرف. ربما لديك سلسلة ADAM. تتكون هذه السلسلة من أربعة أحرف يمكن تكرارها، A، D، A، و M.

كسلسلة واحدة، ترى Python عنصرًا واحدًا فقط؛ ADAM، كما هو موضح أدناه.

One element in Python

ولكن، نظرًا لأن سلاسل Python قابلة للتكرار، يمكن لـ Python أن تقوم بـ “تفكيك” تلك السلسلة إلى مجموعة من الأحرف ومن ثم معالجة كل حرف بشكل فردي. للقيام بذلك، يمكنك إنشاء حلقة for مثلما يلي.

تحتوي حلقة الـ for على هدف أو مُكرر (letter في هذه الحالة) لتمثيل كل تكرار. بعد ذلك، ستخبر Python بالعنصر القابل للتكرار الذي ترغب في معالجته (ATA) باستخدام الكلمة الرئيسية in. كل حرف في مجموعة الأحرف موجود في السلسلة.

ثم، داخل حلقة الـ for، يمكنك إنشاء أي شيفرة ترغب في تنفيذها لكل تكرار. في هذا المثال، يقوم Python ببساطة بطباعة كل حرف في مجموعة الأحرف (السلسلة).

ATA = "ADAM"
for letter in ATA:
    print(letter)

يمكنك أن ترى أدناه أن Python يقوم بطباعة كل حرف في السلسلة تلو الآخر.

Printing each character in a string with a for loop

يمكن لحلقات الـ for أن تكرر أي عنصر يمكن التكرار عليه مثل القوائم والنطاقات أيضًا. استبدل ATA في مثال هذا القسم بـ range(5) وسترى نفس النتيجة.

حلقات الـ while في Python

بينما تنفذ حلقات الـ for الكود لكل عنصر في مجموعة من العناصر، تنفذ حلقة الـ while الكود بناءً على شرط محدد. على وجه التحديد، يستمر Python في تنفيذ حلقة while بينما الشرط خاطئًا.

على سبيل المثال، المتطلب الشائع في Python هو إنشاء عداد وتنفيذ الكود عدد محدد من المرات. لإنشاء هذا الوضع، ستحتاج إلى تعريف شرط سيعيد القيمة True عندما يتجاوز العدد الحالي العدد الأقصى.

لنفترض أنك تبدأ بمتغير يسمى count يخزن القيمة الصحيحة 0. ترغب في زيادة هذا العدد بمقدار 1 ولكن لا تتجاوزه 5. يمكنك إنشاء شيء مثل هذا:

count = 0
count = count + 1
count = count + 1
count = count + 1
count = count + 1
count = count + 1
print(count)

ربما يمكن أن يعمل ذلك الكود ولكنه غير كفء على الإطلاق. أنت لا تستخدم مبدأ DRY. أنت تكرر نفسك. بدلاً من ذلك، قلل طول الكود بواسطة استخدام حلقة while وإخبار Python بإضافة واحدة إلى count بينما count أقل من ستة.

تستخدم الأمثلة أدناه حلقة while لتعريف شرط (count < 6) وتنفيذ تعبير (عبارة print وزيادة count بمقدار 1 بينما الشرط يكون True.

count = 0
while (count < 6):
   print('The count is:', count)
   count = count + 1
Demonstrating a Python while loop

تحكم التدفق في الحلقات

في المثالين السابقين، بدأت وانتهت كل من حلقات for و while في Python بمفردها. انتهت حلقة for لأنها وصلت إلى نهاية المجموعة القابلة للتكرار، وانتهت حلقة while لأن شرطها قيم إلى True.

على الرغم من أنه من الشائع أن تنتهي حلقات Python “بشكل طبيعي”، يمكنك أيضًا تغيير سلوك الحلقة لتنتهي مبكرًا أو تتخطى واحدة أو أكثر من التكرارات.

بيان الاستراحة

عندما تحتاج إلى إنهاء حلقة مبكرًا، يمكنك القيام بذلك باستخدام بيان break. عند تنفيذه داخل حلقة، يتوقف بيان break عند التكرار الحالي.

عادةً ما ستستخدم بيان break عندما يتم تحقيق شرط معين داخل حلقة. على سبيل المثال، في المثال السابق لحلقة for، تعلمت أن حلقة for ستكرر على مجموعة من الأحرف في سلسلة. ربما ترغب في معالجة جميع الأحرف حتى الحرف الأول D.

لإيقاف حلقة for (أو حتى حلقة while)، قم بتعريف شرط معين ترغب في تحقيقه ثم قم بتضمين بيان break، كما هو موضح أدناه.

في المثال أدناه، تنهي Python حلقة for في اللحظة التي يتساوى فيها متغير المكرر letter مع D.

ATA = "ADAM"
for letter in ATA:
	print(letter)
	if letter == "D":
		break
Demonstrating the break statement in a Python loop

بيان الاستمرار

ربما تحتاج إلى إنشاء حلقة استنادًا إلى شرط معين ولكنك لا ترغب بالضرورة في معالجة كل عنصر قابل للتكرار. في هذه الحالة، يمكنك تخطي التكرارات باستخدام بيان continue.

غير كفأة وصفة break التي تنهي الحلقة بأكملها، تقوم الصيغة continue بتخطي التكرار الحالي. باستخدام المثال أعلاه، ربما ترغب في التكرار فوق كل حرف في السلسلة ADAM ولكن تخطي حرف D. يمكنك تخطي الحرف D باستخدام شرط (if letter == "D") والصيغة continue، كما هو موضح أدناه.

ATA = "ADAM"
for letter in ATA:
	if letter == "D":
		continue
	print(letter)

يمكنك أن ترى أدناه أن بايثون لم يعيد الحرف D لأن الصيغة continue قفزت على البيان الذي يطبع عندما واجهت حرف D.

Using the Python continue statement

البيان المروري

لننهي الآن قسم التحكم في التدفق بالبيان pass. البيان pass فريد نوعًا ما بحيث أنه في الواقع مجرد عنصر نائب. البيان pass هو طريقة لتحديد حلقة في سيناريو بايثون تفعل في الواقع شيئًا.

لنفترض أن لديك حلقة for تفضل تركها في سيناريو بايثون لأي سبب من الأسباب. ولكن، ليس لديك فعليًا تعبير لتنفيذه داخلها، مثل ما يلي.

for value in "adam":

عندما تقوم بتحديد حلقة for في بايثون مع تعبير داخلي، ستعيد بايثون خطأ الهامش، كما هو موضح أدناه.

Error about no loop expression

لكن، قم بإضافة البيان pass كتعبير داخل الحلقة for وسترى أن بايثون ينفذ الحلقة for بشكل أساسي دون فعل أي شيء.

Using the pass statement

الاستنتاج

في هذا الدرس، تعلمت كيفية البدء في العمل مع حلقات البرمجة في بايثون. تعلم كيفية عمل حلقات البرمجة في بايثون وكيفية التحكم بها يمنحك مزيدًا من الفرص لإنشاء وبناء برامج بايثون قوية.

بعد اكتساب المعرفة الجديدة الخاصة بك، أين ستقوم بإدراج حلقة في كودك؟

Source:
https://adamtheautomator.com/python-loop/