Bài 29: Nhận biết lỗi chương trình Python - Tin học 10 Kết nối tri thức với cuộc sống

Web Publisher User

 

TIẾT 47 - 48 - 49
BÀI 29: NHẬN BIẾT LỖI CHƯƠNG TRÌNH (KNTTVCS)

1. Phân biệt lỗi trong chương trình Python

STT

Đoạn chương trình

Kết quả

1

a = 3

if a % 2 == 0:

     print(a, 'là số chẵn')

else

     print(a, 'là số lẻ')

SyntaxError: Lỗi cú pháp ở dòng 4, lệnh else không có dấu hai chấm

2

if x > 5:

     print(x)

           print('x lớn hơn 5')

NameError: name 'x' is not defined (Lỗi vì biến x chưa được gán giá trị trước khi sử dụng)

IndentationError: hàng 3 thụt lề không đúng vị trí

3

my_list = [1, 2, 3, ]

print(my_list)

SyntaxError: lỗi xảy ra ở dòng khởi tạo danh sách vì dư dấu phẩy

Tuy nhiên, kể từ phiên bản Python 3.1 trở đi thì hệ thống tự động nhận biết giá trị rỗng, nên biến my_list = [1, 2, 3]

4

n = float(input('Nhập số thực n: '))  

Người dùng nhập: 2,7

ValueError: could not convert string to float: '2,7' (Lỗi vì hàm float() mong đợi dấu chấm '.' cho số thập phân, không phải dấu phẩy ',')

5

python ls = ['Chào', 'Năm', 'Mới', 2024]

print(ls[4])

IndexError: list index out of range (Lỗi vì chỉ số hợp lệ là từ 0 đến 3, không có chỉ số 4)

6

if delta == 0:

     x = -b / 2 * a

print('Nghiệm:', x)

Logic Error: sai cấu trúc tính toán

 

Trong Python, các lỗi chia làm 3 loại:

    • SyntaxError (Lỗi cú pháp): Lỗi xảy ra khi trong chương trình có câu lệnh viết sai cú pháp hoặc sai cấu trúc ngôn ngữ quy định.
    • Exception (Lỗi ngoại lệ): Lỗi xảy ra khi trong chương trình không thể thực hiện một câu lệnh nào đó (mặc dù cú pháp đúng) trong quá trình thực thi.
    • Lỗi ngữ nghĩa (logic): Lỗi xảy ra khi kết quả của chương trình không đúng theo yêu cầu của bài toán (chương trình chạy không lỗi nhưng sai kết quả mong muốn).
    • Với mỗi loại lỗi, cách xử lý và kiểm soát sẽ khác nhau.

2. Một số lỗi ngoại lệ (Exception) thường gặp

a) ZeroDivisionError: Lỗi xảy ra khi trong chương trình có lệnh thực hiện phép chia cho 0.

Ví dụ

a = 5

b = 0

print(a / b)  # Gây lỗi ZeroDivisionError

b) IndexError: Lỗi xảy ra khi trong chương trình có lệnh truy cập phần tử (danh sách, xâu, ...) nhưng chỉ số lại vượt quá giới hạn.

Ví dụ

my_list = [10, 20, 30]

print(my_list[3])  # Gây lỗi IndexError vì chỉ số lớn nhất là 2

c) NameError: Lỗi xảy ra khi trong chương trình có lệnh liên quan đến một biến hoặc hàm nhưng không tìm thấy (chưa được định nghĩa) biến hoặc hàm đó.

Ví dụ

print(break_your_variable)  # Gây lỗi NameError nếu break_your_variable chưa được gán giá trị

Jack(5, 3.5) # Gây lỗi NameError nếu hàm Jack chưa được định nghĩa

d) TypeError: Lỗi kiểu dữ liệu - Lỗi xảy ra khi một phép toán hoặc hàm được áp dụng cho một đối tượng có kiểu dữ liệu không phù hợp. Thường gặp ở các chương trình chưa kiểm tra kiểu dữ liệu đầu vào.

Ví dụ

x = "hello"

y = 5

print(x + y)  # Gây lỗi TypeError vì không thể cộng chuỗi với số nguyên

e) ValueError: Lỗi liên quan đến giá trị - Lỗi xảy ra khi trong chương trình có hàm nhận đối số có kiểu đúng nhưng giá trị không hợp lệ. Thường xảy ra do lỗi đưa dữ liệu vào hoặc do hạn chế của hàm.

Ví dụ

n = int("abc")  # Gây lỗi ValueError vì "abc" không thể chuyển thành số nguyên

f) IndentationError: Lỗi xảy ra khi trong chương trình có một số hàng thụt lề không thẳng hàng hoặc không đúng vị trí (sai cấu trúc khối lệnh).

Ví dụ

a = 10

if a > 5:

print("Lớn hơn 5")  # Gây lỗi IndentationError vì thiếu thụt lề

 

Post a Comment

Chúng tôi rất vui khi bạn muốn đóng góp ý kiến. Để đảm bảo môi trường trao đổi lành mạnh, vui lòng tuân thủ các quy định sau:

1. Sử dụng tiếng Việt có dấu đầy đủ, tránh viết tắt.
2. Bình luận sẽ được kiểm duyệt trước khi công khai.
3. Tôn trọng người khác và đóng góp ý kiến xây dựng.
4. Tuân thủ chính sách của Google và TTKT.

Cảm ơn bạn đã đồng hành cùng chúng tôi!

CẢNH BÁO

Gần đây, chúng tôi phát hiện nội dung bị chụp màn hình và chia sẻ trái phép. TTKT khuyến cáo bạn không nên chụp màn hình mà hãy chia sẻ link đến bài viết để tôn trọng tác giả và tránh bị vô hiệu hóa tài khoản.

Yêu cầu Đăng nhập

Để tiếp tục sử dụng, vui lòng đăng nhập.