מירי
כיתה ז · מבוא לתכנות בפייתון

תנאים בפייתון if, elif ו-else

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

1

הרעיון

תנאי הוא שאלה שהתשובה שלה True או False. שואלים בעזרת סימני השוואה:

==שווה!=שונה<קטן>גדול<=קטן או שווה>=גדול או שווה

if

אם התנאי True, השורות המוזחות מתחתיו רצות. אם False, מדלגים עליהן. אחרי התנאי באות נקודתיים, והשורות שבפנים זזות 4 רווחים.

if lives == 0:
    print("Game over")

elif ו-else

elif הוא "ואם לא, אז אולי". בודקים לפי הסדר, ורק הענף הראשון שמתקיים רץ. else רץ כשאף תנאי לא התקיים.

if temp >= 30:
    print("Hot")
elif temp >= 18:
    print("Nice")
else:
    print("Cold")

and ו-or

and: שני התנאים חייבים להיות True. or: מספיק שאחד מהם True. כך מחברים שתי שאלות לתנאי אחד.

if age >= 12 and height >= 140:
    print("You can ride")
if day == "Fri" or day == "Sat":
    print("Weekend")
לזכור: בשרשרת של if, elif ו-else רץ ענף אחד בלבד: הראשון שהתנאי שלו True. אם אף אחד לא, רץ ה-else.
2

מעבדה: איזה ענף ירוץ?

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

נסו את אלה:

הריצו בעצמכם

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

3

טעויות שכולם עושים

= במקום ==

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

✗ שגיאה
if score = 100:
    print("Perfect")
✓ נכון
if score == 100:
    print("Perfect")

שוכחים נקודתיים או הזחה

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

✗ שגיאה
if lives > 0
print("Keep going")
✓ נכון
if lives > 0:
    print("Keep going")

סדר לא נכון של elif

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

✗ 95 מקבל Pass
if total >= 55:
    grade = "Pass"
elif total >= 90:
    grade = "Excellent"
✓ מהגבוה לנמוך
if total >= 90:
    grade = "Excellent"
elif total >= 55:
    grade = "Pass"

and עם חצי תנאי

בעברית אומרים "גדול מ-5 וקטן מ-10". בפייתון כל צד של and הוא תנאי שלם, ולכן כותבים את המשתנה פעמיים.

✗ שגיאה
if x > 5 and < 10:
✓ נכון
if x > 5 and x < 10:

> או >=

"עובר מ-55" כולל את 55? אם כן, צריך >=. עם > הציון 55 בדיוק לא עובר. בדקו תמיד את המספר שעל הגבול.

✗ 55 נכשל
if total > 55:
✓ 55 עובר
if total >= 55:
4

דוגמה פתורה, צעד אחרי צעד

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

5

תרגול

6

שאלות שכולם שואלים

מה ההבדל בין elif לעוד if?

elif נבדק רק אם כל התנאים שלפניו היו False, ולכן בשרשרת רץ ענף אחד בלבד. כמה if נפרדים נבדקים כל אחד לבד, ואז יכולים לרוץ כמה מהם. נסו במעבדה.

חייבים לכתוב else?

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

מה ההבדל בין and ל-or?

עם and התנאי True רק אם שני החלקים True. עם or מספיק שאחד מהם True. "יש כרטיס and יש מקום" מחמיר יותר מ"יש כרטיס or יש מקום". תרגלו למטה.