دروس الوحدة (3/4)
استراحة ومواصلة وغيرها في الحلقات
داخل الحلقة (كل من for و while) يمكنك تغيير التدفق الطبيعي باستخدام
ثلاثة بنيات:
break— الخروج من الحلقة على الفور.continue— يتخطى بقية الجسم وينتقل إلى التكرار التالي.else(في الحلقة) — يتم تنفيذه عندما تنتهي الحلقة بدونbreak.
محمي_INLINE_12
for n in [3, 7, 11, 4, 9]:
if n % 2 == 0:
primo_pari = n
break
primo_pari # 4break يوقف الحلقة في أسرع وقت ممكن. أي شيء بعد break في
لم يتم تنفيذ نص التكرار الحالي.
محمي_INLINE_15
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). إنه مثالي لعمليات البحث:
target = 7
for n in [2, 4, 6, 8]:
if n == target:
trovato = True
break
else:
trovato = False
trovato # Falseاقرأها كـ: "لكل n في القائمة؛ إذا أخذت الفرع break، فتخطاه
الآخر؛ وإلا قم بتنفيذ الأمر الآخر".
الحلقات المتداخلة: الكسر يخرج فقط من الحلقة الأعمق
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). يعد هذا مفيدًا جدًا لخوارزميات البحث (على سبيل المثال، "ابحث عن عنصر: إذا تم العثور عليه، قم بكسره، وإلا، قم بالإبلاغ عن عدم العثور عليه").
جربه بنفسك
بالنظر إلى القائمة `الأرقام = [10، 15، 20، 25، 30، 35]`، ابحث عن الرقم الأول القابل للقسمة على 7 وقم بتعيينه إلى `النتيجة`. إذا لم يكن هناك شيء، قم بتعيين -1.
إظهار التلميح
35 هو الرقم الأول (والوحيد) الذي يقبل القسمة على 7 في القائمة.
الحل متاح بعد 3 من المحاولات
تمرين المراجعة
أنشئ قائمة "الأرقام الفردية" بالأرقام الفردية من 1 إلى 20 (ضمنًا) باستخدام حلقة for فوق النطاق (1، 21) واستمر في تخطي الأرقام الزوجية.
إظهار التلميح
إذا كانت n زوجية، تابع؛ وإلا إلحاق.
الحل متاح بعد 3 من المحاولات
التحدي الإضافي
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 من المحاولات