BÀI 29. NHẬN BIẾT LỖI CHƯƠNG TRÌNH
1. NHẬN BIẾT LỖI CHƯƠNG TRÌNH
Có ba loại lỗi chính thường gặp khi lập trình Python:
- Lỗi cú pháp (Syntax Error): Là lỗi do viết sai quy tắc ngôn ngữ (như sai chính tả, thiếu dấu câu...). Chương trình sẽ dừng ngay lập tức và báo lỗi SyntaxError.
- Lỗi ngoại lệ (Exceptions Error / Runtime Error): Là lỗi xảy ra khi chương trình đang chạy, gặp một lệnh không thể thực hiện được (như chia cho 0, nhập sai kiểu dữ liệu...). Chương trình dừng lại và báo mã lỗi cụ thể.
- Lỗi lôgic (Logical Error): Là lỗi khi chương trình chạy bình thường, không báo lỗi gì cả, nhưng kết quả đưa ra lại sai so với yêu cầu. Đây là lỗi do người lập trình tính toán sai hoặc hiểu sai đề bài.
- Ví dụ: Muốn tính trung bình cộng của a và b nhưng lại viết công thức là a + b / 2 (thiếu ngoặc) thay vì (a + b) / 2. Kết quả tính ra sẽ sai.
2. MỘT SỐ LỖI NGOẠI LỆ THƯỜNG GẶP
- ZeroDivisionError: Lỗi chia cho số 0.
- IndexError: Lỗi truy cập phần tử ngoài phạm vi của danh sách.
- NameError: Lỗi dùng tên biến hoặc tên hàm chưa được định nghĩa (chưa khai báo).
- TypeError: Lỗi thực hiện phép toán trên kiểu dữ liệu không phù hợp.
- ValueError: Lỗi giá trị không hợp lệ (thường gặp khi chuyển đổi kiểu dữ liệu).
- IndentationError: Lỗi thụt đầu dòng sai.
- SyntaxError: Lỗi cú pháp chung.
3. THỰC HÀNH: NHẬN BIẾT LỖI CHƯƠNG TRÌNH
Nhiệm vụ 1: Nhận biết lỗi chia cho 0 và lỗi kiểu dữ liệu
Đề bài:
Viết chương trình "Máy tính thương số" cực kỳ đơn giản.
Yêu cầu người dùng nhập vào số bị chia a và số chia b. In ra kết quả phép chia a / b.
Sau đó, em hãy cố tình nhập sai quy tắc toán học để xem Python báo lỗi gì.
Hướng dẫn:
- Dùng lệnh input() kết hợp ép kiểu int() để nhập hai số nguyên a và b.
- Viết lệnh in ra kết quả của a / b.
- Chạy thử lần 1: Cố tình nhập số chia b là 0. Quan sát thông báo lỗi ZeroDivisionError (Lỗi chia cho 0).
- Chạy thử lần 2: Cố tình nhập chữ cái (ví dụ: gõ chữ "Năm") thay vì nhập số. Quan sát thông báo lỗi ValueError (Lỗi giá trị do hàm int() không thể ép kiểu chữ cái thành số nguyên).
Chương trình Python hoàn chỉnh:
Nhiệm vụ 2: Nhận biết lỗi vượt quá giới hạn danh sách
Đề bài:
Em có một danh sách chứa tên của 3 bạn học sinh.
Em hãy cố tình viết lệnh in ra tên của bạn học sinh thứ 4 (vốn không hề tồn tại trong danh sách) để quan sát xem chương trình báo lỗi như thế nào.
Hướng dẫn:
- Tạo một danh sách to_1 = ["An", "Bình", "Cường"]. Danh sách này có 3 phần tử, nên chỉ số hợp lệ chỉ nằm trong khoảng từ 0 đến 2.
- Cố tình viết lệnh print(to_1[3]) để truy cập vào vị trí số 3 (phần tử thứ 4).
- Chạy chương trình và quan sát dòng báo lỗi IndexError (Lỗi truy cập phần tử có chỉ số vượt quá giới hạn).
Chương trình Python hoàn chỉnh: