الانتقال إلى المحتوى الرئيسي
الوحدة 2 · الدرس 3 من 47/36 في الدورة~10 min
دروس الوحدة (3/4)

استراحة ومواصلة وغيرها في الحلقات

داخل الحلقة (كل من for و while) يمكنك تغيير التدفق الطبيعي باستخدام ثلاثة بنيات:

  • break — الخروج من الحلقة على الفور.
  • continue — يتخطى بقية الجسم وينتقل إلى التكرار التالي.
  • else (في الحلقة) — يتم تنفيذه عندما تنتهي الحلقة بدون break.

محمي_INLINE_12

Python
for n in [3, 7, 11, 4, 9]:
    if n % 2 == 0:
        primo_pari = n
        break
primo_pari  # 4

break يوقف الحلقة في أسرع وقت ممكن. أي شيء بعد break في لم يتم تنفيذ نص التكرار الحالي.

محمي_INLINE_15

Python
risultati = []
for n in range(1, 11):
    if n % 2 == 0:
        continue   # skip evens
    risultati.append(n * n)
risultati  # [1, 9, 25, 49, 81]

فكر في continue على أنه "انتقل إلى التكرار التالي". يتم استخدامه لتصفية العناصر دون إضافة مستوى مسافة بادئة أخرى.

else في الحلقة (المصطلحات البايثونية)

خصوصية بايثون: يمكن أن تحتوي الحلقات أيضًا على else، ويتم تنفيذها فقط إذا كان تم إنهاء الحلقة ** بشكل طبيعي ** (بدون break). إنه مثالي لعمليات البحث:

Python
target = 7
for n in [2, 4, 6, 8]:
    if n == target:
        trovato = True
        break
else:
    trovato = False
trovato  # False

اقرأها كـ: "لكل n في القائمة؛ إذا أخذت الفرع break، فتخطاه الآخر؛ وإلا قم بتنفيذ الأمر الآخر".

الحلقات المتداخلة: الكسر يخرج فقط من الحلقة الأعمق

Python
for x in range(3):
    for y in range(3):
        if x == y == 1:
            break
        print(x, y)

break يخرج فقط من for y، وليس for x. للخروج من كليهما يجب عليك استخدام ملف علامة أو دالة + return.

الحلقة غير العادية...إنشاء آخر

في لغة Python، يمكن أن تحتوي كل من الحلقات for وwhile على عبارة اختيارية else. يتم تنفيذ الكتلة else ** فقط إذا اكتملت الحلقة بشكل طبيعي ** (أي دون مواجهة عبارة break). يعد هذا مفيدًا جدًا لخوارزميات البحث (على سبيل المثال، "ابحث عن عنصر: إذا تم العثور عليه، قم بكسره، وإلا، قم بالإبلاغ عن عدم العثور عليه").

جربه بنفسك

تمرين#python.m2.l3.e1
المحاولات: 0جارٍ التحميل…

بالنظر إلى القائمة `الأرقام = [10، 15، 20، 25، 30، 35]`، ابحث عن الرقم الأول القابل للقسمة على 7 وقم بتعيينه إلى `النتيجة`. إذا لم يكن هناك شيء، قم بتعيين -1.

جارٍ تحميل المحرر…
إظهار التلميح

35 هو الرقم الأول (والوحيد) الذي يقبل القسمة على 7 في القائمة.

الحل متاح بعد 3 من المحاولات

تمرين المراجعة

تمرين#python.m2.l3.e2
المحاولات: 0جارٍ التحميل…

أنشئ قائمة "الأرقام الفردية" بالأرقام الفردية من 1 إلى 20 (ضمنًا) باستخدام حلقة for فوق النطاق (1، 21) واستمر في تخطي الأرقام الزوجية.

جارٍ تحميل المحرر…
إظهار التلميح

إذا كانت n زوجية، تابع؛ وإلا إلحاق.

الحل متاح بعد 3 من المحاولات

التحدي الإضافي

تمرين#python.m2.l3.e3
المحاولات: 0جارٍ التحميل…

Given the list `numbers = [7, 11, 14, 21, 25]`, write a `for` loop to find the first number that is divisible by 7 and also strictly greater than 10. When you find it, store it in `found` and exit the loop using `break`. Finally, evaluate `found`.

جارٍ تحميل المحرر…
إظهار التلميح

Inside the loop, check if num % 7 == 0 and num > 10:, assign it to found and trigger break.

الحل متاح بعد 3 من المحاولات