תחי ישראל - אין לנו ארץ אחרת

תחי ישראל -אין לנו ארץ אחרת

לולאת while פייתונית

מחבר:
בתאריך:

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

מדריך לולאת while פייתון python tutorial while loop

 

לולאת while שרצה עד שמתקיים תנאי סיום

בדוגמה הבאה הלולאה רצה מ-1 עד 8:

x = 1
 
while x < 9:
 print(x)
 x += 1
1
2
3
4
5
6
7
8
  1. הגדרנו ללולאה תנאי פתיחה:

    x = 1

    שממנו הפונקציה מתחילה לרוץ.

  2. הגדרנו לולאה תנאי סיום:

    x < 9

    שהלולאה צריכה לרוץ עד אליו ואז לעצור.

  3. הגדרנו קוד שמקדם את המונה x ב-1 בכל פעם שהלולאה רצה:

    x += 1

    מאוד חשוב! אחרת הלולאה עלולה לרוץ עד שהמחשב יקרוס בגלל לולאה אינסופית. אם אתם נתקלים בבעיה של לולאה אינסופית תוכלו לעצור את הריצה בטרמינל באמצעות Ctrl + c.

 

לולאת while שרצה עד ל-break

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

בדוגמה הבאה הלולאה עוצרת כשערך המונה מגיע ל-4:

x = 1
 
while x < 9:
 print(x)
 
 if x == 4:
   break
 
 x += 1
1
2
3
4

לאותה תוצאה ניתן להגיע באמצעות הקוד הבא, שבו התנאי לסיום הוא True:

x = 1
 
while True:
 print(x)
 
 if x == 4:
   break
 
 x += 1
1
2
3
4
  • תנאי הסיום מוגדר כ-True ולכן הלולאה תמשיך לרוץ עד שמתקיים התנאי שגורם ל-break.

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

 

משחק הניחושים

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

הסרטון הקצר הבא (פחות מדקה) מציג את הקוד שנכתוב מיד בפעולה:

 

נכתוב את הסקריפט:

הפקודה input מבקשת מהמשתמש להקליד תשובה, לדוגמה:

# ask the user for his name
name = input("Enter your name and press [ENTER]: ")

את הקלט אותו מזין מהמשתמש נדפיס בתוך הודעה:

print(f"Hello, {name}")

הפקודה random.randint() תאפשר לנו לבחור מספר אקראי בטווח:

import random

# pick a random number in a range
the_number = random.randint(1, 7)

נבקש מהמשתמש להזין את הניחוש שלו בתוך לולאה שרצה שוב ושוב עד לניחוש נכון:

# initialize before running the loop
user_number = 0

# ask the user repeatedly until a lucky guess
while ( int(user_number) != the_number ):
    user_number = input("Guess a number between 1 and 7 and press [ENTER]: ")

במקרה שהמשתמש הצליח בניחוש, הלולאה מפסיקה לרוץ ומשחררת את הסקריפט לבצע את הפקודות בהמשך:

# once successful break the loop then notify
print(f"{name}, you lucky bastard! The number is indeed {user_number}!!")

ועכשיו, הכול ביחד:

import random

# ask the user for his name
name = input("Enter your name and press [ENTER]: ")

print(f"Hello, {name}")

# pick a random number in a range
the_number = random.randint(1, 7)

# initialize before running the loop
user_number = 0

# ask the user repeatedly until a lucky guess
while ( int(user_number) != the_number ):
    user_number = input("Guess a number between 1 and 7 and press [ENTER]: ")  

# once successful break the loop then notify
print(f"{name}, you lucky bastard! The number is indeed {user_number}!!")

לכל המדריכים בסדרה ללימוד פייתון

 

אהבתם? לא אהבתם? דרגו!

0 הצבעות, ממוצע 0 מתוך 5 כוכבים

 

 

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

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

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

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

השימוש שלך באתר מהווה ראייה להסכמתך עם הכללים והתקנות שנוסחו בהסכם תנאי השימוש.

הוסף תגובה חדשה

 

 

ענה על השאלה הפשוטה הבאה כתנאי להוספת תגובה:

איך אומרים בעברית אינטרנט?

 

תמונת המגיב

סופיה בתאריך: 09.01.2021

תודה רבה אני לא יודעת מה הייתי עושה בלי מה שכתבתם אני לא מבינה שם דבר במדעי המחשב וזה ממש עזר לי אני עכשיו מאוד שמחה תודה רבה רבה רבה.

תמונת המגיב

יוסי בן הרוש בתאריך: 11.01.2021

עכשיו גם אני שמח :-)

תמונת המגיב

קשוח בתאריך: 05.08.2021

יוסי תודה על המדריך אבל הרבה פעמים אני נתקע על חוקים בסיסיים בפייתון שאני לא יודע וזה תוקע את כל המצג ב RUN\r\nאיפה אפשר ללמוד את החוקים הבסיסיים ביותר לדוגמא לעשות שורה חדשה שכותבים PRINT אז צריך לעשות רווח קדימה,