פייתון

נושא

השגיאות שפגשנו

ארבע שגיאות, ומה כל אחת אומרת.

איך קוראים Traceback

  1. השורה האחרונה קודם. שם כתוב סוג השגיאה והסבר קצר
  2. מספר השורה אומר איפה פייתון נתקעה
  3. הסמן הקטן (^) מצביע על המקום המדויק בשורה

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

הטבלה

שגיאה מה היא אומרת איפה ראינו התיקון
SyntaxError הקוד לא בנוי לפי חוקי השפה 3.1: מרכאות לא תואמות, גרש באמצע לתקן את הכתיבה עצמה
TypeError פעולה על טיפוס שלא תומך בה 2.3: חזקה על קלט. 3.3: שינוי תו במחרוזת הסבה, או מחרוזת חדשה
IndexError מיקום שלא קיים 3.3: "joker"[5] לבדוק את האורך
NameError שם שלא הוגדר true באות קטנה לבדוק איות ואות גדולה

הדוגמאות

SyntaxError

>>> 'I really hope defining this string will work"
Traceback (most recent call last):
  ...
SyntaxError: unterminated string literal (detected at line 1)

בגרסאות ישנות הניסוח הוא EOL while scanning string literal, וזה מה שמופיע בסרטון. EOL הוא end of line.

TypeError

>>> "5" ** 2
Traceback (most recent call last):
  ...
TypeError: unsupported operand type(s) for ** or pow(): 'str' and 'int'
>>> "Change me"[0] = "S"
Traceback (most recent call last):
  ...
TypeError: 'str' object does not support item assignment

IndexError

>>> "joker"[5]
Traceback (most recent call last):
  ...
IndexError: string index out of range

NameError

>>> i_am_hungry = true
Traceback (most recent call last):
  ...
NameError: name 'true' is not defined. Did you mean: 'True'?

בדיקה עצמית

איזו שגיאה תתקבל?

  1. print("hello')
  2. "abc"[3]
  3. "3" + 3

תשובות. 1: SyntaxError. 2: IndexError, כי המיקום האחרון הוא 2. 3: TypeError, כי אי אפשר לשרשר מחרוזת ומספר.