הבנת לולאה ובקרת זרימה בפייתון עבור מתחילים

פייתון היא אחת מהשפות הנפוצות ביותר היום. דומה לרוב שפות התכנות האחרות, יש לפייתון בניין לחזור. לולאות בפייתון כמו לולאת 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, כפי שמוצג למטה.

One element in Python

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

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

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

ATA = "ADAM"
for letter in ATA:
    print(letter)

אתה יכול לראות למטה ש-Python מדפיס כל תו במחרוזת לבדו.

Printing each character in a string with a for loop

לולאות יכולות לעבור על כל אלמנט iterable כגון רשימות וטווחים גם. החלף את ATA בדוגמה בחלק זה עם range(5) ותראה את התוצאה הזהה.

לולאות While ב-Python

בעוד שלולאות for מבצעות קוד עבור כל פריט באוסף של אלמנטים, הלולאת while מבצעת קוד על סמך תנאי מסוים. בדיוק יותר, Python ממשיך לבצע לולאת while כל עוד תנאי מסוים אינו נכון.

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

נניח שאתה מתחיל עם משתנה שנקרא count שמאחסן מספר שלם 0. אתה רוצה להוסיף למספר זה 1 אך לא לחרוג מ-5. תוכל ליצור משהו כזה:

count = 0
count = count + 1
count = count + 1
count = count + 1
count = count + 1
count = count + 1
print(count)

המשהו למעלה יכול לעבוד אך זה לא יעיל בכלל. אתה לא משתמש בעקרון DRY. אתה מחזיר את עצמך. במקום זאת, עליך להפחית את אורך הקוד על ידי שימוש בלולאת while ולהגיד ל-Python להוסיף אחד ל-count כל עוד count קטן משש.

הדוגמאות למטה משתמשות בלולאת while כדי להגדיר תנאי (count < 6) וכדי לבצע ביטוי (ההצהרה print ולהגדיל את count ב-1 כל עוד התנאי הוא True.

count = 0
while (count < 6):
   print('The count is:', count)
   count = count + 1
Demonstrating a Python while loop

השלטת זרימה בלולאות

בדוגמאות הקודמות שלוש, שני הלולאות ב-Python, for ו-while, התחילו והסתיימו לחלוטין באופן עצמאי. לולאת for הסתיימה מכיוון שהגיעה לסוף האוסף הניתן לניתוב, והלולאת while הסתיימה מכיוון שהתנאי שלה הערך להיות True.

אף שנפוץ ב-Python שהלולאות יסתיימו "באופן רגיל", ניתן גם לשנות את ההתנהגותם של הלולאות כך שייסגרו לפני זמנם או יתעלמו מאחת או יותר מהאיטרציות.

הפקודה לשבירה

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

רוב המקרים, נשתמש ב-break כאשר נתקלים בתנאי מסוים בתוך לולאה. לדוגמה, בדוגמה של לולאת for שלמדת בקוד קודם, הלולאה עוברת על מערך של תווים במחרוזת. אולי תרצה לעבד רק תווים עד לתו הראשון D.

כדי לעצור לולאת for (או אפילו לולאת while), יש להגדיר תנאי מסוים שבו תרצה להפסיק ולכלול את הפקודה break, כפי שמוצג למטה.

בדוגמה למטה, Python סוגרת את לולאת for ברגע שמשתנה האיטרציה letter שווה ל-D.

ATA = "ADAM"
for letter in ATA:
	print(letter)
	if letter == "D":
		break
Demonstrating the break statement in a Python loop

הפקודה להמשך

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

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

ATA = "ADAM"
for letter in ATA:
	if letter == "D":
		continue
	print(letter)

אתה יכול לראות מטה שפייתון לא החזירה את התו D מכיוון שההצהרת continue דילגה על ההצהרת print כאשר התו D נתקל בו.

Using the Python continue statement

הצהרת Pass

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

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

for value in "adam":

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

Error about no loop expression

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

Using the pass statement

סיכום

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

עם הידע החדש שלך, היכן תכניס לולאה בקוד שלך?

Source:
https://adamtheautomator.com/python-loop/