BÀI 29: NHẬN BIẾT LỖI CHƯƠNG TRÌNH
A. YÊU CẦU CẦN ĐẠT
- Biết và phân biệt được một số loại lỗi chương trình.
- Biết được một vài lỗi ngoại lệ thường gặp.
B. NỘI DUNG BÀI HỌC
1. Nhận Biết Lỗi Chương Trình
Trường hợp 1: Lỗi Cú Pháp
Người lập trình viết sai cú pháp lệnh, chương trình lập tức dừng lại và thông báo lỗi cú pháp.
>>> while true print(“Hello”)
SyntaxError: Invalid syntax
Trường hợp 2: Lỗi Nhập Dữ Liệu Sai
Khi người dùng nhập dữ liệu sai khuôn dạng, chương trình thông báo lỗi.
>>> n = int(input(“Nhập số nguyên n: ”))
Nhập số nguyên n: 1.5
Traceback (most recent call last):
File "<pyshell#0>", line 1, in <module>
n = int(input(“Nhập số nguyên n: ”))
ValueError: invalid literal for int() with base 10: '1.5'
Trường hợp 3: Lỗi Chỉ Số Vượt Giới Hạn
Chương trình truy cập chỉ số ngoài phạm vi danh sách.
A = [1, 3, 10, 0]
for i in range(5):
print(A[i], end=" ")
Lỗi xuất hiện do danh sách A chỉ có 4 phần tử.
Trường hợp 4: Lỗi Logic
Chương trình không báo lỗi nhưng kết quả không đúng.
# Tính tổng ba số nguyên dương đầu tiên
s = 0
for i in range(3):
s = s + i
print(s) # Kết quả là 3 thay vì 6
Lý do: range(3)
trả về dãy 0, 1, 2 thay vì 1, 2, 3.
2. Một Số Lỗi Ngoại Lệ Thường Gặp
Mã Lỗi | Mô tả |
---|---|
ZeroDivisionError | Lỗi chia cho 0 |
IndexError | Chỉ số vượt quá giới hạn |
NameError | Biến hoặc hàm không tồn tại |
TypeError | Kiểu dữ liệu không hợp lệ |
ValueError | Giá trị không hợp lệ |
IndentationError | Lỗi thụt lềnh |
SyntaxError | Lỗi cú pháp |
C. Củng Cố - Vận Dụng
Thực Hành
Nhiệm vụ 1: Nhập hai số nguyên và tính toán
Viết chương trình nhập hai số nguyên m, n từ bàn phím và tính tổng, hiệu, thương của chúng. Gợi ý:
- Lỗi xảy ra nếu nhập không phải số nguyên.
- Thiếu dấu cách giữa m và n.
- Nhập n = 0 dẫn đến lỗi chia cho 0.
try:m, n = map(int, input("Nhập hai số nguyên m và n, cách nhau bởi dấu cách: ").split())print(f"Tổng: {m + n}")print(f"Hiệu: {m - n}")print(f"Thương: {m / n if n != 0 else 'Lỗi - không thể chia cho 0'}")except ValueError:print("Lỗi: Vui lòng nhập hai số nguyên hợp lệ.")except ZeroDivisionError:print("Lỗi: Không thể chia cho 0.")
Nhiệm vụ 2: Nhập danh sách số nguyên
Viết chương trình nhập số tự nhiên n và n số nguyên vào danh sách. Gợi ý:
- Lỗi xảy ra nếu n không là số nguyên.
- Các số trong danh sách không phải số nguyên.
try:n = int(input("Nhập số tự nhiên n: "))if n <= 0:raise ValueError("n phải là số tự nhiên dương.")A = list(map(int, input(f"Nhập {n} số nguyên, cách nhau bởi dấu cách: ").split()))if len(A) != n:raise ValueError(f"Bạn phải nhập đúng {n} số nguyên.")print("Danh sách số nguyên:", A)except ValueError as e:print("Lỗi:", e)
D. TRẮC NGHIỆM
Chủ đề:
Tin Học 10