לולאת while
חלק מהיחידה יסודות במסלול ה-Python של Coddy. שיעור 36 מתוך 77.
לולאת while שונה מלולאת for. לולאת for מאפשרת לנו לעבור על range מסוים, בעוד שלולאת while מאפשרת לנו להמשיך בלולאה כל עוד מתקיים תנאי מסוים.
כדי להשתמש בלולאת while, כתבו:
while condition:
codeהקוד יבוצע רק אם התנאי הוא True.
התנאי נוצר בדרך כלל באמצעות אופרטורי השוואה כגון <= (קטן מ־ או שווה ל־), >= (גדול מ־ או שווה ל־), < (קטן מ־), > (גדול מ־) או == (שווה ל־). הלולאה ממשיכה לפעול כל עוד תוצאת ההשוואה היא True, ונעצרת ברגע שהיא הופכת ל־False.
בתוך גוף הלולאה, בדרך כלל צריך לעדכן את המשתנה שנבדק. עושים זאת באמצעות אופרטורי השמה מורכבת כמו += (חיבור והשמה), -= (חיסור והשמה), *= (כפל והשמה) או /= (חילוק והשמה). לדוגמה, x *= 2 הוא קיצור של x = x * 2. בלי לעדכן את המשתנה, התנאי לעולם לא ישתנה והלולאה תרוץ לנצח.
יש מקרי שימוש רבים שבהם while יפתור את הבעיה, אבל לולאת for לא.
לדוגמה, חשבו על הבעיה הזאת:
מצאו את החזקה הקטנה ביותר של 2 שגדולה ממספר נתון.
כדי לפתור זאת, נשתמש בלולאת while שתכפיל שוב ושוב את החזקה הנוכחית של 2 ב-2, עד שהיא תהיה גדולה מהמספר הנתון:
number = 27
power_of_two = 1
while power_of_two <= number:
power_of_two *= 2
print(power_of_two)כאן, power_of_two <= number הוא התנאי שמשתמש באופרטור השוואה, ו־power_of_two *= 2 מעדכן את המשתנה בכל איטרציה באמצעות אופרטור השמה מורחבת. ברגע ש־power_of_two גדול מ־number, התנאי הופך ל־False והלולאה נעצרת.
אתגר
מתחיליםכתבו תוכנית שמקבלת קלט אחד, מספר מסוג float.
השתמשו בלולאת while כדי לחלק את הקלט ב־2 כל עוד המספר גדול או שווה ל־3.5.
הדפיסו את המספר הראשון שקטן מ־3.5.
נסו בעצמכם
השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
כל השיעורים ביחידה יסודות
תרגלו בעצמכם: קומפיילר Python אונליין