מערכת תנאים - הפקודות if, elif, else
לעיתים אנו רוצים לייצר מבנה המורכב משרשרת של תנאים שאם אחד מהם מתקיים המחשב מפסיק את תהליך הבדיקה ומבצע את הפעולה ואם אף אחד מהם לא מתקיים, המחשב מבצע פעולה של ברירת מחדל הכתובה מתחת לפקודה else, כלומר פעולה המתבצעת אם לא התקיים אף תנאי מהתנאים באותה שרשרת.
x=2
if x<2:
print ("small")
elif x>2:
print ("big")
else:
print ("equal")
>>>
equal
למעלה אנו רואים שרשרת של שני תנאים, שאם היה מתקיים אחד מהם המחשב היה מפסיק את הבדיקה ומבצע את הפעולה שרשומה מתחת לתנאי שהתקיים. אנו יודעים שמדובר בשרשרת שת תנאים הקשורים זה בזה משום שהם נמצאים אחד מתחת לשני באותו קו (שייכים לאותו בלוק של קוד). היות ששני התנאים לא התקיימו , x אינו קטן מ – 2 ואינו גדול מ- 2 אנו מבקשים להדפיס את ההוראה למקרה שכזה באמצעות הפקודה else. המילה elif היא דרך מקוצרת לרשום else if כלומר לבחון תנאי נוסף. אין מגבלה לכמות ה- elif שניתן לבדוק בשרשרת תנאים –
x=2
if x==1:
print ("one")
elif x==2:
print ("two")
elif x==3:
print ("three")
elif x==4:
print ("four")
else:
print ("not 1 or 2 or 3 or 4")
>>>
two
בדוגמא למעלה אנו רואים שהמחשב עוצר לאחר שהוא מוצא שהתנאי השני (elif x==2) מתקיים ומוציא לפועל את ההוראה הכתובה מתחת לתנאי השני ומדפיס את המילה two בלי להמשיך ולבחון את התנאים האחרים גם אם אחד מהם היה נכון.
x=2
if x==1:
print ("one")
elif x==2:
print ("two")
elif x<3:
print ("less than three")
elif x==4:
print ("four")
else:
print ("not 1 or 2 or 3 or 4")
>>>
two
בדוגמא למעלה אנו רואים שהמחשב מדפיס two למרות שגם התנאי השלישי x<3 מתקיים ולכאורה היה צריך להדפיס גם less than three, אבל היות שהמחשב במבנה הזה מפסיק לבדוק את התנאים לאחר שמתקיים תנאי אחד (לפי הסדר שבו הם כתובים), הוא לא מגיע לבדוק את התנאי x<3 ולא מדפיס את ההוראה הרשומה מתחת לתנאי הזה.
תרגיל-מערכת תנאים – מה תהיה התוצאה אם בשורה הראשונה בתוכנית למעלה x=5 במקום x=2?
אפשר גם להתנות תנאים עבור מחרוזות -
x="sababa"
if x=="sababa":
print ("walla")
else:
print ("basa")
>>>
walla
צריך לזכור שאותיות גדולות וקטנות משנות את המחרוזת "SABABA" אינה אותה מחרוזת כמו "sababa" באנגלית אנו קוראים לזה case sensitive (תלוי רישיות), כלומר ישנה אבחנה בין מחרוזות או משתנים הכתובים בשילובים שונים של אותיות גדולות (רישיות) וקטנות, כל אחד הוא מחרוזת או משתנה נפרד.
אנו יכולים לרשום שרשרת של תנאים שהמחשב לא יפסיק לבחון לאחר שהתנאי מתקיים וזאת כאשר אנו לא משתמשים ב elif אלא בפקודת if חדשה -
x=0
if x<5:
x=10
if x>=10:
x=5
if x>4:
x="sababa"
print (x)
>>>
sababa
התוכנית למעלה מתחילה בהשמת הערך 0 ב- x היא בודקת האם x<5, והיות שזה מתקיים היא מציבה עכשיו 10 ב – x . לאחר מכן היא בודקת האם x גדול או שווה ל- 10, והיות שזה מתקיים היא מציבה עכשיו 5 ב- x ולבסוף היא בודקת האם x גדול מ – 4 והיות שזה מתקיים היא מדפיסה sababa.
מערכת של תנאים עם if ו- else ניתן לכתוב גם באופן מקוצר כמו בדוגמא הבאה –
david=10 yehonatan=100 if david>5 else 50 print(yehonatan)
>>>
100
עוד דרך:________________________________________________________________________________________________
david=10 print("yehonatan" if david>5 else 50)
>>>
yehonatan
אנו רואים למעלה שהרבה יותר קריא לעשות את זה בשורה אחת.