פקודת while
בכל שפת תוכנה יש גם את הפקודה while שמשמעותה "כל עוד" או "כל זמן" והיא כבר שייכת לסוג הפקודות המבצעות בדיקות חוזרות של תנאים ונקראות גם לולאות או באנגלית loop. כמו תמיד, הטוב ביותר הוא להתחיל בדוגמא –
x=0
while x<3:
print (x)
x=x+1
>>>
0
1
2
התוכנית למעלה יוצרת לולאה בעלת תנאי, שכל עוד x קטן מ- 3 היא מבצעת שתי פעולות, היא קודם מדפיסה את הערך העדכני של x (0 בהתחלה) ולאחר מכן היא מוסיפה לערך את המספר 1 (מגדילה אותו ב- 1) וחוזרת על הבדיקה האם x עדיין קטן מ- 3, (היות שהוא כבר שווה 1 וזה קטן מ- 3) היא מדפיסה את המספר 1 והופכת את x ל- 2. מבצעת שוב את הבדיקה האם עכשיו x קטן מ- 3, והיות ש- 2 קטן משלוש, היא מדפיסה את המספר 2 ומוסיפה ל – x את המספר 1 כך שהוא שווה עכשיו ל- 3 , בודקת שוב האםx קטן מ-3, והפעם התשובה היא שלילית, וזה הסימן לפקודת while להפסיק את הבדיקות שלה ולסיים את הלולאה. כך שלאחר ש- x שווה ל- 3 היא לא מדפיסה יותר שום דבר.
את הפעולה של הוספת ערך מסוים למשתנה ניתן לרשום בפייתון גם בקיצור – במקום לרשום x=x+3 אפשר לרשום x += 3 וזה יבצע את הפעולה של הוספת המספר 3 לערך הקיים של x .
ניתן להבין שפקודת while יכולה לרוץ באופן אינסופי -
x=5
while x>3:
print (x)
x +=1
>>>
5
6
7
8
…
עד אינסוף
היות ש x גדול מ- 3 התוכנית תדפיס את הערך של x ותוסיף לו 1 ותמשיך לבצע את הבדיקה פעם אחר פעם בלי סוף, משום ש-x לא יהיה אף פעם קטן או שווה ל- 3 אלא רק ילך ויגדל ולולאת ה- while תמשיך להדפיס מספרים עד שמישהו או משהו יעצור אותה.
לולאות אינסופיות שכאלה, בלי שמגיע תנאי שעוצר אותן, לרוב אינן רצויות בתוכנה משום שהן תוקעות אותה במקום ממנו היא לא מתקדמת או מבזבזת את הזכרון היקר של המחשב.
עכשיו נשלב פקודת if עם פקודת while על מנת ליצור מבנים מורכבים ומעניינים יותר –
x=0
while x<5:
if x==3:
print ("three")
print (x)
x +=1
>>>
0
1
2
three
3
4
בתוכנית למעלה שילבנו בתוך לולאת ה while פקודת if שבודקת האם x שווה ל- 3, ובמידה שכן היא מדפיסה את המילה three וממשיכה הלאה, מדפיסה את הערך של x ומוסיפה 1 לערך שלו, עד ש x כבר לא קטן מ- 5. כדאי לשים לב שהמחשב יודע לשייך את הדפסת המילה three לתנאי if x==3 רק משום שביצענו הזחה ימינה של שורת הקוד מתחת לשורת הפקודה if.
אפשר לבקש מהלולאה לעצור לאחר שמצאנו את מה שאנחנו מחפשים, לשם כך נשתמש בפקודה break שמשמעותה המילולית לשבור את הלולאה -
x=0
while x<5:
if x==3:
break
print (x)
x +=1
>>>
0
1
2
בדוגמא שלמעלה התוכנית אינה ממשיכה לאחר שמתקיים x שווה ל- 3 והמספר 3 לעולם לא יודפס, משום שההוראה להדפיס אותו נמצאת לאחר פקודת break שמסיימת את הלולאה, למרות ש x עדיין קטן מ - 5.