לולאות while

לולאות while (נקראות באנגלית while loops) הן פקודה המבצעת בלוק של קוד כל זמן שתנאי מסוים הוא True. הנה מבנה בסיסי של לולאת while:

דוגמאות בסיס#

דוגמא 1#

בואו נסתכל על דוגמא בסיסית של לולאה שסופרת מ1 עד 5:

בדוגמה זו, אנו מתחילים עם משתנה number שהוגדר ל-1. לאחר מכן לולאת ה-while ממשיכה להתבצע כל עוד התנאי number <= 5 נכון. בתוך הלולאה, אנו מדפיסים את הערך של number, ולאחר מכן מגדילים אותו ב-1 באמצעות האופרטור =+. זה נמשך עד ש-number גדול מ5.


השם של מעבר על הקוד הפנימי נקרה איטרציה (iteration). בדוגמא הזו ביצענו 5 איטרציות של בלוק הקוד.

דוגמא 2#

בואו נסתכל על עוד דוגמא ללולאה שמחשבת עצרת (factorial):

n!=1...nmultipliersn!=\overbrace{1 \cdot ... \cdot n}^\text{multipliers}

בכל ריצה של הלולאה אנחנו לוקחים את המכפיל (multiplier) ומכפילים אותו בתוצאה הסופית (result). לאחר ההכפלה אנחנו משנים את multiplier לערך של עצמו פחות 1.
הלולאה תמשיך לרוץ כל זמן שהמכפיל שלנו גדול מ-0. במקרה שלנו כמות האיטרציות שנבצע על הלולאה היא כגודל המספר number.

לולאה אינסופית#

חשוב להיזהר בעת שימוש בלולאות while, כי אם התנאי לעולם לא יהפוך להיות False הלולאה תפעל לנצח, ותגרם לולאה אינסופית. הנה דוגמה ללולאה אינסופית:

המספר counter תמיד חיובי (והולך וגדל...) ולכן התנאי תמיד מתקיים והלולאה תמשיך לנצח.

הפקודה break#

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

שימו לב לשימוש במילה True בתור התנאי בלולאת הwhile. המשמעות של זה בתכלס היא שזהו תנאי שתמיד מתקיים, משמע הלולאה תרוץ תמיד עד שתגיע לפקודה break.

Tip

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

הפקודה continue#

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

הנה דוגמה לשימוש בcontinue בלולאת while בשביל להדפיס את כל המספרים עד 20 שמתחלקים ב3 ללא שארית:

תרגילים#

תרגיל 1- בדיקת סיסמאות#

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

Enter the password: AlgoMonkeys
Access granted!

ודוגמא עבור הכנסת 3 סיסמאות לא נכונות:

Enter the password: x
Incorrect password.
Try again.
Enter the password: y
Incorrect password.
Try again.
Enter the password: z
Incorrect password.
Maximum attempts reached. Access denied.

תרגיל 2- בניית סיפור#

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

Enter words: Hello world
Enter words: how are
Enter words: SKIP you
Enter words: things?
Enter words: STOP
Final sentence is: Hello world how are things?