ביטויים לוגיים והתניות

להלן סדרת שאלות ותשובות. הן עוסקות בכתיבת ביטויים לוגיים ובמבנים של התניות:
if, if…else, if…elif…else
בקליטת קלט באמצעות הפונקציה input ההנחה היא שמוכנס קלט תקין, אלא אם כן נאמר אחרת.
הסימן ? משמעו ערך כלשהו.
בהצלחה!
152 * 173
האם הטענה הזאת נכונה: להלן ביטוי לוגי שתוצאתו היא True כיוון שהוא בודק אם מתקיימת זהות בין שני ערכים זהים.
35 = 35
תשובה: לא נכון. הסימן = משמש בהוראות השמה ויוצר אותן. הוא אינו משמש בבדיקת זהות בין שני ערכים. כדי לבדוק אם ערך אחד זהה לערך אחד נשתמש בסימן == , כך:
תשובה: לא נכון. הסימן = משמש בהוראות השמה ויוצר אותן. כאן הוא יוצר הוראת השמה שמשמעה הוא: יש להציב במשתנה num1 את הערך המוצב במשתנה num2. נצטרך להחליף את הסימן = בסימן == כדי ליצור ביטוי לוגי שתוצאתו היא True אם הערכים המוצבים במשתנים num1 ו-num2 הם זהים זה לזה, או False אם הערכים הם שונים זה מזה. כך ייכתב הביטוי הלוגי הזה:
35 == 35
מה תוצאת הביטוי הזה – הערך True או הערך False?
72 == 72
תשובה: הערך True.
מה תוצאת הביטוי הזה – הערך True או הערך False?
72 == ’72’
תשובה: הערך False.
מה תוצאת הביטוי הזה – הערך True או הערך False?
72 == 72.0
תשובה: הערך True.
מה תוצאת הביטוי הזה – הערך True או הערך False?
5 != 7
תשובה: הערך True.
מה תוצאת הביטוי הזה – הערך True או הערך False?
5 != 5
תשובה: הערך False.
מה תוצאת הביטוי הזה – הערך True או הערך False?
‘rambam’ == ‘Rambam’
תשובה: הערך False.
מה תוצאת הביטוי הזה – הערך True או הערך False?
‘water’ == ‘juice’
תשובה: הערך False.
מה תוצאת הביטוי הזה – הערך True או הערך False?
False == False
תשובה: הערך True.
מה תוצאת הביטוי הזה – הערך True או הערך False?
False != True
תשובה: הערך True.
מה תוצאת הביטוי הזה – הערך True או הערך False?
3 > 10
תשובה: הערך False.
מה תוצאת הביטוי הזה – הערך True או הערך False?
10 > 3
תשובה: הערך True.
מה תוצאת הביטוי הזה – הערך True או הערך False?
3 > 3
תשובה: הערך False.
לפניכם ביטוי לוגי שתוצאת חישובו היא False. הוסיפו לו תו אחד באופן שתוצאת חישובו תהיה True.
3 > 3
3 >= 3
מה תוצאת הביטוי הזה – הערך True או הערך False?
(7 > 3) or (8 < 2)
תשובה: הערך True.
מה תוצאת הביטוי הזה – הערך True או הערך False?
(7 > 3) and (8 <= 8)
תשובה: הערך True.
איזה ערך מוצב במשתנה result – הערך True או הערך False?
booksNum = 10
result = booksNum >= 3
תשובה: הערך True.
איזה ערך מוצב במשתנה result – הערך True או הערך False?
x = 3
result = (x + 2 > 3) and (x – 2 <= 8)
תשובה: הערך True.
איזה ערך מוצב במשתנה result – הערך True או הערך False?
a = 5
b = 7
c = 6
result = a < b < c
תשובה: הערך False.
איזה ערך מוצב במשתנה result – הערך True או הערך False?
a = 5
b = 7
c = 6
result = a > b > c
תשובה: הערך False.
איזה ערך מוצב במשתנה result – הערך True או הערך False?
a = 5
b = 7
c = 6
result = a < b > c
תשובה: הערך True.
בתכנית מוגדר משתנה k והוא מכיל מספר שלם כלשהו. כתבו ביטוי לוגי הבודק אם המספר הזה הוא בין 1 (כולל) ל-4 (לא כולל).
(k >= 1) and (k < 4)
מה תוצאת הביטוי הזה – הערך True או הערך False?
not (7 > 3)
תשובה: הערך False.
מה תוצאת הביטוי הזה – הערך True או הערך False?
not True
תשובה: הערך False.
מה תוצאת הביטוי הזה – הערך True או הערך False?
(True and True) or False
תשובה: הערך True.
מה תוצאת הביטוי הזה – הערך True או הערך False?
False and (True or False)
תשובה: הערך False.
מה תוצאת הביטוי הזה – הערך True או הערך False?
not True or not False
תשובה: הערך True.
מה תוצאת הביטוי הזה – הערך True או הערך False?
not not not False
תשובה: הערך True.
קטע קוד זה צריך להוסיף 1 למספר שיש במשתנה x ולהדפיס את המספר המוגדל, כל זה אם ורק אם הערך שיש ב-x לפני ההגדלה הוא 3. בקטע יש שגיאה. מהי וכיצד יש לתקנה?
if x == 3:
x = x + 1
print(x)
תשובה: במבנה if ההוראות המתבצעות אם התנאי הנבדק מתקיים צריכות להיות מוזזות ימינה לעומת השורה שהתנאי נבדק בה. מבחינה זו אין בקוד כאן מבנה if תקין: ההוראה המוסיפה 1 לערך שיש במשתנה x והוראת ההדפסה צריכות להתבצע אך ורק אם תוצאת הביטוי הנבדק היא True, ואולם הן אינן מוזזות ימינה לעומת השורה המבצעת את הבדיקה. אם כן הקוד המתוקן הוא זה:
if x == 3:
x = x + 1
print(x)
מה מדפיס קטע הקוד הזה?
if True:
print(‘Always’)
print(‘Here too’)
Always
Here too
מה מדפיס קטע הקוד הזה?
if not False:
print(‘Always’)
print(‘Here too’)
Always
Here too
מה מדפיס קטע הקוד הזה?
grade = 80
if grade < 90:
grade = grade + 2
print(grade)
תשובה: המספר 82.
מה מדפיס הקוד הזה אם המשתמשת מכניסה את המחרוזת ‘9’?
n = int(input(‘Please enter an integer bigger than 0: ‘))
if (n > 0):
print(n)
n = n – 1
תשובה: המספר 9.
אם נריץ את הקוד הזה נקבל הודעת שגיאה. ממה נגרמת השגיאה?
n = int(input(‘Please enter an integer bigger than 0: ‘))
n = k + 3
if (n == k + 3):
print(‘k is equal to (n+3).’)
תשובה: המשתנה k לא הוגדר קודם לשימוש בו בביטוי החשבוני בהוראה השנייה.
קטע קוד זה אמור להדפיס ‘both’ אם המספרים שיש במשתנים a ו-b שניהם גדולים מ-10. הקוד שגוי. הסבירו מה השגיאה והציעו תיקון.
if a and b > 10:
print(‘both’)
תשובה: האופרטור and מצרף שני ביטויים לוגיים. כאן משמאלו אין ביטוי לוגי אלא שם משתנה. אי אפשר להשוות כך בכפיפה אחת שני משתנים באמצעות אופרטור של השוואה (כאן: גדול מ-). יש להשוות כל ערך בנפרד. הנה הקוד המתוקן.
if (a > 10) and (b > 10):
print(‘both’)
קטע קוד זה אמור להדפיס ‘found it’ אם המספר שיש במשתנה num הוא מספר גדול מ-10 וזוגי. הקוד שגוי. הסבירו מה השגיאה והציעו תיקון.
if (num > 10):
if (num % 2 == 0):
print(‘found it’)
תשובה. הוראת ה-if הפנימית וגופה אינן מוזזות ימינה כנדרש. הנה הקוד המתוקן.
if (num > 10):
if (num % 2 == 0):
print(‘found it’)
קטע קוד זה אמור להדפיס ‘found it’ אם המספר שיש במשתנה num הוא מספר גדול מ-10 וזוגי. הקוד שגוי. הסבירו מה השגיאה והציעו תיקון.
if (num > 10)
if (num % 2 == 0)
print(‘found it’)
תשובה: הסימן נקודתיים הושמט בסוף השורה הראשונה בכל אחד משני מבני ה-if. הקוד הנכון:
if (num > 10):
if (num % 2 == 0):
print(‘found it’)
כתבו תכנית הקולטת מהמשתמשת שתי מחרוזות המייצגות מספרים עשרוניים, מספר א’ ומספר ב’. היא מדפיסה 1 אם מספר א’ גדול ממספר ב’ וגם מספר ב’ גדול מ-5. היא מדפיסה 2 אם מספר א’ גדול ממספר ב’ וגם מספר ב’ קטן מ-2. אין להשתמש באופרטור and ויש להשתמש בשלוש הוראות if לכל היותר.
num1 = float(input(‘Please input a decimal number: ‘)
num2 = float(input(‘Please input another decimal number: ‘)
if num1 > num2:
if num2 > 5:
print(1)
if num2 < 2:
print(2)
קטע קוד זה צריך להדפיס 1 אם המספר שיש במשתנה num הוא גדול מ-15, או 2 אם המספר הזה אינו גדול מ-15. בקטע זה יש שגיאה. מהי וכיצד יש לתקנה?
if num > 15:
print(1)
else num <= 15:
print(2)
תשובה: לפי הגדרתו חלק else במבנה if…else בודק את המקרה שאין מתקיים התנאי שבודקת הוראת ה-if, ואין צורך לבדוק מקרה זה במפורש. אחרי else נכתב מיד הסימן נקודתיים (אלא אם כן מופיעה אחריו הוראת if). הקוד התקין:
if num > 15:
print(1)
else:
print(2)
קטע קוד זה צריך להפחית 1 מהמספר שיש במשתנה x ולהדפיס את התוצאה, כל זה אם ורק אם הערך שיש ב-x לפני ההפחתה אינו 3. בקטע זה יש שגיאה. מהי וכיצד יש לתקנה?
if x == 3:
x = x + 1
else:
x = x – 1
תשובה: ההוראה else צריכה להיות מיושרת אנכית כמו הוראת ה-if שהיא נספחת אליה. הקוד התקין:
if x == 3:
x = x + 1
else:
x = x – 1
קטע קוד זה צריך להדפיס את המחרוזת ‘white’ אם הערך שיש במשתנה s אינו המחרוזת ‘black’. בקטע יש שגיאה. מהי וכיצד יש לתקנה?
if s == ‘black’:
print(s)
else:
print(‘white’)
תשובה: ההוראות המתבצעות בגוף מבנה else וכתובות מתחת לשורה שהיא כתובה בה צריכות להיות מוזזות ימינה לעומת השורה הזאת ומיושרות אנכית כמו ההוראות בגוף מבנה ה-if. כאן הוראת ההדפסה של המחרוזת ‘white’ מיושרת אנכית כמו ההוראה else. הקוד התקין:
if s == ‘black’:
print(s)
else:
print(‘white’)
קטע קוד זה צריך להדפיס את המחרוזת ‘bigger’ אם המספר שיש במשתנה num אינו גדול מ-5.2. בקטע יש שגיאה. מהי וכיצד יש לתקנה?
if not (num > -5.2):
print(‘equal or smaller’)
else
print(‘bigger’)
תשובה: הסימן נקודתיים חסר לאחר המילה else. הקוד התקין:
if not (num > -5.2) :
print(‘equal or smaller’)
else
print(‘bigger’)
קטע קוד זה צריך לזהות שהמספר שיש במשתנה num גדול מ-10 וגם אי-זוגי, ולהודיע על כך. בקטע יש שגיאה. מהי וכיצד יש לתקנה?
if (num > 10):
if (num % 2 == 0):
print(‘bigger than 10 and even’)
else:
print(‘bigger than 10 and odd’)
תשובה: כדי שהקוד יהיה תקין חלק ה-else צריך להיות מיושר אנכית כמו הוראת ה-if הפנימית. במצבו הנוכחי חלק ה-else מיושר אנכית כמו הוראת ה-if החיצונית ולכן בודק את המקרה שהערך המוצב במשתנה num הוא קטן מ-10 או שווה ל-10. גם ההוראה בגוף חלק ה-else צריכה להיות מוזזת ימינה ולהיות מיושרת אנכית כמו ההוראות בגוף חלק ה-if. הקוד התקין:
if (num > 10):
if (num % 2 == 0):
print(‘bigger than 10 and even’)
else:
print(‘bigger than 10 and odd’)
השלימו את התנאי בקוד הזה.
name = input(“First name of former US president: ‘)
if ():
print(‘Correct!’)
else:
print(‘Wrong. The correct answer is:’, name)
name = input(‘First name of US’ former president: ‘)
if (name == ‘Donald’):
print(‘Correct!’)
else:
print(‘Wrong. The correct answer is:’, name)
השלימו את התנאי בקוד הזה באופן שהן המחרוזת ‘Donald’ הן המחרוזת ‘Trump’ ייחשבו תשובה נכונה.
name = input(‘Name of former US president: ‘)
if ():
print(‘Correct!’)
else:
print(‘Wrong. The correct answer is:’, name)
name = input(‘Name of US’ former president: ‘)
if (name == ‘Donald’) or (name == ‘Trump’):
print(‘Correct!’)
else:
print(‘Wrong. The correct answer is:’, name)
הרצנו את הקוד הזה והמשתמשת הכניסה את הציון 80. מה הדפיס קטע הקוד?
grade = int(input(‘Please enter grade: ‘))
if grade >=80:
print(‘Excellent.’)
else:
print(‘Moed B.’)
print(‘The End.’)
Excellent.
The End.
הרצנו קטע קוד זה. מה הודפס?
averageGrade = 80
finalGrade = 90
if averageGrade >= 80:
finalGrade = finalGrade + 2
if finalGrade > 90:
print(‘Bonus awarded.’)
else:
print(‘No bonus.’)
Bonus awarded.
הרצנו קטע קוד זה. מה הודפס?
salary = 15000
if (salary == 10000):
print(‘Bonus is 500.’)
print(‘Raise is 1500.’)
if (salary > 5000):
print(‘Bonus is 300.’)
print(‘Raise is 1000.’)
else:
print(‘Raise is 700.’)
Bonus is 300.
Raise is 1000.
הרצנו קטע קוד זה והודפס המספר 2. תנו דוגמה לקלט אפשרי לתכנית.
ch1 = input()
ch2 = input()
ch3 = input()
if ch1 != ch2 or ch1 == ch3:
if ch1 == ch3:
print(1)
else:
print(2)
else:
print(3)
תשובה: ch1 == 1, ch2 == 2, ch3 == 3.
הרצנו קטע קוד זה ובתור קלט הוכנס המספר 7.3. מה הודפס?
print(‘Enter final grade: ‘)
grade = float(input());
if (grade <= 9.0):
newGrade = grade + 0.5
print(‘Your grade is: ‘, newGrade)
else:
print(‘Your grade is: ‘, grade)
Your grade is: 7.8
נכתוב תכנית המדמה הטלת קוביה. על פיאות הקוביה נכתבו המספרים 1 עד 6. אם המספר שהתקבל הוא 6 התכנית תודיע על כך. אם המספר שהתקבל אינו 6 התכנית תודיע על כך. להלן מימוש חסר של התכנית. השלימוהו.
rndNum =
if ():
print(‘Cube number is 6.’)
print(‘Cube number is not 6.’)
import random
rndNum = random.randint(1, 6)
if (rndNum == 6):
print(‘Cube number is 6.’)
else:
print(‘Cube number is not 6.’)
שכתבו קוד זה באופן שיהיה ערוך לפי המבנה if…elif…else.
if (price > 200):
print(‘Sorry, I cannnot afford it.’)
else:
if (price > 150):
print(‘I will reconsider.’)
else:
print(‘I shall pay.’)
if (price > 200):
print(‘Sorry, I cannot afford it.’)
elif (price > 150):
print(‘I will reconsider.’)
else:
print(‘I shall pay.’)