מבנה תוכנית Python

בשעור זה נכיר את פייתון כשפת תכנות. נלמד לכתוב תוכניות פשוטות, להגדיר משתנים ולהשתמש בלולאות ומבני בקרה.

1. פקודות בסיסיות

תוכנית בפייתון היא פשוט רצף של פקודות הנכתבות בקובץ עם סיומת py. הפקודה print היא פקודת ההדפסה ומשתנים מוגדרים אוטומטית כשאנו מתחילים להשתמש בהם. הפעולות המתמטיות שאתם מכירים משפות אחרות יעבדו גם כאן. כך למשל התוכנית הבאה תדפיס סכום וממוצע של 3 מספרים:

x = 10
y = 15
z = 20

total = x + y + z
avg = total / 3

print("Sum is:", total)
print("Average is:", avg)

הפקודה print תדפיס את כל הפרמטרים שתעבירו אליה עם רווחים ביניהם ושאר הפקודות בתוכנית מגדירות משתנים ומבצעות פעולות עליהם. שימו לב שבפייתון איננו משתמשים בנקודה פסיק כדי לציין סוף שורה, ולכן תו ירידת השורה הוא בעל משמעות כאן. אפשר להשתמש בנקודה-פסיק כדי לרשום מספר פקודות באותה השורה, אבל אף אחד לא עושה את זה.

פקודת הקלט בפייתון היא input. הפקודה ממתינה למשתמש שיקליד מידע ולאחר לחיצה על Enter מחזירה את המידע שהוקלד לתוכנית. הפונקציה input מקבלת כפרמטר טקסט להציג למשתמש כדי שידע מה מצפים ממנו לכתוב. כך התוכנית הבאה תשאל את המשתמש לשמו ותדפיס ברכת שלום:

name = input("Who are you? ")

print(f"Hello! {name}, Nice to meet you")

הפעולה בשורה השניה שאתם רואים היא שתילת ערך בתוך מחרוזת (נקראת באנגלית String Interpolation). אפשר להתחיל מחרוזת בפייתון עם האות f ואז להשתמש בסוגריים מסולסלים ובתוכם קוד פייתון, ובאופן אוטומטי פייתון יפעיל את הקוד וישתול את התוצאה שלו במחרוזת במקום הסוגריים המסולסלים. כך בדוגמא שלנו הקוד הוא בסך הכל המשתנה name, ערך הביטוי הוא ערך המשתנה ולכן כל החלק {name} במחרוזת מוחלף בתוכן המשתנה.

בדוגמא הבאה אנו יכולים לראות שתילת שני ערכים בתוך מחרוזת, האחר מספר השני טקסט נוסף:

dollars = 10
cents = 2
things = "Snakes"
print(f"I have ${dollars} and {cents} cents. I can buy some {things}")

2. משתנים ומידע

נכתוב תוכנית שתקלוט מהמשתמש שלושה מספרים ותדפיס את סכומם. נסיון ראשון עשוי להיראות כך:

x = input()
y = input()

sum = x + y
print(f"{x} + {y} =", sum)

נסיון להריץ את התוכנית עם הקלטים 10 ו 20 יציג את התוצאה המפתיעה:

10 + 20 = 1020

פייתון יודע איזה סוג מידע נשמר בכל משתנה ומתאים את הפעולה לסוג המידע במשתנה. כך פעולת + על מספרים מחברת אותם ואותה הפעולה + על מחרוזות טקסט משרשרת את הטקסטים. הפקודה input מחזירה מחרוזות ולכן פעולת החיבור החזירה את התוצאה 1020. עד כה ראינו שני סוגי מידע שניתן לשמור במשתנים: מספרים שלמים ומחרוזות.

ניתן להמיר בין סוגי המשתנים באמצעות הפונקציות str, int ו float. הפונקציה str ממירה למחרוזת, int ממירה למספר שלם ו float ממירה למספר עם נקודה עשרונית. נתקן את התוכנית מתחילת הסעיף כך שתקלוט שני מספרים שלמים ותדפיס את סכומם:

print("Type in two numbers:")
x = int(input())
y = int(input())

print("The sum is: ", x+y)

פונקציות ההמרה זורקות שגיאה במידה וההמרה נכשלה. בהמשך נלמד כיצד לתפוס ולטפל בשגיאות אלו. נסו להכניס ערכים לא מספריים בשדה הקלט כדי לראות את השגיאה.

3. הזחה ורווחים ב Python

פייתון מייחס חשיבות עצומה לריווח נכון ותוכנית שהרווחים בה שגויים פשוט לא תרוץ. רווח בתחילת שורה ב Python מתחיל בלוק של קוד, כלומר מספר פקודות הקשורות אחת לשניה. בשיעורים הקרובים נלמד על for, while ו if שמשתמשות ביכולת זו וכקדימון אני רוצה להסביר בכמה מילים איך מנגנון הרווחים עובד.

פייתון צריך לדעת איזה שורות קשורות לפקודת הנקודותיים- לדוגמא הפקודה if גורמת להפעלת כל השורות ״הקשורות״ אליה, או הבלוק שלה, אם התנאי מתקיים.

הדרך לדעת היא הרווחים. בדרך כלל משתמשים ב-2 או 4 רווחים כדי לציין בלוק, ואז כל השורות שמתחילות באותו מספר רווחים נחשבות חלק מהבלוק. אפשר גם להשתמש ב Tab.

הנה למשל פקודת if:

if 2 < 5:
  print("I can see")
  print("you know math")

שתי פקודות ההדפסה יבוצעו יחד אם התנאי מתקיים (או לא יבוצעו יחד אם התנאי שקרי).

במצב של תנאי בתוך תנאי או לולאה בתוך תנאי אפשר להוסיף עוד רווחים כדי לציין בלוק פנימי, לדוגמא:

for x in range(10):
  print("Another Round...")
  if x % 2 == 0:
    print("I can see")
    print("you know math")

פקודת ההדפסה ופקודה ה if שייכות לבלוק של פקודת ה for ולכן יבוצעו 10 פעמים. שתי פקודות ה print אחרי ה if שייכות אליו ויבוצעו רק במידה והתנאי אמיתי. במקרה כזה שני רווחים מציינים שהפקודה ״שייכת״ ל for, ו-4 רווחים מציינים שהפקודה שייכת ל if.