KIỂM TRA BÀI CŨ
KHỞI ĐỘNG
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.
CÂU HỎI TRẮC NGHIỆM
Câu 1: Có bao nhiêu loại lỗi chính thường gặp khi lập trình Python?
Câu 2: Lỗi cú pháp (Syntax Error) là loại lỗi sinh ra do đâu?
Câu 3: Loại lỗi nào mà chương trình chạy bình thường nhưng kết quả sai?
Câu 4: Lỗi ngoại lệ (Runtime Error) diễn ra tại thời điểm nào trong quá trình lập trình?
Câu 5: Vì sao khi mắc lỗi lôgic (Logical Error), máy tính lại không báo lỗi?
Câu 6: Điểm chung giữa lỗi cú pháp và lỗi ngoại lệ khi xảy ra là gì?
Câu 7: Nếu bạn viết lệnh if x > 5 nhưng quên mất dấu hai chấm (:) ở cuối, máy sẽ báo lỗi gì?
Câu 8: Bạn muốn tính trung bình cộng hai số a và b nhưng lại gõ công thức a + b / 2. Đây là ví dụ của loại lỗi nào?
2. MỘT SỐ LỖI NGOẠI LỆ THƯỜNG GẶP
Lỗi ZeroDivisionError:
Là lỗi chia cho số 0.
Lỗi IndexError:
Là lỗi truy cập phần tử ngoài phạm vi của danh sách.
Lỗi NameError:
Là 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).
Lỗi TypeError:
Là lỗi thực hiện phép toán trên kiểu dữ liệu không phù hợp.
Lỗi ValueError:
Là lỗi giá trị không hợp lệ (thường gặp khi chuyển đổi kiểu dữ liệu).
Lỗi IndentationError:
Là lỗi thụt đầu dòng sai.
Lỗi SyntaxError:
Là lỗi cú pháp chung.
CÂU HỎI TRẮC NGHIỆM
Câu 9: Lỗi ZeroDivisionError sẽ xuất hiện trong lập trình khi bạn làm gì?
Câu 10: Lỗi NameError mang ý nghĩa gì khi lập trình bằng Python?
Câu 11: Thông báo IndentationError thường chỉ ra vấn đề gì trong đoạn code?
Câu 12: Vì sao thao tác với danh sách (List) lại có thể sinh ra lỗi IndexError?
Câu 13: Lỗi TypeError thường xảy ra khi thực hiện hành động nào dưới đây?
Câu 14: Đặc điểm nào giúp mô tả chính xác nhất về lỗi ValueError?
Câu 15: Nếu bạn cố tình chạy lệnh 5 + "abc", hệ thống sẽ trả về lỗi gì?
Câu 16: Khi sử dụng hàm int("1.5") để ép kiểu xâu thành số nguyên, chương trình sẽ báo lỗi nào?
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:
1. Dùng lệnh input() kết hợp ép kiểu int() để nhập hai số nguyên a và b.
2. Viết lệnh in ra kết quả của a / b.
3. 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).
4. 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:
1. 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.
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).
3. 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: