ברוכים הבאים ליחידה הראשונה בקורס "תכנות וניתוח נתונים בשפת פייתון" (20606) – "יסודות פייתון". יחידה זו היא אבן הפינה להבנת השפה כולה, והיא תכסה את מבנה השפה הבסיסי, אופן הפעולה של משתנים, סוגי הנתונים העיקריים בפייתון ואת האופרטורים השונים המאפשרים לנו לבצע פעולות על נתונים אלו. הבנה מעמיקה של נושאים אלו חיונית לא רק לכתיבת קוד פונקציונלי, אלא גם לפתרון שאלות מעקב קוד (Code Tracing) ושאלות תיאורטיות במבחן.
מבנה השפה וביצוע קוד
פייתון היא שפה אינטרפרטטיבית (מפורשת), מה שאומר שהקוד נבדק ומבוצע שורה אחר שורה על ידי תוכנה ייעודית הנקראת מפרש (Interpreter). בניגוד לשפות מהודרות (Compiled languages), אין שלב הידור נפרד לפני ההרצה.
הכרות עם סביבת פייתון
ניתן להריץ קוד פייתון בשתי דרכים עיקריות: במצב אינטראקטיבי (Interactive Mode), בו כל פקודה מבוצעת מיד לאחר הקשתה, או על ידי שמירת הקוד בקובץ עם סיומת .py והרצתו באמצעות המפרש.
הערות (Comments)
הערות הן טקסט בקוד שאינו מבוצע על ידי המפרש. הן משמשות להסבר הקוד, תיעוד, או השבתה זמנית של קטעי קוד. בפייתון, הערה מתחילה בסימן # ונמשכת עד סוף השורה.
הצהרות וביטויים (Statements and Expressions)
קוד פייתון מורכב מהצהרות וביטויים. הבנת ההבדל ביניהם חשובה.
x = 5), הדפסה (print("Hello")), לולאה (for i in range(5):).5 + 3 (מעריך ל-8), "hello" + " world" (מעריך ל-"hello world"), x > 0 (מעריך ל-True או False).משתנים וסוגי נתונים בסיסיים
משתנים הם שמות שאנו נותנים למיקומי זיכרון המכילים נתונים. פייתון היא שפה עם טיפוסיות דינמית, כלומר אין צורך להצהיר על סוג המשתנה מראש.
הגדרת משתנים
משתנה מוגדר באמצעות אופרטור ההשמה =. לדוגמה: age = 30. שם המשתנה חייב להתחיל באות או בקו תחתון, ויכול להכיל אותיות, מספרים וקו תחתון.
סוגי נתונים בסיסיים
פייתון תומכת במספר סוגי נתונים בסיסיים.
מספרים שלמים (int)
מייצגים מספרים שלמים (חיוביים, שליליים ואפס) ללא נקודה עשרונית. לדוגמה: 10, -5, 0.
מספרים עשרוניים (float)
מייצגים מספרים ממשיים עם נקודה עשרונית. לדוגמה: 3.14, -0.5, 2.0.
מחרוזות (str)
רצף של תווים, מוקף במרכאות בודדות (') או כפולות ("). לדוגמה: "Hello", 'Python'.
ערכים בוליאניים (bool)
מייצגים ערכי אמת או שקר: True או False. משמשים בעיקר בבקרת זרימה וביטויים לוגיים.
המרה בין סוגי נתונים (Type Conversion)
לעיתים קרובות נצטרך להמיר נתון מסוג אחד לאחר. ניתן לעשות זאת במפורש באמצעות פונקציות כמו int(), float(), str(), bool(). לדוגמה: int("10") יחזיר את המספר השלם 10. המרה מרומזת (Implicit conversion) מתרחשת אוטומטית במקרים מסוימים, למשל כאשר מבצעים פעולה בין int ל-float, התוצאה תהיה float.
אופרטורים וביטויים
אופרטורים הם סימנים המבצעים פעולות על אופרנדים (הערכים שעליהם פועל האופרטור).
אופרטורים חשבוניים
+: חיבור-: חיסור*: כפל/: חילוק (תמיד מחזיר float)//: חילוק שלם (מחזיר את החלק השלם של המנה)%: מודולו (שארית החלוקה)**: חזקה
אופרטורי השוואה
אופרטורים אלו משווים בין שני ערכים ומחזירים ערך בוליאני (True או False).
==: שווה ל-!=: שונה מ-<: קטן מ->: גדול מ-<=: קטן או שווה ל->=: גדול או שווה ל-
אופרטורים לוגיים
משמשים לשילוב או שינוי ביטויים בוליאניים.
and: מחזירTrueאם שני האופרנדיםTrue.or: מחזירTrueאם לפחות אחד מהאופרנדיםTrue.not: הופך את הערך הבוליאני של האופרנד.
סדר קדימות (Precedence) וקיבוץ (Associativity)
סדר קדימות קובע איזה אופרטור יבוצע קודם בביטוי מורכב (לדוגמה, כפל לפני חיבור). קיבוץ קובע את סדר הביצוע כאשר ישנם אופרטורים בעלי אותה קדימות (לדוגמה, משמאל לימין). הבנה של כללים אלו קריטית למעקב קוד מדויק.
קלט/פלט בסיסי (Basic Input/Output)
אינטראקציה עם המשתמש היא חלק בלתי נפרד מכל תוכנית.
פונקציית print()
משמשת להצגת פלט למסך. ניתן להדפיס מספר ארגומנטים, והם יודפסו מופרדים ברווח כברירת מחדל. ניתן לשלוט על מפריד (sep) ועל התו בסוף ההדפסה (end).
פונקציית input()
משמשת לקבלת קלט מהמשתמש. חשוב לזכור שפונקציה זו תמיד מחזירה מחרוזת (str), גם אם המשתמש הזין מספר. אם יש צורך במספר, יש לבצע המרה מפורשת (לדוגמה, int(input())).
שאלות לדיון
- הסבירו את ההבדל בין הצהרה (Statement) לביטוי (Expression) בפייתון, ותנו דוגמה לכל אחד.
- מהי טיפוסיות דינמית בפייתון, ומדוע היא נחשבת יתרון וחיסרון כאחד? תנו דוגמה לשגיאה נפוצה הנובעת ממנה.
- נתון הביטוי:
result = 10 + 3 * 2 ** 2 - 1. מה יהיה ערכו שלresult? הסבירו את סדר הפעולות. - כיצד תשפיע פונקציית
input()על סוג הנתונים של קלט המשתמש, וכיצד נטפל בכך אם נרצה לבצע פעולות חשבוניות על הקלט?
נקודות לתשובת מודל
- הצהרה מול ביטוי: הצהרה מבצעת פעולה (למשל, השמה, הדפסה), ביטוי מעריך לערך. דוגמאות:
x = 5(הצהרה),5 + 3(ביטוי). - טיפוסיות דינמית: סוג המשתנה נקבע בזמן ריצה וניתן לשינוי. יתרון: גמישות ופחות קוד. חיסרון: פוטנציאל לשגיאות סוג בזמן ריצה. דוגמה לשגיאה:
"Hello" + 5. - מעקב ביטוי:
2 ** 2מעריך ל-4.3 * 4מעריך ל-12.10 + 12מעריך ל-22.22 - 1מעריך ל-21.
resultיהיה21. - פונקציית input(): תמיד מחזירה מחרוזת (
str). כדי לבצע פעולות חשבוניות, יש להמיר את הקלט למספר (לדוגמה,int()אוfloat()) באופן מפורש:num = int(input("הכנס מספר: ")).