Sharedassignments / assignment3 / meeting3_booleans_values_and__operators.ipynbOpen in CoCalc
Author: hila levy
Views : 30

שם בן זוגי:

משתנים, ביטויים ואופרטורים בוליאניים

ערכים ומשתנים בוליאניים

ערכים בוליאנים הם שני עצמים קבועים True ו- False. קבועים אלו משמשים אותנו לייצוג של ערכי אמת ושקר. הערכים הנומריים של שני קבועים אלו הם 1 ו-0 בהתאמה.
In [1]:
from IPython.display import YouTubeVideo YouTubeVideo('6D3if8J3MMY')
In [ ]:
<div dir = rtl> <b>תרגיל 1:</b> חשבו את ערכו של כל אחד מהביטויים שבהמשך:</div> False * False True * True True + True True * False False + False
In [ ]:
false true true false false
ביטוי בוליאני הוא ביטוי שתוצאתו היא הערכים True או False. בביטוי בוליאני נעשה שימוש באופרטורי היחסים:
    A == B  
    A != B
    A > B
    A < B
    A >= B
    A <= B
    A <> Β
תרגיל 2:עבור A = 6 ו- B = 2 בידקו את תוצאת כל אחד מהביטויים הבוליאנים שלמעלה. רשמו את התרגיל בעזרת סולמית ותחתיו הפתרון
In [ ]:
#6==2 false #6!=2 true #6>2 true #6<2 false #6>=2 true #6<=2 false #6<>2 true
תרגיל 3: נתונה המשוואה הריבועית: ax2+bx+c=0ax^2 + bx +c = 0 כתבו פונקציה המקבלת את a,ba, b ו- cc ומחזירה True אם למשוואה הריבועית שאלו הם מקדמיה יש פתרון, ו- False אחרת.
In [2]:
def rib(a, b, c): v=b**2-4*a*c==0 return v rib(1, 2, 3)
False
תרגיל 4: קצב זרימת המים מברז הוא I. הברז ממלא מיכל גלילי ששטח בסיסו S. כתבו פונקציה בשם get_h המקבלת את I, S, משך הזמן שהברז פתוח t וגובה רצוי של מים במיכל h ומחזירה True במידה והמים עברו את הגובה הרצוי ו- False אחרת.
In [4]:
def get_h(i, t, s, h): l=(i*t)/s==h return l get_h(1,1,1,1)
True
תרגיל 5: כתבו פונקציה בשם sign הפונקציה אמורה לקבל מספר ולהחזיר True במידה והוא מספר חיובי ו-False אחרת
In [7]:
def sign(n): l= n>=0 return l sign(-9)
False
תרגיל 6: כתבו פונקציה בשם divisible_by_3 המקבלת מספר שלם והמחזירה True במידה והוא מתחלק ב- 3 ו-False אחרת (רמז: השתמשו באופרטור %).
In [9]:
def divi_by_3(m): j= m%3==0 return j divi_by_3(10)
False

אופרטורים בוליאנים

שלושת האופרטורים הבוליאנים העיקריים הם ה- or ה- and וה- not. משמעות אופרטורים אלו כמשמעותו המילולית של שמם. האופרטורים or ו- and הם אופרטורים בינאריים, כלומר פועלים על שני ערכים. האופרטור not הוא אפרטור יונארי, פועל על ערך יחיד. את אופן פעולתו של אופרטור בוליאני נהוג לתאר באמצעות מה שמכונה טבלת אמת. לדוגמא בהמשך מוצגת טבלת אמת חלקית של פעולת ה - and
A B A and B
False False False
True False False
False True
True True
תרגיל 7: השלימו את טבלת האמת של פעולת ה- and ובידקו אותה.
In [ ]:
תרגיל 8: צרו טבלת אמת לפעולת ה- or ובידקו אותה.
שלושת האופרטורים הבוליאנים העיקריים הם ה- or ה- and וה- not. משמעות אופרטורים אלו כמשמעותו המילולית של שמם. האופרטורים or ו- and הם אופרטורים בינאריים, כלומר פועלים על שני ערכים. האופרטור not הוא אפרטור יונארי, פועל על ערך יחיד. את אופן פעולתו של אופרטור בוליאני נהוג לתאר באמצעות מה שמכונה טבלת אמת. לדוגמא בהמשך מוצגת טבלת אמת חלקית של פעולת ה - or
A B A or B
False False False
True False True
False True
True True
In [ ]:
תרגיל 9: נתון כי A = True ו- B= False חשבו את ערכו של כל אחד מהביטויים הלוגיים שלמטה. רשמו את הבטוי:
A and not B
not (A or B)
A and (A or B)
not A and not B
not A or not B
B or (not (A and B))
In [ ]:
true false true false true true

משפט התנאי if

לפעמים אנחנו רוצים לבצע קטע קוד מסוים רק אם מתקיים תנאי מסויים. הדרך לעשות זאת היא באמצעות משפט ה- if. האנימציה שבהמשך מתארת את אופן פעולת משפט ה- if.
![if.gif](../../images/if.gif)
למשפט ה- if המבנה הבא:
if תנאי:
    משפטים לביצוע
המשך תוכנית
קטע התוכנית שבהמשך בודק אם n מספר זוגי, אם כן הוא מדפיס הודעה במידה ולא הוא ממשיך בהרצה
In [2]:
n = 6 if n % 2 == 0: print(n,'is even') m = 2*n print('m = ',m)
6 is even m = 12
תרגיל 10: הריצו את קטע הקוד הקודם על ערכים שונים של n ובידקו שהוא פועל נכון
In [ ]:
נניח שנתונה הבעיה הבאה:
צריכת הדלק של מכונית, כשהיא נוסעת על כבשי תקין שווה ל- 10km/l ( המכונית צורכת ליטר דלק בנסיעה לאורך מסלול שאורכו 10 ק"מ). על כביש משובש צריכת הדלק של המכונית עולה ב- 12%. השיטה שבהמשך מחשבת את צריכת הדלק של המכונית:
In [4]:
def fuel_consumption(road, distance): fuel = distance / 10 road = road.upper()#.upper ממיר אותיות קטנות ולגדולות if road == 'ROUG': fuel = fuel +0.12*fuel return fuel road="roug" distance =1 fuel_consumption(road, distance)
0.112
לא פעם קורה שאנחנו מעונינים שהתוכנית תבצע דבר אחד במקרה ותנאי מסוים מתקיים ודבר אחד במידה והתנאי אינו מתקיים. לצורך זה נשתמש במשפט if - else .

if_else.jpeg

צורת הכתיבה של מבנה זה היא:

if התנאי הוא True:

    המשפטים אותם המחשב יבצע במידה והתנאי מתקיים
else:
    המשפטים אותם על המחשב לבצע במידה והתנאי לא נכון
תרגיל 11: הרחיבו את התרגיל הבודק האם מספר מסוים הוא זוגי באופן כזה שהוא ידפיס הודעה מתאימה גם כאשר המספר הוא אי זוגי.
In [1]:
def zogi(n): if n%2==0: print("true") else: print ("flase") zogi(2)
true
תרגיל 12: כתבו פונקציה בשם is_equal הקולטת שני מספרים עשרוניים a ו- b ומדפיסה את היחס הלוגי ביניהם. אם הם שווים יודפס b==a. אם a גדול מ- b יודפס ba.
הערה כאשר משווים בין שני מספרים עשרוניים, לא משתמשים בסימן = = אלה מגדירים אותם כשווים אם ההבדל ביניהם קטן מאיזה שהוא גודל מסוים. למשל המשפט הבא בודק האם ההפרש בין x ל- y קטן 104 10^{-4} :
if abs(x-y)<1E-4:
In [15]:
def is_equal(a, b): v= a-b if(v>0): print("a>b") elif a<b: print("a<b") else: print(a==b) return v is_equal(8.00001, 8.00011)
a<b
תרגיל 13:ציון נכשל במ"ח הוא ציון מתחת ל- 75. כתבו פונקציה בשם is_pass המקבלת ציון של תלמיד מ"ח ומדפיסה "Failed" במידה והתלמיד נכשל ו-"Passed" אם התלמיד עבר
In [22]:
def is_passed(a): if a<75: print("failed") else: print("passed") is_passed(80)
passed
תרגיל 14:מהירות ממוצעת מוגדרת כמנת המרחק שגוף עבר במשך הזמן שהיה דרוש לגוף לעבור מרחק זה. כתבו פונקציה בשם v_avg המקבלת בכניסה ארבעה פרמטרים, הראשון הוא המרחק שעבר הגוף, השני יחידת המרחק (Km'' או 'm') השלישי פרק הזמן והרביעי יחידת הזמן ('hr' או 's'). על הפונקציה להדפיס את המהירות הממוצעת ביחידות של m/s
In [5]:
def v_avg(d, m, t, s): m = m.upper() if (m=='mk'): d=(d/1000) print("aa") s = s.upper() if (s=='hr'): t=(t*3600) print("kk") avg=(d/t) return avg v_avg(1000,'m',1,'sec')
1000.0
תרגיל 15:כאשר צפיפותו של גוף גדולה מצפיפות המים (השווה ל- 1.0gr/cm31.0gr/cm^3) הוא שוקע במים. אם צפיפותו קטנה יותר הוא יצוף. מצב ריחוף הוא מצב שבו צפיפות הגוף שווה לצפיפות המים. במצב זה נשאר הגוף בכל מקום בו מציבים אותו בתוך המים. כתבו פונקציה בשם is_float המקבלת כפרמטרים מסה ונפח של גוף ומחזירה הודעה בהתאם למצבו של הגוף: pop up, quivering ,sink.
In [8]:
def is_float(v, m): z=(m/v) if (z<1): print("popup") elif(z>1): print("sink") else: print("quivering") is_float(10, 1)
popup
תרגיל 16: מפעל מתכת מייצר לוחות פח בצרות שונות: עיגול, מלבן ומשולש ישר זווית. מסת סמ"ר אחד של הפח היא 2gr, ומחיר של גרם אחד פח הוא 0.0025 ₪. אתם נדרשים לכתוב עבור המפעל פונקציה בשם get_price המקבלת בין שניים לשלושה פרמטרים. הפרמטר הראשון הוא אות המייצגת את צורת לוח הפח, מספר שני רדיוס או צלע והמספר השלישי (במידת הצורך) צלע נוספת. הפונקציה צריכה להחזיר את מחיר הפח הנדרש לייצור צורה זו.
In [14]:
def get_price(sh, z1, z2): from math import pi if (sh=='c'): s=pi*z1**2 elif(sh=='t'): s=z1*z2/2 else: s=z1*z2 p=s*0.005 return p get_price('c',2,0)
0.06283185307179587