Về bản chất, debug là việc phát hiện và sửa chữa lỗi trên máy tính. Khi chương trình không chạy như mong muốn, việc debug sẽ giúp chúng ta tìm ra nguyên nhân và khắc phục được lỗi đó. Hôm nay chúng ta sẽ tìm hiểu về một khái niệm quan trọng khi làm việc với máy tính, đó là “debug”. Sau đây Trường THPT Sài Gòn hướng dẫn dò lỗi (Debug) trong Python.
I.Cách đọc thông báo lỗi :
Traceback message trong Thonny khi chương trình bị lỗi
Traceback message là thông báo lỗi được hiển thị trong Python khi có lỗi xảy ra trong khi chạy chương trình. Thông báo bao gồm một loạt các dòng văn bản, thường mở đầu với “Traceback (most recent call last):” và kết thúc với một dòng mô tả lỗi cụ thể. Các dòng ở thông báo traceback luôn đi theo cặp với nhau. Dòng đầu tiên ở từng cặp có cấu trúc như sau:
File “<file name>”, line <number>, in <function>
File name: Tên file bị lỗi
Number: Số thứ tự dòng trong file xảy ra lỗi, hoặc số thứ tự dòng trong file chứa lần gọi hàm tiếp theo.
Function: vị trí của function trong dòng
Dòng thứ hai hiển thị chính xác đoạn code ở dòng xảy ra lỗi. Dòng cuối cùng trong traceback message sẽ cho biết tên lỗi còn thông tin chi tiết về lỗi sẽ có dạng như sau:
<error type>: <error message>
Error type: Thông báo lỗi đã được gây ra
Error message: Mô tả chi tiết hơn về lý do gây ra lỗi
Ở ví dụ trên, chương trình thực hiện tính diện tích hình chữ nhật (dia tich) theo cách tính tích của chiều dọc và chiều ngang (chieu dai * chieu rộng ) và đây là thông báo lỗi sau khi chạy chương trình
Trong trường hợp này, lỗi xảy ra khi chương trình cố gắng thực hiện phép tính toán trên biến ‘ chieu rong ’ đã không được định nghĩa trước đó (so với biến ‘ chieu dai ’ đã được định nghĩa trước đó ở dòng đầu tiên: chieu dai = 10). Dòng cuối cùng cho biết rằng kiểu lỗi là NameError và biến ‘ chieu rong ’ không được định nghĩa. Dòng trước cho biết lỗi xảy ra trong tệp “traceback-message.py” tại dòng số 2 trong hàm module.
Các loại lỗi
Dưới đây là một vàikiểu lỗi phổ biến trong Python mà mọi người haygặp:
1. SyntaxError: Lỗi cú pháp
Thường xảy ra khi bạn gõ sai cú pháp trong Python, chẳng hạn như quên đóng dấu ngoặc hoặc viết ký tự không đúng cú pháp.
Ví dụ:
Ở ví dụ trên chúng ta có một danh sách điểm số và muốn in toàn bộ điểm số ra giấy, khi chạy chúng ta thấy thông báo lỗi như sau:
Trong trường hợp này, lỗi xảy ra khi chúng ta gõ sai cú pháp khi quên thêm dấu phẩy phân cách giữa hai điểm số cuối cùng (10 và 9) khi tạo danh sách tại dòng 1. Sau khi thêm dấu phẩy bị mất, chương trình sẽ chạy bình thường như hình minh hoạ dưới đây:
IndentationError: Lỗi thụt đầu dòng không đúng cách
Trong Python, thụt đầu dòng cực kỳquan trọng vìđược dùng để xác định khối lệnh
Khi chạy chương trình này. chúng ta sẽ nhận lỗi như sau:
Trong trường hợp này, chúng ta quên thụt đầu dòng ở dòng số 3 của hàm for nên mắc lỗi Indentation Error.
IndexError: Lỗi chỉ mục
Khi bạn cố gắng truy cập một phần tử trong danh sách hoặc chuỗi vượt quá phạm vi chỉ mục.
Ví dụ: Khi chạy chương trình này. chúng ta sẽ nhận lỗi như sau:
Trong chương trình này, chúng ta muốn truy cập phần tử cuối cùng của danh sách có 5 phần tử, tuy nhiên chỉ mục của danh sách bắt đầu tử chỉ mục 0, nên chỉ mục của phần tử cuối cùng của danh sách có 5 phần tử là 4. Sau khi sửa lại chúng ta sẽ có chương trình chạy bình thường như sau:
TypeError: Lỗi kiểu dữ liệu
Khi bạn sử dụng sai kiểu dữ liệu hoặc không tương thích
- Ví dụ:
Trong ví dụ này, chúng ta có hai biến a và b và muốn tính tổng của a và b và in ra màn hình. Tuy nhiên khi chạy chương trình, chúng ta gặp lỗi như sau:
Thông báo lỗi cho chúng ta biết rằng hai kiểu biến ‘int’ và ‘str’ không tương thích cho phép tính cộng ‘+’. Vì vậy, để sửa lỗi này, chúng ta cần chuyển kiểu dữ liệu của biến b sang ‘int’ hoặc ‘float’ để tương thích với biến a:
NameError: Lỗi tên
Khi một biến hay tên hàm chưa được định nghĩa.
- Ví dụ: Tương tự ví dụ biến “chieu_rong” chưa được định nghĩa ở phần 1.