דילוג לתוכן המרכזי
מודול 2 · שיעור 3 מתוך 47/36 בקורס~10 min
שיעורי מודול (3/4)

לשבור, להמשיך ועוד בלולאות

בתוך לולאה (גם for וגם while) אתה יכול לשנות את הזרימה הרגילה עם שלושה מבנים:

  • break - יוצא מהלולאה מיד.
  • continue - מדלג על שאר הגוף וקופץ לאיטרציה הבאה.
  • else (על הלולאה) - מבוצע כאשר הלולאה מסתיימת ללא break.

break

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

break עוצר את הלולאה בהקדם האפשרי. כל דבר אחרי break ב הגוף של האיטרציה הנוכחית לא מבוצע.

continue

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. כדי לצאת משניהם עליך להשתמש ב-a דגל או פונקציה + 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 over range(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 ניסיונות