פייתון היא אחת מהשפות הנפוצות ביותר היום. דומה לרוב שפות התכנות האחרות, יש לפייתון בניין לחזור. לולאות בפייתון כמו לולאת for ולולאת while מאפשרות למפתחים לעבור על אוספים או לפי תנאים שונים.
במדריך זה, תלמד כיצד ליצור ולהשתמש בכל סוג של לולאה בפייתון וכן כיצד לשלוט בלולאות באמצעות הפקודות break
, pass
, ו-continue
בפייתון.
בואו נתחיל!
דרישות מוקדמות
הפוסט הזה יהיה מדריך שלב אחרי שלב. אם ברצונך לעקוב, הקפד להתקין את פייתון גרסה 3.6 או גרסה מאוחרת יותר. במדריך זה נעשה שימוש בפייתון גרסה 3.9.2 על מחשב עם מערכת הפעלה Windows 10.
הבנה של מבני נתונים של פייתון שניתנים לעריכה
לפני שתוכל ללמוד על לולאות, עליך להבין את הקונספט של אובייקטים שניתנים לעריכה בפייתון. לולאות מעבדות אוספים של אלמנטים כמו רשימות, טאפלים, ו־מילונים. כל אחד מהמבנים הללו מכיל אלמנטים מרובים שניתן "לעבור עליהם". לכן, כל מבנה הוא אובייקט שניתן לעריכה עם אלמנטים של יש לעבד אותם בנפרד.
כאשר אתה שומע מישהו מדבר על משהו שהוא iterable, ידוע שזהו אלמנט שאפשר לקרוא כל אובייקט בתוך אותה אוסף עם לולאה.
לולאות For ב-Python
בואו נתחיל את המדריך הזה על ידי למידת לולאות for. לולאות for חוזרות על ביצוע הפעולות או בלוק של פעולות הנשלטות על ידי ביטוי iterable. במילים אחרות, הן מבצעות קוד עבור כל פריט בתוך אוסף של אלמנטים.
לולאות For ומחרוזות
לדוגמה, אולי יש לך פריט iterable כמו מחרוזת. ב-Python, המחרוזת היא סדר של תווים. כל מחרוזת מורכבת משילוב של תווים. אולי יש לך מחרוזת ADAM
. מחרוזת זו מורכבת מארבעה תווים iterable, A
, D
, A
, ו- M
.
כמחרוזת אחת, פייתון רואה רק אלמנט אחד; ADAM
, כפי שמוצג למטה.

אך, מאחר ומחרוזות בפייתון הן iterable, פייתון יכולה "לפרק" את המחרוזת הזו למערך של תווים ולעבד כל תו בנפרד. כדי לעשות זאת, תיצור לולאה for כמו שמוצג למטה.
הלולאה for מכילה מטרה או איטרטור (letter
במקרה זה) לייצג כל חזרה. תספר לפייתון אילו אלמנט iterable אתה רוצה לעבד (ATA
) באמצעות מילת המפתח in
. כל תו במערך התווים נמצא in המחרוזת.
אז, בתוך הלולאה for, תיצור כל קוד שברצונך להריץ לכל חזרה. בדוגמה זו, פייתון פשוטה מדפיסה כל תו במערך התווים (מחרוזת).
אתה יכול לראות למטה ש-Python מדפיס כל תו במחרוזת לבדו.

לולאות יכולות לעבור על כל אלמנט iterable כגון רשימות וטווחים גם. החלף את
ATA
בדוגמה בחלק זה עםrange(5)
ותראה את התוצאה הזהה.
לולאות While ב-Python
בעוד שלולאות for מבצעות קוד עבור כל פריט באוסף של אלמנטים, הלולאת while מבצעת קוד על סמך תנאי מסוים. בדיוק יותר, Python ממשיך לבצע לולאת while כל עוד תנאי מסוים אינו נכון.
לדוגמה, דרישה נפוצה ב-Python היא ליצור סופר ולבצע קוד מסוים מספר מוגדר של פעמים. כדי ליצור את המצב הזה, עליך להגדיר תנאי שיחזיר True
כאשר הספירה הנוכחית עוברת את הספירה המקסימלית.
נניח שאתה מתחיל עם משתנה שנקרא count
שמאחסן מספר שלם 0. אתה רוצה להוסיף למספר זה 1 אך לא לחרוג מ-5. תוכל ליצור משהו כזה:
המשהו למעלה יכול לעבוד אך זה לא יעיל בכלל. אתה לא משתמש בעקרון DRY. אתה מחזיר את עצמך. במקום זאת, עליך להפחית את אורך הקוד על ידי שימוש בלולאת while ולהגיד ל-Python להוסיף אחד ל-count
כל עוד count
קטן משש.
הדוגמאות למטה משתמשות בלולאת while כדי להגדיר תנאי (count < 6
) וכדי לבצע ביטוי (ההצהרה print
ולהגדיל את count
ב-1 כל עוד התנאי הוא True
.

השלטת זרימה בלולאות
בדוגמאות הקודמות שלוש, שני הלולאות ב-Python, for ו-while, התחילו והסתיימו לחלוטין באופן עצמאי. לולאת for הסתיימה מכיוון שהגיעה לסוף האוסף הניתן לניתוב, והלולאת while הסתיימה מכיוון שהתנאי שלה הערך להיות True
.
אף שנפוץ ב-Python שהלולאות יסתיימו "באופן רגיל", ניתן גם לשנות את ההתנהגותם של הלולאות כך שייסגרו לפני זמנם או יתעלמו מאחת או יותר מהאיטרציות.
הפקודה לשבירה
כשיש צורך לסיים לולאה מוקדם, ניתן לעשות זאת באמצעות הפקודה break
. בביצוע של break
בתוך לולאה, הלולאה תיפסיק באיטרציה הנוכחית.
רוב המקרים, נשתמש ב-break
כאשר נתקלים בתנאי מסוים בתוך לולאה. לדוגמה, בדוגמה של לולאת for שלמדת בקוד קודם, הלולאה עוברת על מערך של תווים במחרוזת. אולי תרצה לעבד רק תווים עד לתו הראשון D
.
כדי לעצור לולאת for (או אפילו לולאת while), יש להגדיר תנאי מסוים שבו תרצה להפסיק ולכלול את הפקודה break
, כפי שמוצג למטה.
בדוגמה למטה, Python סוגרת את לולאת for ברגע שמשתנה האיטרציה letter
שווה ל-D
.

הפקודה להמשך
אולי תצטרך ליצור לולאה בהתבסס על תנאי מסוים, אך לא בהכרח תרצה לעבד כל אלמנט ניתן לניתוב. במקרה כזה, ניתן לדלג על איטרציות עם הפקודה continue
.
בניגוד להצהרת ה-break
שמסיימת את כל הלולאה, ההצהרת continue
דולגת על האיטרציה הנוכחית. בשימוש בדוגמה מלמעלה, אולי תרצה לעבור על כל תו במחרוזת ADAM
אך לדלג על התו D
. באפשרותך לדלג על התו D
בעזרת תנאי (if letter == "D"
) והצהרת continue
, כפי שמוצג למטה.
אתה יכול לראות מטה שפייתון לא החזירה את התו D
מכיוון שההצהרת continue
דילגה על ההצהרת print
כאשר התו D
נתקל בו.

הצהרת Pass
נסיים עם קטע הבקרה בזרימה באמצעות הצהרת pass
. ההצהרת pass
ייחודית מעט בכך שהיא למעשה רק מציינת מקום. הצהרת pass
היא דרך להגדיר לולאה בסקריפט פייתון שלא עושה באמת כלום.
נניח כי יש לך לולאה עבור שתרצה להשאיר בסקריפט הפייתון שלך לכל סיבה שהיא. אך, אין לך באמת ביטוי לבצע בתוכה, כמו בדוגמה למטה.
כאשר אתה מגדיר לולאת for בפייתון עם ביטוי בתוכה, פייתון תחזיר IdentationError, כמוצג למטה.

אך, הוסף את ההצהרה pass
כביטוי בתוך לולאת for
ותראה שפייתון מבצעת את הלולאה בעצם לא עושה כלום.

סיכום
במדריך זה, למדת איך להתחיל עם לולאות ב-Python. להבנת איך לולאות ב-Python פועלות וכיצד לשלוט בהן נותנת לך הרבה יותר הזדמנויות ליצירת תוכניות יציבות וחזקות ב-Python.
עם הידע החדש שלך, היכן תכניס לולאה בקוד שלך?