Download as pdf or txt
Download as pdf or txt
You are on page 1of 32

‫בולאנים‬

‫רות בורנשטין‬
‫ו ‪LIST COMPREHENSION‬‬
‫סיכום וחזרה ‪ -‬ערכים‬

‫ראינו מתחילת השנה שיש בפייתון ‪ 3‬סוגי ערכים‪:‬‬

‫‪ .1‬מספר שלם – ‪ .-1,13,100‬מוגדר כ‪int‬‬

‫‪ .2‬מספר עשרוני – ‪ .3.14 ,0.5‬מוגדר כ‪.float‬‬

‫‪ .3‬תו או כמה תווים עם " לפני ואחרי – "‪."7" ,"hello world‬‬


‫מוגדר כ‪.str‬‬

‫שיעור ‪ :3‬פונקציות בסיסי‪ ,‬רשימות‪ ,‬הרכבת רשימות‪ ,‬פילטרים ועוד‬


‫סיכום וחזרה – מבני נתונים‬

‫ראינו מתחילת השנה שיש בפייתון ‪ 4‬סוגי מבני נתונים‪:‬‬

‫‪ .1‬רשימה – כל מה שמוגדר עם ][‪ .‬מאפשרת לשמור הרבה אובייקטים‬


‫מסוגים שונים ולעשות עליהם מגוון פעולות בקלות‪ .‬פניה אל ערך‬
‫ברשימה תתבצע בעזרת האינדקס שלו‪.‬‬

‫]]‪lst = [1,2,45, ‘a’, [6,7,8‬‬

‫‪ – tuple .2‬כל מה שמוגדר עם )(‪ .‬רשימה קבועה‪ ,‬לאחר הגדרתה אין‬


‫אפשרות לשנותה‪.‬‬

‫)]‪tup = (1,2,45, ‘a’, [6,7,8‬‬

‫שיעור ‪ :3‬פונקציות בסיסי‪ ,‬רשימות‪ ,‬הרכבת רשימות‪ ,‬פילטרים ועוד‬


‫סיכום וחזרה – מבני נתונים‬

‫‪ .3‬מילון – כל מה שמוגדר עם }{ ומוכנסים אליו זוגות של איברים‪.‬‬


‫המפתחות במילון הם ייחודיים‪ .‬פניה אל ערך במילון תתבצע‬
‫באמצעות המפתח שלו‪.‬‬

‫}]‪dic = {1:2, 45:‘a’, ‘cd’:[6,7,8‬‬

‫‪ – set .4‬כל מה שמוגדר עם }{ ומוכנסים אליו איברים יחידים‪ .‬כל‬


‫איבר יופיע פעם אחת וכפילויות ימחקו‪.‬‬

‫}]‪se = {1,2,45, ‘a’, [6,7,8‬‬

‫שיעור ‪ :3‬פונקציות בסיסי‪ ,‬רשימות‪ ,‬הרכבת רשימות‪ ,‬פילטרים ועוד‬


‫סיכום וחזרה ‪ -‬לולאות‬

‫לולאות מוגדרות בעזרת ‪ for‬או ‪ while‬ומאפשרות לנו לעבור‬


‫על רשימה או על טווח מספרים ולעשות על כל אחד‬
‫מהאיברים פעולה מסוימת‪.‬‬

‫אפשר לעבור על האיברים עצמם או לעבור על האינדקס של‬


‫האיברים‪.‬‬

‫שיעור ‪ :3‬פונקציות בסיסי‪ ,‬רשימות‪ ,‬הרכבת רשימות‪ ,‬פילטרים ועוד‬


‫ לולאות‬- ‫סיכום וחזרה‬

lst = [1,2,45, ‘a’, [6,7,8]]

for x in lst:
print(x)
for i in range(len(lst)):
print(lst[i])
j=0
while j< len(lst)):
print(lst[j])
j +=1

‫ פילטרים ועוד‬,‫ הרכבת רשימות‬,‫ רשימות‬,‫ פונקציות בסיסי‬:3 ‫שיעור‬


‫בוליאנים‬
‫‪ True‬ו‪ False‬הן מילים שמורות בפייתון‪,‬‬

‫המחזיקות את הערכים ‪ 1‬ו‪ 0‬בהתאמה‪.‬‬

‫אפשר להתייחס אליהן כפרמטרים לכל דבר‪.‬‬

‫להלן הדוגמאות‪:‬‬

‫שיעור ‪ :3‬פונקציות בסיסי‪ ,‬רשימות‪ ,‬הרכבת רשימות‪ ,‬פילטרים ועוד‬


‫בוליאנים‬
‫‪>>> True + 1‬‬
‫‪2‬‬
‫‪>>> 0 * True‬‬
‫‪0‬‬
‫‪>>> False * True‬‬
‫‪0‬‬
‫‪>>> False + True‬‬
‫‪1‬‬
‫‪>>> True/False‬‬
‫????‬
‫שיעור ‪ :3‬פונקציות בסיסי‪ ,‬רשימות‪ ,‬הרכבת רשימות‪ ,‬פילטרים ועוד‬
TRUTH VALUE TESTING
The following values are considered false:
 None
 False
 Zero of any numeric type. For example: 0 or 0.0
 Any empty sequence. For example: () or []
 Any empty mapping. For example: {}
 instances of user-defined classes, if the class defines a __bool__()
or __len__() method, when that method returns the integer zero or
bool value False
All other values are considered true

‫ פילטרים ועוד‬,‫ הרכבת רשימות‬,‫ רשימות‬,‫ פונקציות בסיסי‬:3 ‫שיעור‬


‫דוגמאות לבדיקות המחזירות ערכי אמת ושקר‬

‫‪Results‬‬
‫][=‪li‬‬ ‫‪False‬‬
‫‪if li:‬‬
‫)”‪print (“True‬‬
‫‪else:‬‬
‫)”‪print (“False‬‬
‫‪x = None‬‬ ‫‪Empty‬‬
‫‪if x:‬‬
‫)”‪print (“Full‬‬
‫‪else:‬‬
‫)”‪print (“Empty‬‬

‫שיעור ‪ :3‬פונקציות בסיסי‪ ,‬רשימות‪ ,‬הרכבת רשימות‪ ,‬פילטרים ועוד‬


‫דוגמאות לפונקציות המחזירות ערכי אמת ושקר‬

‫‪Results‬‬
‫)‪bool(100‬‬ ‫‪True‬‬
‫"‪x = "764bg‬‬ ‫‪False‬‬
‫)(‪x.isdigit‬‬
‫)(‪3.76.is_integer‬‬ ‫‪False‬‬

‫שיעור ‪ :3‬פונקציות בסיסי‪ ,‬רשימות‪ ,‬הרכבת רשימות‪ ,‬פילטרים ועוד‬


‫‪ALL AND ANY FUNCTIONS‬‬

‫‪ all ‬בודקת האם כל האיברים ברשימה מקיימים את‬


‫התנאי‪.‬‬

‫)]‪all(x>0 for x in [1,2,-4,5.5‬‬ ‫‪False‬‬

‫‪ any ‬בודקת אם לפחות אחד מהאיברים מקיים את‬


‫התנאי‪.‬‬

‫)]‪any(x>0 for x in [1,2,-4,5.5‬‬ ‫‪True‬‬

‫שיעור ‪ :3‬פונקציות בסיסי‪ ,‬רשימות‪ ,‬הרכבת רשימות‪ ,‬פילטרים ועוד‬


‫לולאה אינסופית‬

‫לולאה אינסופית זו לולאה שלא תיגמר אף פעם‪ .‬לדוגמה‪:‬‬

‫‪while True:‬‬
‫)”‪print(“Hello‬‬

‫שיעור ‪ :3‬פונקציות בסיסי‪ ,‬רשימות‪ ,‬הרכבת רשימות‪ ,‬פילטרים ועוד‬


‫לולאה אינסופית‬

‫אפשר גם להגדיר תנאי מתי תעצור‪:‬‬

‫‪while True:‬‬
‫)”‪print(“Hello‬‬

‫)” ‪x = input(“Please enter a letter:‬‬

‫‪if x == “e”:‬‬

‫‪break‬‬

‫שיעור ‪ :3‬פונקציות בסיסי‪ ,‬רשימות‪ ,‬הרכבת רשימות‪ ,‬פילטרים ועוד‬


‫‪LOGIC GATES‬‬

‫שערים לוגיים הוא תחום גדול ורחב‪.‬‬

‫אנחנו ניגע בו בקטנה בהקשר של‬


‫פייתון‪.‬‬

‫כאשר אנחנו רוצים לבדוק שני תנאים‪.‬‬


‫אנחנו צריכים להחליט האם שניהם‬
‫צריכים להתקיים כדי שהתוצאה תהיה‬
‫אמת או שמספיק לנו שרק אחד מהם‬
‫מתקיים כדי שהתוצאה תהיה אמת‪.‬‬

‫שיעור ‪ :3‬פונקציות בסיסי‪ ,‬רשימות‪ ,‬הרכבת רשימות‪ ,‬פילטרים ועוד‬


‫‪AND GATE‬‬
‫השער ‪ AND‬מבטא את הדרישה ששני התנאים יתקיימו כדי שהתוצאה‬
‫תהיה ‪ .True‬בכל מצב אחר‪ ,‬התוצאה תהיה ‪False‬‬

‫שיעור ‪ :3‬פונקציות בסיסי‪ ,‬רשימות‪ ,‬הרכבת רשימות‪ ,‬פילטרים ועוד‬


AND GATE

num = int(input(“Please enter a number: “))

if (num > 15) and (num < 20):

print (“The number is - “, num)

‫ פילטרים ועוד‬,‫ הרכבת רשימות‬,‫ רשימות‬,‫ פונקציות בסיסי‬:3 ‫שיעור‬


‫‪OR GATE‬‬
‫השער ‪ OR‬מבטא את הדרישה שלפחות אחד משני התנאים יתקיים כדי‬
‫שהתוצאה תהיה ‪ .True‬רק אם שני התנאים לא מתקיימים‪ ,‬התוצאה תהיה‬
‫‪False‬‬

‫שיעור ‪ :3‬פונקציות בסיסי‪ ,‬רשימות‪ ,‬הרכבת רשימות‪ ,‬פילטרים ועוד‬


OR GATE

num = int(input(“Please enter a number: “))

if (num < 5) or (num > 15):

print (“The number is - “, num)

‫ פילטרים ועוד‬,‫ הרכבת רשימות‬,‫ רשימות‬,‫ פונקציות בסיסי‬:3 ‫שיעור‬


NOT GATE

num = int(input(“Please enter a number: “))

if not num == 7:

print (“The number is - “, num)

‫ פילטרים ועוד‬,‫ הרכבת רשימות‬,‫ רשימות‬,‫ פונקציות בסיסי‬:3 ‫שיעור‬


‫כתיבה מפורשת שווה לכתיבה עם סימנים‬

‫פייתון מאפשרת את השימוש ב‪ or, and, not‬בצורה המפורשת‬

‫או באמצעות הסימנים המוכרים‪.‬‬

‫‪a and b == a & b‬‬

‫‪a or b == a | b‬‬

‫=! == ‪not‬‬
‫שיעור ‪ :3‬פונקציות בסיסי‪ ,‬רשימות‪ ,‬הרכבת רשימות‪ ,‬פילטרים ועוד‬
OR‫השמה מרובה ושימוש ב‬

string1, string2, string3 = '', 'Ron', 'Gal'

non_null = string1 or string2 or string3

print(non_null) Output:

‘Ron’

‫ פילטרים ועוד‬,‫ הרכבת רשימות‬,‫ רשימות‬,‫ פונקציות בסיסי‬:3 ‫שיעור‬


IF ‫כתיבה מקוצרת של תנאי‬

• employee_bonus = 1000 if sales > 5,000,000 else 0

• age = 15

print('kid' if age < 13 else 'teenager' if age < 18 else

'adult') Output:
teenager

‫ פילטרים ועוד‬,‫ הרכבת רשימות‬,‫ רשימות‬,‫ פונקציות בסיסי‬:3 ‫שיעור‬


‫השוואת רשימות‬
‫השוואת רשימות מתבצעת אובייקט מול אובייקט משתי‬
‫הרשימות‪.‬‬
‫אם אין הכרעה‪ ,‬ממשיכים לאובייקט הבא‪.‬‬
‫אם יש הכרעה‪ ,‬עוצרים‪.‬‬

‫שיעור ‪ :3‬פונקציות בסיסי‪ ,‬רשימות‪ ,‬הרכבת רשימות‪ ,‬פילטרים ועוד‬


‫‪MORE ON CONDITIONS‬‬

‫שיעור ‪ :3‬פונקציות בסיסי‪ ,‬רשימות‪ ,‬הרכבת רשימות‪ ,‬פילטרים ועוד‬


‫מיפוי רשימות‬
‫נניח שאנו רוצים לייצר רשימה ובה ריבועי המספרים מ‪ 0‬עד ‪.9‬‬
‫דרך אפשרית אחת היא כדלהלן‪ ,‬בלולאה עם אינדקס ‪ x‬מ‪ 0-‬עד ‪ 9‬בצע‬
‫‪ append‬ל‪.x*x‬‬

‫שיעור ‪ :3‬פונקציות בסיסי‪ ,‬רשימות‪ ,‬הרכבת רשימות‪ ,‬פילטרים ועוד‬


‫‪LIST COMPREHENSIONS‬‬
‫דרך אחרת תהיה באמצעות הכללות רשימה ) ‪List‬‬
‫‪.(Comprehensions‬‬
‫הכללות רשימה )‪ (List Comprehensions‬מספקות דרך תמציתית‬
‫ליצירת רשימות‪ .‬יישומים נפוצים הם יצור רשימות חדשות אשר‬
‫בהם כל אלמנט הוא תוצאה של פעולה מוגדרת‪.‬‬
‫דוגמא ליצור רשימה ובה החזקות מ ‪ 0‬עד ‪ 9‬ע"י ‪List‬‬
‫‪.Comprehensions‬‬

‫שיעור ‪ :3‬פונקציות בסיסי‪ ,‬רשימות‪ ,‬הרכבת רשימות‪ ,‬פילטרים ועוד‬


‫ דרכים ליצור את אותו דבר‬2

1. h_letters = []
for letter in 'human’:
Output:
h_letters.append(letter)
[‘h’,’u’,’m’,’a’,’n’]
print(h_letters)

2. h_letters = [ letter for letter in 'human’ ]


print( h_letters)

‫ פילטרים ועוד‬,‫ הרכבת רשימות‬,‫ רשימות‬,‫ פונקציות בסיסי‬:3 ‫שיעור‬


‫‪List Comprehensions‬‬
‫מגוון האופציות ל‪ List Comprehensions‬הוא עצום‪ ,‬נראה מספר דוגמאות נוספות‪:‬‬

‫שיעור ‪ :3‬פונקציות בסיסי‪ ,‬רשימות‪ ,‬הרכבת רשימות‪ ,‬פילטרים ועוד‬


DOUBLE IF

num_list = [y for y in range(100)

if y % 2 == 0 if y % 5 == 0]

print(num_list)

Output:

[0,10,20,30,40,50,60,70,80,90]

‫ פילטרים ועוד‬,‫ הרכבת רשימות‬,‫ רשימות‬,‫ פונקציות בסיסי‬:3 ‫שיעור‬


‫לסיכום‪LIST COMPREHENSIONS ,‬‬

‫• ‪ List Comprehensions‬היא דרך אלגנטית להגדיר וליצור‬


‫רשימות המבוססות על רשימות קיימות‪.‬‬

‫• יצירת רשימה ע"י ‪ List Comprehensions‬היא בדרך כלל‬


‫קומפקטית ומהירה מפונקציות או מלולאות רגילות‪.‬‬

‫שיעור ‪ :3‬פונקציות בסיסי‪ ,‬רשימות‪ ,‬הרכבת רשימות‪ ,‬פילטרים ועוד‬


‫לסיכום‪LIST COMPREHENSIONS ,‬‬

‫• עם זאת‪ ,‬עלינו להימנע מכתיבת ‪ List Comprehension‬ארוכה‬

‫מאוד בשורה אחת כדי להבטיח שהקוד יהיה ידידותי‬

‫למשתמש‪.‬‬

‫• כל ‪ List Comprehensions‬אפשר להמיר ללולאה‪ ,‬אבל לא כל‬

‫לולאה ניתן לכתוב בצורה של ‪.List Comprehensions‬‬

‫שיעור ‪ :3‬פונקציות בסיסי‪ ,‬רשימות‪ ,‬הרכבת רשימות‪ ,‬פילטרים ועוד‬

You might also like