BÀI 29: NHẬN BIẾT LỖI CHƯƠNG TRÌNH

   

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ỗiMô tả
ZeroDivisionErrorLỗi chia cho 0
IndexErrorChỉ số vượt quá giới hạn
NameErrorBiến hoặc hàm không tồn tại
TypeErrorKiểu dữ liệu không hợp lệ
ValueErrorGiá trị không hợp lệ
IndentationErrorLỗi thụt lềnh
SyntaxErrorLỗ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


Mới hơn Cũ hơn
Đọc tiếp:
Lên đầu trang