נושא
השגיאות שפגשנו
ארבע שגיאות, ומה כל אחת אומרת.
איך קוראים Traceback
- השורה האחרונה קודם. שם כתוב סוג השגיאה והסבר קצר
- מספר השורה אומר איפה פייתון נתקעה
- הסמן הקטן (
^) מצביע על המקום המדויק בשורה
המקום שפייתון נתקעה בו הוא לא תמיד המקום של הטעות. במרכאה שלא נסגרה, הטעות בהתחלה של השורה והגילוי בסופה.
הטבלה
| שגיאה | מה היא אומרת | איפה ראינו | התיקון |
|---|---|---|---|
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'?
בדיקה עצמית
איזו שגיאה תתקבל?
print("hello')"abc"[3]"3" + 3
תשובות. 1: SyntaxError. 2: IndexError, כי המיקום האחרון הוא 2.
3: TypeError, כי אי אפשר לשרשר מחרוזת ומספר.