Python trả về TypeError

Để có thể mô tả các loại tình huống xảy ra lỗi cú pháp, lỗi thụt lề, lỗi tên, lỗi chỉ mục và lỗi tệp bị thiếu

Mọi lập trình viên đều gặp phải lỗi, cả những người mới bắt đầu và những người đã lập trình trong nhiều năm. Đôi khi gặp lỗi và ngoại lệ có thể rất khó chịu và có thể khiến việc viết mã giống như một nỗ lực vô vọng. Tuy nhiên, hiểu được các loại lỗi khác nhau là gì và khi nào bạn có thể gặp phải chúng có thể giúp ích rất nhiều. Khi bạn biết lý do tại sao bạn gặp phải một số loại lỗi nhất định, chúng sẽ trở nên dễ sửa hơn nhiều

Lỗi trong Python có một dạng rất cụ thể, được gọi là. Hãy kiểm tra một

# This code has an intentional error. You can type it directly or
# use it for reference to understand the error message below.
def favorite_ice_cream[]:
    ice_creams = [
        "chocolate",
        "vanilla",
        "strawberry"
    ]
    print[ice_creams[3]]

favorite_ice_cream[]

---------------------------------------------------------------------------
IndexError                                Traceback [most recent call last]
 in []
      6     print[ice_creams[3]]
      7
----> 8 favorite_ice_cream[]

 in favorite_ice_cream[]
      4         "vanilla",                                                                    "strawberry"
      5     ]
----> 6     print[ice_creams[3]]
      7
      8 favorite_ice_cream[]

IndexError: list index out of range

Tracback cụ thể này có hai cấp độ. Bạn có thể xác định số cấp độ bằng cách tìm số mũi tên ở phía bên tay trái. Trong trường hợp này

  1. Đầu tiên hiển thị mã từ ô bên trên, với một mũi tên chỉ đến Dòng 8 [là

      File "", line 1
        def some_function[]
                           ^
    SyntaxError: invalid syntax
    
    1]

  2. Dòng thứ hai hiển thị một số mã trong hàm

      File "", line 1
        def some_function[]
                           ^
    SyntaxError: invalid syntax
    
    2, với một mũi tên chỉ đến Dòng 6 [là
      File "", line 1
        def some_function[]
                           ^
    SyntaxError: invalid syntax
    
    3]

Cấp độ cuối cùng là nơi thực sự xảy ra lỗi. [Các] cấp độ khác cho biết chương trình đã thực hiện chức năng nào để xuống cấp độ tiếp theo. Vì vậy, trong trường hợp này, trước tiên chương trình thực hiện một hàm

  File "", line 1
    def some_function[]
                       ^
SyntaxError: invalid syntax
2. Bên trong chức năng này, chương trình đã gặp lỗi ở Dòng 6, khi nó cố chạy mã
  File "", line 1
    def some_function[]
                       ^
SyntaxError: invalid syntax
3

Tracbacks dài

Đôi khi, bạn có thể thấy một truy nguyên rất dài – đôi khi chúng thậm chí có thể sâu tới 20 cấp độ. Điều này có thể làm cho nó giống như một điều gì đó khủng khiếp đã xảy ra, nhưng thực sự nó chỉ có nghĩa là chương trình của bạn đã gọi nhiều chức năng trước khi gặp lỗi. Hầu hết thời gian, bạn chỉ có thể chú ý đến mức thấp nhất, đó là nơi thực sự xảy ra lỗi

Vậy thực sự chương trình đã gặp phải lỗi gì?

Nếu bạn gặp lỗi và không biết nó có nghĩa là gì, điều quan trọng vẫn là đọc kỹ phần truy nguyên. Bằng cách đó, nếu bạn sửa lỗi nhưng gặp một lỗi mới, bạn có thể biết rằng lỗi đã thay đổi. Ngoài ra, đôi khi chỉ cần biết lỗi xảy ra ở đâu là đủ để sửa lỗi, ngay cả khi bạn không hoàn toàn hiểu thông báo

Nếu bạn gặp lỗi mà bạn không nhận ra, hãy thử xem tài liệu chính thức về lỗi. Tuy nhiên, lưu ý rằng không phải lúc nào bạn cũng có thể tìm thấy lỗi ở đó, vì có thể tạo lỗi tùy chỉnh. Trong trường hợp đó, hy vọng thông báo lỗi tùy chỉnh đủ thông tin để giúp bạn tìm ra lỗi đã xảy ra

Lỗi cú pháp

Khi bạn quên dấu hai chấm ở cuối dòng, vô tình thêm quá nhiều khoảng trắng khi thụt vào dưới câu lệnh

  File "", line 1
    def some_function[]
                       ^
SyntaxError: invalid syntax
7 hoặc quên dấu ngoặc đơn, bạn sẽ gặp phải. Điều này có nghĩa là Python không thể tìm ra cách đọc chương trình của bạn. Điều này tương tự như quên dấu câu trong tiếng Anh. ví dụ: văn bản này rất khó đọc, không có dấu chấm câu, cũng không có cách viết hoa, tại sao lại khó như vậy bởi vì bạn phải tìm ra vị trí kết thúc của mỗi câu, bạn cũng phải tìm ra vị trí bắt đầu của mỗi câu ở một mức độ nào đó, nó có thể không rõ ràng nếu có nên ngắt câu hay không

Mọi người thường có thể tìm ra ý nghĩa của văn bản mà không có dấu chấm câu, nhưng mọi người thông minh hơn nhiều so với máy tính. Nếu Python không biết cách đọc chương trình, nó sẽ bỏ cuộc và báo lỗi cho bạn. Ví dụ

def some_function[]
    msg = "hello, world!"
    print[msg]
     return msg

  File "", line 1
    def some_function[]
                       ^
SyntaxError: invalid syntax

Ở đây, Python cho chúng ta biết rằng có một

  File "", line 1
    def some_function[]
                       ^
SyntaxError: invalid syntax
8 trên dòng 1, và thậm chí còn đặt một mũi tên nhỏ ở nơi có vấn đề. Trong trường hợp này, vấn đề là định nghĩa hàm bị thiếu dấu hai chấm ở cuối

Trên thực tế, chức năng trên có hai vấn đề với cú pháp. Nếu chúng tôi khắc phục sự cố với dấu hai chấm, chúng tôi sẽ thấy rằng cũng có một

  File "", line 1
    def some_function[]
                       ^
SyntaxError: invalid syntax
9, có nghĩa là các dòng trong định nghĩa hàm không phải tất cả đều có cùng một vết lõm

---------------------------------------------------------------------------
IndexError                                Traceback [most recent call last]
 in []
      6     print[ice_creams[3]]
      7
----> 8 favorite_ice_cream[]

 in favorite_ice_cream[]
      4         "vanilla",                                                                    "strawberry"
      5     ]
----> 6     print[ice_creams[3]]
      7
      8 favorite_ice_cream[]

IndexError: list index out of range
3

---------------------------------------------------------------------------
IndexError                                Traceback [most recent call last]
 in []
      6     print[ice_creams[3]]
      7
----> 8 favorite_ice_cream[]

 in favorite_ice_cream[]
      4         "vanilla",                                                                    "strawberry"
      5     ]
----> 6     print[ice_creams[3]]
      7
      8 favorite_ice_cream[]

IndexError: list index out of range
4

Cả

  File "", line 1
    def some_function[]
                       ^
SyntaxError: invalid syntax
8 và
  File "", line 1
    def some_function[]
                       ^
SyntaxError: invalid syntax
9 đều cho biết có vấn đề với cú pháp chương trình của bạn, nhưng
  File "", line 1
    def some_function[]
                       ^
SyntaxError: invalid syntax
9 cụ thể hơn. điều đó luôn có nghĩa là có vấn đề với cách mã của bạn được thụt vào

Tab và không gian

Một số lỗi thụt lề khó phát hiện hơn những lỗi khác. Đặc biệt, việc trộn lẫn khoảng cách và tab có thể khó phát hiện vì cả hai đều. Trong ví dụ dưới đây, hai dòng đầu tiên trong nội dung của hàm

---------------------------------------------------------------------------
IndexError                                Traceback [most recent call last]
 in []
      6     print[ice_creams[3]]
      7
----> 8 favorite_ice_cream[]

 in favorite_ice_cream[]
      4         "vanilla",                                                                    "strawberry"
      5     ]
----> 6     print[ice_creams[3]]
      7
      8 favorite_ice_cream[]

IndexError: list index out of range
33 được thụt lề bằng các tab, trong khi dòng thứ ba — có dấu cách. Nếu bạn đang làm việc trên sổ ghi chép Jupyter, hãy nhớ sao chép và dán ví dụ này thay vì cố gắng nhập thủ công vì Jupyter tự động thay thế các tab bằng dấu cách

---------------------------------------------------------------------------
IndexError                                Traceback [most recent call last]
 in []
      6     print[ice_creams[3]]
      7
----> 8 favorite_ice_cream[]

 in favorite_ice_cream[]
      4         "vanilla",                                                                    "strawberry"
      5     ]
----> 6     print[ice_creams[3]]
      7
      8 favorite_ice_cream[]

IndexError: list index out of range
9

Trực quan không thể phát hiện ra lỗi. May mắn thay, Python không cho phép bạn trộn lẫn các tab và dấu cách

  File "", line 1
    def some_function[]
                       ^
SyntaxError: invalid syntax
0

Lỗi tên biến

Một loại lỗi rất phổ biến khác được gọi là

---------------------------------------------------------------------------
IndexError                                Traceback [most recent call last]
 in []
      6     print[ice_creams[3]]
      7
----> 8 favorite_ice_cream[]

 in favorite_ice_cream[]
      4         "vanilla",                                                                    "strawberry"
      5     ]
----> 6     print[ice_creams[3]]
      7
      8 favorite_ice_cream[]

IndexError: list index out of range
34 và xảy ra khi bạn cố gắng sử dụng một biến không tồn tại. Ví dụ

  File "", line 1
    def some_function[]
                       ^
SyntaxError: invalid syntax
2

  File "", line 1
    def some_function[]
                       ^
SyntaxError: invalid syntax
3

Lỗi tên biến đi kèm với một số thông báo lỗi thông tin nhất, thường có dạng "tên 'tên_biến' không được xác định"

Tại sao thông báo lỗi này xảy ra? . Tuy nhiên, có một vài lý do rất phổ biến khiến bạn có thể có một biến không xác định. Đầu tiên là bạn muốn sử dụng a , nhưng quên đặt dấu ngoặc kép xung quanh nó

---------------------------------------------------------------------------
IndexError                                Traceback [most recent call last]
 in []
      6     print[ice_creams[3]]
      7
----> 8 favorite_ice_cream[]

 in favorite_ice_cream[]
      4         "vanilla",                                                                    "strawberry"
      5     ]
----> 6     print[ice_creams[3]]
      7
      8 favorite_ice_cream[]

IndexError: list index out of range
0

---------------------------------------------------------------------------
IndexError                                Traceback [most recent call last]
 in []
      6     print[ice_creams[3]]
      7
----> 8 favorite_ice_cream[]

 in favorite_ice_cream[]
      4         "vanilla",                                                                    "strawberry"
      5     ]
----> 6     print[ice_creams[3]]
      7
      8 favorite_ice_cream[]

IndexError: list index out of range
1

Thứ hai là bạn quên tạo biến trước khi sử dụng nó. Trong ví dụ sau, lẽ ra

---------------------------------------------------------------------------
IndexError                                Traceback [most recent call last]
 in []
      6     print[ice_creams[3]]
      7
----> 8 favorite_ice_cream[]

 in favorite_ice_cream[]
      4         "vanilla",                                                                    "strawberry"
      5     ]
----> 6     print[ice_creams[3]]
      7
      8 favorite_ice_cream[]

IndexError: list index out of range
35 phải được xác định [e. g. , với
---------------------------------------------------------------------------
IndexError                                Traceback [most recent call last]
 in []
      6     print[ice_creams[3]]
      7
----> 8 favorite_ice_cream[]

 in favorite_ice_cream[]
      4         "vanilla",                                                                    "strawberry"
      5     ]
----> 6     print[ice_creams[3]]
      7
      8 favorite_ice_cream[]

IndexError: list index out of range
36] trước vòng lặp for

---------------------------------------------------------------------------
IndexError                                Traceback [most recent call last]
 in []
      6     print[ice_creams[3]]
      7
----> 8 favorite_ice_cream[]

 in favorite_ice_cream[]
      4         "vanilla",                                                                    "strawberry"
      5     ]
----> 6     print[ice_creams[3]]
      7
      8 favorite_ice_cream[]

IndexError: list index out of range
2

---------------------------------------------------------------------------
IndexError                                Traceback [most recent call last]
 in []
      6     print[ice_creams[3]]
      7
----> 8 favorite_ice_cream[]

 in favorite_ice_cream[]
      4         "vanilla",                                                                    "strawberry"
      5     ]
----> 6     print[ice_creams[3]]
      7
      8 favorite_ice_cream[]

IndexError: list index out of range
3

Cuối cùng, khả năng thứ ba là bạn đã mắc lỗi đánh máy khi viết mã. Giả sử chúng ta đã sửa lỗi ở trên bằng cách thêm dòng

---------------------------------------------------------------------------
IndexError                                Traceback [most recent call last]
 in []
      6     print[ice_creams[3]]
      7
----> 8 favorite_ice_cream[]

 in favorite_ice_cream[]
      4         "vanilla",                                                                    "strawberry"
      5     ]
----> 6     print[ice_creams[3]]
      7
      8 favorite_ice_cream[]

IndexError: list index out of range
37 trước vòng lặp for. Bực bội, điều này thực sự không sửa lỗi. Hãy nhớ rằng các biến là , vì vậy biến
---------------------------------------------------------------------------
IndexError                                Traceback [most recent call last]
 in []
      6     print[ice_creams[3]]
      7
----> 8 favorite_ice_cream[]

 in favorite_ice_cream[]
      4         "vanilla",                                                                    "strawberry"
      5     ]
----> 6     print[ice_creams[3]]
      7
      8 favorite_ice_cream[]

IndexError: list index out of range
35 khác với biến
---------------------------------------------------------------------------
IndexError                                Traceback [most recent call last]
 in []
      6     print[ice_creams[3]]
      7
----> 8 favorite_ice_cream[]

 in favorite_ice_cream[]
      4         "vanilla",                                                                    "strawberry"
      5     ]
----> 6     print[ice_creams[3]]
      7
      8 favorite_ice_cream[]

IndexError: list index out of range
39. Chúng tôi vẫn gặp lỗi tương tự vì chúng tôi vẫn chưa xác định
---------------------------------------------------------------------------
IndexError                                Traceback [most recent call last]
 in []
      6     print[ice_creams[3]]
      7
----> 8 favorite_ice_cream[]

 in favorite_ice_cream[]
      4         "vanilla",                                                                    "strawberry"
      5     ]
----> 6     print[ice_creams[3]]
      7
      8 favorite_ice_cream[]

IndexError: list index out of range
35

---------------------------------------------------------------------------
IndexError                                Traceback [most recent call last]
 in []
      6     print[ice_creams[3]]
      7
----> 8 favorite_ice_cream[]

 in favorite_ice_cream[]
      4         "vanilla",                                                                    "strawberry"
      5     ]
----> 6     print[ice_creams[3]]
      7
      8 favorite_ice_cream[]

IndexError: list index out of range
4

---------------------------------------------------------------------------
IndexError                                Traceback [most recent call last]
 in []
      6     print[ice_creams[3]]
      7
----> 8 favorite_ice_cream[]

 in favorite_ice_cream[]
      4         "vanilla",                                                                    "strawberry"
      5     ]
----> 6     print[ice_creams[3]]
      7
      8 favorite_ice_cream[]

IndexError: list index out of range
5

Lỗi chỉ mục

Tiếp theo là các lỗi liên quan đến vùng chứa [như danh sách và chuỗi] và các mục bên trong chúng. Nếu bạn cố truy cập một mục trong danh sách hoặc một chuỗi không tồn tại, thì bạn sẽ gặp lỗi. Điều này thật ý nghĩa. nếu bạn hỏi ai đó họ muốn uống cà phê vào ngày nào và họ trả lời là “thứ bảy”, bạn có thể hơi khó chịu. Python cũng khó chịu tương tự nếu bạn cố hỏi nó về một mục không tồn tại

---------------------------------------------------------------------------
IndexError                                Traceback [most recent call last]
 in []
      6     print[ice_creams[3]]
      7
----> 8 favorite_ice_cream[]

 in favorite_ice_cream[]
      4         "vanilla",                                                                    "strawberry"
      5     ]
----> 6     print[ice_creams[3]]
      7
      8 favorite_ice_cream[]

IndexError: list index out of range
6

---------------------------------------------------------------------------
IndexError                                Traceback [most recent call last]
 in []
      6     print[ice_creams[3]]
      7
----> 8 favorite_ice_cream[]

 in favorite_ice_cream[]
      4         "vanilla",                                                                    "strawberry"
      5     ]
----> 6     print[ice_creams[3]]
      7
      8 favorite_ice_cream[]

IndexError: list index out of range
7

---------------------------------------------------------------------------
IndexError                                Traceback [most recent call last]
 in []
      6     print[ice_creams[3]]
      7
----> 8 favorite_ice_cream[]

 in favorite_ice_cream[]
      4         "vanilla",                                                                    "strawberry"
      5     ]
----> 6     print[ice_creams[3]]
      7
      8 favorite_ice_cream[]

IndexError: list index out of range
8

Ở đây, Python đang nói với chúng ta rằng có một

  File "", line 1
    def some_function[]
                       ^
SyntaxError: invalid syntax
6 trong mã của chúng ta, nghĩa là chúng ta đã cố truy cập vào một chỉ mục danh sách không tồn tại

Lỗi tệp

Loại lỗi cuối cùng chúng tôi sẽ đề cập hôm nay là những lỗi liên quan đến việc đọc và ghi tệp.

---------------------------------------------------------------------------
IndexError                                Traceback [most recent call last]
 in []
      6     print[ice_creams[3]]
      7
----> 8 favorite_ice_cream[]

 in favorite_ice_cream[]
      4         "vanilla",                                                                    "strawberry"
      5     ]
----> 6     print[ice_creams[3]]
      7
      8 favorite_ice_cream[]

IndexError: list index out of range
42. Nếu bạn cố đọc một tệp không tồn tại, bạn sẽ nhận được thông báo
---------------------------------------------------------------------------
IndexError                                Traceback [most recent call last]
 in []
      6     print[ice_creams[3]]
      7
----> 8 favorite_ice_cream[]

 in favorite_ice_cream[]
      4         "vanilla",                                                                    "strawberry"
      5     ]
----> 6     print[ice_creams[3]]
      7
      8 favorite_ice_cream[]

IndexError: list index out of range
42 cho bạn biết như vậy. Nếu bạn cố gắng ghi vào một tệp đã được mở ở chế độ chỉ đọc, Python 3 sẽ trả về
---------------------------------------------------------------------------
IndexError                                Traceback [most recent call last]
 in []
      6     print[ice_creams[3]]
      7
----> 8 favorite_ice_cream[]

 in favorite_ice_cream[]
      4         "vanilla",                                                                    "strawberry"
      5     ]
----> 6     print[ice_creams[3]]
      7
      8 favorite_ice_cream[]

IndexError: list index out of range
44. Tổng quát hơn, các sự cố với đầu vào và đầu ra biểu hiện dưới dạng
---------------------------------------------------------------------------
IndexError                                Traceback [most recent call last]
 in []
      6     print[ice_creams[3]]
      7
----> 8 favorite_ice_cream[]

 in favorite_ice_cream[]
      4         "vanilla",                                                                    "strawberry"
      5     ]
----> 6     print[ice_creams[3]]
      7
      8 favorite_ice_cream[]

IndexError: list index out of range
45 hoặc
---------------------------------------------------------------------------
IndexError                                Traceback [most recent call last]
 in []
      6     print[ice_creams[3]]
      7
----> 8 favorite_ice_cream[]

 in favorite_ice_cream[]
      4         "vanilla",                                                                    "strawberry"
      5     ]
----> 6     print[ice_creams[3]]
      7
      8 favorite_ice_cream[]

IndexError: list index out of range
46, tùy thuộc vào phiên bản Python bạn sử dụng

---------------------------------------------------------------------------
IndexError                                Traceback [most recent call last]
 in []
      6     print[ice_creams[3]]
      7
----> 8 favorite_ice_cream[]

 in favorite_ice_cream[]
      4         "vanilla",                                                                    "strawberry"
      5     ]
----> 6     print[ice_creams[3]]
      7
      8 favorite_ice_cream[]

IndexError: list index out of range
9

def some_function[]
    msg = "hello, world!"
    print[msg]
     return msg
0

Một lý do khiến bạn nhận được lỗi này là do bạn đã chỉ định đường dẫn đến tệp không chính xác. Ví dụ: nếu tôi hiện đang ở trong một thư mục có tên là

---------------------------------------------------------------------------
IndexError                                Traceback [most recent call last]
 in []
      6     print[ice_creams[3]]
      7
----> 8 favorite_ice_cream[]

 in favorite_ice_cream[]
      4         "vanilla",                                                                    "strawberry"
      5     ]
----> 6     print[ice_creams[3]]
      7
      8 favorite_ice_cream[]

IndexError: list index out of range
47 và tôi có một tệp trong
---------------------------------------------------------------------------
IndexError                                Traceback [most recent call last]
 in []
      6     print[ice_creams[3]]
      7
----> 8 favorite_ice_cream[]

 in favorite_ice_cream[]
      4         "vanilla",                                                                    "strawberry"
      5     ]
----> 6     print[ice_creams[3]]
      7
      8 favorite_ice_cream[]

IndexError: list index out of range
48, nhưng tôi cố gắng chỉ mở
---------------------------------------------------------------------------
IndexError                                Traceback [most recent call last]
 in []
      6     print[ice_creams[3]]
      7
----> 8 favorite_ice_cream[]

 in favorite_ice_cream[]
      4         "vanilla",                                                                    "strawberry"
      5     ]
----> 6     print[ice_creams[3]]
      7
      8 favorite_ice_cream[]

IndexError: list index out of range
49, thao tác này sẽ không thành công. Đường dẫn chính xác sẽ là
---------------------------------------------------------------------------
IndexError                                Traceback [most recent call last]
 in []
      6     print[ice_creams[3]]
      7
----> 8 favorite_ice_cream[]

 in favorite_ice_cream[]
      4         "vanilla",                                                                    "strawberry"
      5     ]
----> 6     print[ice_creams[3]]
      7
      8 favorite_ice_cream[]

IndexError: list index out of range
90. Cũng có thể [như với
---------------------------------------------------------------------------
IndexError                                Traceback [most recent call last]
 in []
      6     print[ice_creams[3]]
      7
----> 8 favorite_ice_cream[]

 in favorite_ice_cream[]
      4         "vanilla",                                                                    "strawberry"
      5     ]
----> 6     print[ice_creams[3]]
      7
      8 favorite_ice_cream[]

IndexError: list index out of range
34] bạn vừa mắc lỗi đánh máy

Có thể xảy ra sự cố liên quan nếu bạn sử dụng cờ "đọc" thay vì cờ "ghi". Python sẽ không báo lỗi cho bạn nếu bạn cố mở tệp để ghi khi tệp không tồn tại. Tuy nhiên, nếu bạn định mở một tệp để đọc, nhưng lại vô tình mở tệp đó để ghi và sau đó cố gắng đọc từ tệp đó, bạn sẽ gặp lỗi

---------------------------------------------------------------------------
IndexError                                Traceback [most recent call last]
 in []
      6     print[ice_creams[3]]
      7
----> 8 favorite_ice_cream[]

 in favorite_ice_cream[]
      4         "vanilla",                                                                    "strawberry"
      5     ]
----> 6     print[ice_creams[3]]
      7
      8 favorite_ice_cream[]

IndexError: list index out of range
92 cho bạn biết rằng tệp không được mở để đọc

def some_function[]
    msg = "hello, world!"
    print[msg]
     return msg
1

def some_function[]
    msg = "hello, world!"
    print[msg]
     return msg
2

Đây là những lỗi phổ biến nhất với các tệp, mặc dù vẫn tồn tại nhiều lỗi khác. Nếu bạn gặp phải một lỗi mà bạn chưa từng thấy trước đây, thì việc tìm kiếm loại lỗi đó trên Internet thường cho biết những lý do phổ biến khiến bạn có thể gặp phải lỗi đó

Đọc thông báo lỗi

Đọc mã python và truy nguyên kết quả bên dưới và trả lời các câu hỏi sau

  1. Tracback có bao nhiêu cấp độ?
  2. Tên chức năng xảy ra lỗi là gì?
  3. Lỗi xảy ra ở dòng nào trong chức năng này?
  4. Loại lỗi là gì?
  5. Thông báo lỗi là gì?

def some_function[]
    msg = "hello, world!"
    print[msg]
     return msg
3

def some_function[]
    msg = "hello, world!"
    print[msg]
     return msg
4

Dung dịch

  1. 3 cấp độ
  2. ---------------------------------------------------------------------------
    IndexError                                Traceback [most recent call last]
     in []
          6     print[ice_creams[3]]
          7
    ----> 8 favorite_ice_cream[]
    
     in favorite_ice_cream[]
          4         "vanilla",                                                                    "strawberry"
          5     ]
    ----> 6     print[ice_creams[3]]
          7
          8 favorite_ice_cream[]
    
    IndexError: list index out of range
    
    93
  3. 11
  4. ---------------------------------------------------------------------------
    IndexError                                Traceback [most recent call last]
     in []
          6     print[ice_creams[3]]
          7
    ----> 8 favorite_ice_cream[]
    
     in favorite_ice_cream[]
          4         "vanilla",                                                                    "strawberry"
          5     ]
    ----> 6     print[ice_creams[3]]
          7
          8 favorite_ice_cream[]
    
    IndexError: list index out of range
    
    94
  5. Thực sự không có một thông điệp nào;

Xác định lỗi cú pháp

  1. Đọc mã bên dưới và [không chạy mã] cố gắng xác định lỗi là gì
  2. Chạy mã và đọc thông báo lỗi. Đó là một
      File "", line 1
        def some_function[]
                           ^
    SyntaxError: invalid syntax
    
    8 hay một
      File "", line 1
        def some_function[]
                           ^
    SyntaxError: invalid syntax
    
    9?
  3. Sửa lỗi
  4. Lặp lại bước 2 và 3 cho đến khi bạn sửa được tất cả các lỗi

def some_function[]
    msg = "hello, world!"
    print[msg]
     return msg
5

Dung dịch

  File "", line 1
    def some_function[]
                       ^
SyntaxError: invalid syntax
8 vì thiếu
  File "", line 1
    def some_function[]
                       ^
SyntaxError: invalid syntax
00 ở cuối dòng đầu tiên,
  File "", line 1
    def some_function[]
                       ^
SyntaxError: invalid syntax
9 vì không khớp giữa dòng thứ hai và thứ ba. Một phiên bản cố định là

def some_function[]
    msg = "hello, world!"
    print[msg]
     return msg
6

Xác định lỗi tên biến

  1. Đọc mã bên dưới và [không chạy mã] cố gắng xác định lỗi là gì
  2. Chạy mã và đọc thông báo lỗi. Bạn nghĩ đây là loại
    ---------------------------------------------------------------------------
    IndexError                                Traceback [most recent call last]
     in []
          6     print[ice_creams[3]]
          7
    ----> 8 favorite_ice_cream[]
    
     in favorite_ice_cream[]
          4         "vanilla",                                                                    "strawberry"
          5     ]
    ----> 6     print[ice_creams[3]]
          7
          8 favorite_ice_cream[]
    
    IndexError: list index out of range
    
    34 nào?
  3. Sửa lỗi
  4. Lặp lại bước 2 và 3 cho đến khi bạn sửa được tất cả các lỗi

def some_function[]
    msg = "hello, world!"
    print[msg]
     return msg
7

Dung dịch

3

---------------------------------------------------------------------------
IndexError                                Traceback [most recent call last]
 in []
      6     print[ice_creams[3]]
      7
----> 8 favorite_ice_cream[]

 in favorite_ice_cream[]
      4         "vanilla",                                                                    "strawberry"
      5     ]
----> 6     print[ice_creams[3]]
      7
      8 favorite_ice_cream[]

IndexError: list index out of range
34 cho
  File "", line 1
    def some_function[]
                       ^
SyntaxError: invalid syntax
04 bị sai chính tả, cho
  File "", line 1
    def some_function[]
                       ^
SyntaxError: invalid syntax
05 không được xác định và cho
  File "", line 1
    def some_function[]
                       ^
SyntaxError: invalid syntax
06 không nằm trong dấu ngoặc kép

Phiên bản cố định

def some_function[]
    msg = "hello, world!"
    print[msg]
     return msg
8

Xác định lỗi chỉ mục

  1. Đọc mã bên dưới và [không chạy mã] cố gắng xác định lỗi là gì
  2. Chạy mã và đọc thông báo lỗi. Đó là loại lỗi gì?
  3. Sửa lỗi

def some_function[]
    msg = "hello, world!"
    print[msg]
     return msg
9

Dung dịch

  File "", line 1
    def some_function[]
                       ^
SyntaxError: invalid syntax
6; . Một phiên bản cố định là

  File "", line 1
    def some_function[]
                       ^
SyntaxError: invalid syntax
0

Những điểm chính

  • Truy nguyên có thể trông đáng sợ, nhưng chúng cung cấp cho chúng tôi rất nhiều thông tin hữu ích về những gì đã xảy ra trong chương trình của chúng tôi, bao gồm lỗi xảy ra ở đâu và loại lỗi đó là gì

  • Một lỗi liên quan đến 'ngữ pháp' hoặc cú pháp của chương trình được gọi là

      File "", line 1
        def some_function[]
                           ^
    SyntaxError: invalid syntax
    
    8. Nếu vấn đề liên quan đến cách mã được thụt vào, thì nó sẽ được gọi là
      File "", line 1
        def some_function[]
                           ^
    SyntaxError: invalid syntax
    
    9

  • Một

    ---------------------------------------------------------------------------
    IndexError                                Traceback [most recent call last]
     in []
          6     print[ice_creams[3]]
          7
    ----> 8 favorite_ice_cream[]
    
     in favorite_ice_cream[]
          4         "vanilla",                                                                    "strawberry"
          5     ]
    ----> 6     print[ice_creams[3]]
          7
          8 favorite_ice_cream[]
    
    IndexError: list index out of range
    
    34 sẽ xảy ra nếu bạn sử dụng một biến chưa được xác định, vì bạn muốn sử dụng dấu ngoặc kép xung quanh một chuỗi, bạn quên xác định biến hoặc bạn vừa mắc lỗi đánh máy

  • Các vùng chứa như danh sách và chuỗi sẽ tạo ra lỗi nếu bạn cố truy cập các mục không tồn tại trong đó. Loại lỗi này được gọi là

      File "", line 1
        def some_function[]
                           ^
    SyntaxError: invalid syntax
    
    6

  • Cố gắng đọc một tệp không tồn tại sẽ cho bạn một

    ---------------------------------------------------------------------------
    IndexError                                Traceback [most recent call last]
     in []
          6     print[ice_creams[3]]
          7
    ----> 8 favorite_ice_cream[]
    
     in favorite_ice_cream[]
          4         "vanilla",                                                                    "strawberry"
          5     ]
    ----> 6     print[ice_creams[3]]
          7
          8 favorite_ice_cream[]
    
    IndexError: list index out of range
    
    42. Cố gắng đọc một tệp đang mở để ghi hoặc ghi vào một tệp đang mở để đọc sẽ cho bạn một
    ---------------------------------------------------------------------------
    IndexError                                Traceback [most recent call last]
     in []
          6     print[ice_creams[3]]
          7
    ----> 8 favorite_ice_cream[]
    
     in favorite_ice_cream[]
          4         "vanilla",                                                                    "strawberry"
          5     ]
    ----> 6     print[ice_creams[3]]
          7
          8 favorite_ice_cream[]
    
    IndexError: list index out of range
    
    45

    Làm cách nào để giải quyết TypeError trong Python?

    Cách sửa TypeError trong Python. Để tránh lỗi loại trong Python, cần kiểm tra loại đối tượng trước khi thực hiện thao tác . Điều này có thể giúp đảm bảo rằng loại đối tượng phù hợp với thao tác và liệu thao tác có được đối tượng hỗ trợ hay không.

    Bạn có thể trả lại lỗi bằng Python không?

    Để trả về lỗi từ hàm Python, không sử dụng các giá trị giả như trả về -1 hoặc trả về Không. Thay vào đó, hãy sử dụng từ khóa nâng cao chẳng hạn như nâng cao ValueError['tin nhắn của bạn'] . Lỗi sẽ "làm nổi bong bóng" ngăn xếp cho đến khi bị chặn bởi một khối thử/ngoại trừ.

    3 lỗi trong Python là gì?

    Có 3 loại lỗi cơ bản mà lập trình viên cần quan tâm. Lỗi cú pháp, lỗi thời gian chạy và Lỗi logic .

    Tại sao Python báo lỗi cho tôi?

    Lý do phổ biến nhất gây ra lỗi trong chương trình Python là khi một câu lệnh nhất định không phù hợp với cách sử dụng đã quy định . Lỗi như vậy được gọi là lỗi cú pháp. Trình thông dịch Python báo cáo ngay lập tức, thường kèm theo lý do. >>> in cú pháp "xin chào". Thiếu dấu ngoặc đơn trong lệnh gọi 'in'.

Chủ Đề