بايثون الحلقة while

تعريف الحلقة while

نستخدم الحلقة while إذا كنا نريد تنفيذ الكود عدة مرات, ولكننا لا نعرف كم مرة بالتحديد لأننا نريد إيقاف التنفيذ إذا تحقق شرط معين.
هذه الحلقة تتوقف عن تكرار نفسها إذا تحقق الشرط الذي وضعناه لها.

هنا كأننا نقول: "طالما أن الشرط لم يتحقق إستمر في تكرار الكود".


طريقة إستخدامها

initialisation;

while condition:
    statements
    increment أو decrement;

  • initialisation:   هي أول خطوة تتنفذ في الحلقة و هي تتنفذ مرة واحدة فقط على عكس جميع العناصر الموجودة في الحلقة.
    في هذه الخطوة نقوم بتعريف متغير ( يسمى عداد ).

  • condition:   هي ثاني خطوة تتنفذ في الحلقة و هي تتنفذ في كل دورة.
    في هذه الخطوة نقوم بوضع شرط يحدد متى تتوقف الحلقة, في كل دورة يتم التأكد أولاً إذا تحقق هذا الشرط أم لا.
    هنا طالما أن نتيجة الشرط تساوي true سيعيد تكرار الكود.

  • statements:   هي الخطوة الثالثة, و تعني تنفيذ جميع الأوامر الموجودة في الحلقة و هي تتنفذ في كل دورة.

  • (decrement أو increment):   هي الخطوة الرابعة و الأخيرة, و هي تتنفذ في كل دورة.
    هنا نحدد كيف تزداد أو تنقص قيمة العداد.

تذكر فقط أن جميع هذه الخطوات تتكرر في كل دورة ما عدا أول خطوة, و السبب أننا لا نحتاج إلى تعريف عداد جديد في كل دورة, بل نستعمل العداد القديم و الذي من خلاله نعرف في أي دورة أصبحنا.

مثال حول الحلقة while

في المثال التالي قمنا بتعريف حلقة تطبع جميع الأرقام من 1 إلى 10.
في البداية قمنا بتعريف متغير إسمه i و أعطينها القيمة 1 لأننا سنستخدمه كعداد في الحلقة.
بعدها قمنا بإنشاء حلقة while تظل تنفذ الأوامر الموضوعة فيها طالما أن قيمة العداد i لا تزال أصغر أو تساوي 10.
في كل دورة في هذه الحلقة سيتم طباعة قيمة العداد i ثم إضافة 1 على قيمته.

مثال

Test.py
i = 1

while i <= 10:
    print(i)
    i += 1
		

سنحصل على النتيجة التالية عند التشغيل.

1
2
3
4
5
6
7
8
9
10

مثال حول إستخدام الجملة الشرطية else مع الحلقة while في بايثون

يمكنك وضع الجملة الشرطية else مباشرةً بعد الحلقة while لتنفيذ بلوك من الكود ( مجموعة أوامر ) مباشرةً عندما تتوقف الحلقة عن إعادة تنفيذ الكود الموضوع فيها, أي عندما يصبح جواب الشرط الذي يجعلها تستمر في إعادتها نفسها طالما هو True يساوي False.

مثال

Test.py
i = 1

while i <= 10:
    print(i)
    i += 1
else:
    print('This block is executed when the condition return False!')
		

سنحصل على النتيجة التالية عند التشغيل.

1
2
3
4
5
6
7
8
9
10
This block is executed when the condition return False!

تذكر: الكود الموضوع في بلوك الجملة else سيتنفذ دائماً بعد أن تتوقف الحلقة عن العمل, و سيتنفذ أيضاً حتى لو تتنفذ الحلقة من الأساس.
لتتأكد من هذا الأمر, قم بإعطاء المتغير i القيمة 100 بدل القيمة 1 و لاحظ أيضاً أنه سينفذ أمر الطباعة الموضوع في البلوك else.

طريقة إنشاء حلقة لا تتوقف (Infinite Loop)


تحذير

قبل تجربة الأمثلة التالية على الحاسوب عليك معرفة أن الـ Infinite Loop قد تجعله يعلّق أو قد تسبب في حرق المعالج إذا لم يتم إيقاف الكود يدوياً خلال وقت قصير.


الصورة التالية توضح طريقة إيقاف أي برنامج يدوياً بعد أن يتم تشغيله.



طريقة إنشاء حلقة لا تتوقف عن استداعاء نفسها.

المثال الأول

Test.py
while 1 == 1:
    print('I am stuck!')
		

سنحصل على النتيجة التالية عند التشغيل.

I am stuck!
I am stuck!
I am stuck!
I am stuck!
I am stuck!
I am stuck!
I am stuck!
I am stuck!
I am stuck!
I am stuck!
I am stuck!
I am stuck!
I am stuck!
I am stuck!
I am stuck!
I am stuck!
I am stuck!
I am stuck!
I am stuck!
I am stuck!
I am stuck!
I am stuck!
I am stuck!
I am stuck!
I am stuck!
I am stuck!
I am stuck!
I am stuck!
I am stuck!
I am stuck!
I am stuck!
I am stuck!
I am stuck!
I am stuck!
I am stuck!
I am stuck!
I am stuck!
I am stuck!

طريقة إنشاء حلقة لا تتوقف عن استداعاء نفسها.

المثال الثاني

Test.py
while True:
    print('I am stuck!')
		

سنحصل على النتيجة التالية عند التشغيل.

I am stuck!
I am stuck!
I am stuck!
I am stuck!
I am stuck!
I am stuck!
I am stuck!
I am stuck!
I am stuck!
I am stuck!
I am stuck!
I am stuck!
I am stuck!
I am stuck!
I am stuck!
I am stuck!
I am stuck!
I am stuck!
I am stuck!
I am stuck!
I am stuck!
I am stuck!
I am stuck!
I am stuck!
I am stuck!
I am stuck!
I am stuck!
I am stuck!
I am stuck!
I am stuck!
I am stuck!
I am stuck!
I am stuck!
I am stuck!
I am stuck!
I am stuck!
I am stuck!
I am stuck!

طريقة إنشاء حلقة لا تتوقف عن استداعاء نفسها.

المثال الثالث

Test.py
flag = True

while flag = True:
    print('I am stuck!')
		

سنحصل على النتيجة التالية عند التشغيل.

I am stuck!
I am stuck!
I am stuck!
I am stuck!
I am stuck!
I am stuck!
I am stuck!
I am stuck!
I am stuck!
I am stuck!
I am stuck!
I am stuck!
I am stuck!
I am stuck!
I am stuck!
I am stuck!
I am stuck!
I am stuck!
I am stuck!
I am stuck!
I am stuck!
I am stuck!
I am stuck!
I am stuck!
I am stuck!
I am stuck!
I am stuck!
I am stuck!
I am stuck!
I am stuck!
I am stuck!
I am stuck!
I am stuck!
I am stuck!
I am stuck!
I am stuck!
I am stuck!
I am stuck!

الدورات

أدوات مساعدة

أقسام الموقع

دورات
مقالات كتب مشاريع أسئلة