Các Loại Lỗi Phổ Biến trong Python

Tạo bởi Hoàng Vũ, chỉnh sửa cuối lúc 2 tháng 2, 2025

Trong Python, khi chạy chương trình, chúng ta có thể gặp nhiều loại lỗi khác nhau. Việc hiểu rõ từng loại lỗi sẽ giúp chúng ta dễ dàng tìm ra nguyên nhân và sửa chữa chúng một cách nhanh chóng. Dưới đây là ba loại lỗi phổ biến:

1. SyntaxError - Lỗi cú pháp

Lỗi SyntaxError xảy ra khi mã nguồn của bạn không tuân theo cú pháp hợp lệ của Python.

Ví dụ 1: Quên dấu hai chấm (:) ở câu lệnh if

x = 10
if x > 5  # Thiếu dấu `:`
    print("X lớn hơn 5")

Kết quả:

SyntaxError: expected ':'

Ví dụ 2: Sai quy tắc đặt tên biến

3x = 5  # Không thể đặt tên biến bắt đầu bằng số

Kết quả:

SyntaxError: invalid syntax

Cách khắc phục:

  • Kiểm tra lỗi cú pháp, dấu câu, dấu ngoặc đơn, dấu hai chấm…
  • Đọc kỹ thông báo lỗi để xác định dòng nào bị sai.

2. TypeError - Lỗi kiểu dữ liệu

Lỗi TypeError xảy ra khi bạn cố gắng thực hiện một phép toán hoặc thao tác không hợp lệ trên một kiểu dữ liệu.

Ví dụ 1: Cộng số với chuỗi

x = 5
y = "10"
print(x + y)  # Không thể cộng int với str

Kết quả:

TypeError: unsupported operand type(s) for +: 'int' and 'str'

Cách khắc phục:
Chuyển đổi kiểu dữ liệu trước khi thực hiện phép toán:

print(x + int(y))  # Chuyển y thành số nguyên trước khi cộng

Ví dụ 2: Gọi hàm trên kiểu dữ liệu không hợp lệ

x = 5
x.append(10)  # Số nguyên không có phương thức append()

Kết quả:

TypeError: 'int' object has no attribute 'append'

Cách khắc phục:
Chỉ sử dụng phương thức phù hợp với kiểu dữ liệu:

x = [5]  # Đổi thành danh sách
x.append(10)
print(x)  # Kết quả: [5, 10]

3. ValueError - Lỗi giá trị

Lỗi ValueError xảy ra khi một hàm nhận một đối số đúng kiểu dữ liệu nhưng không hợp lệ.

Ví dụ 1: Chuyển đổi chuỗi không hợp lệ thành số

num = int("hello")  # Không thể chuyển "hello" thành số nguyên

Kết quả:

ValueError: invalid literal for int() with base 10: 'hello'

Cách khắc phục:
Kiểm tra giá trị trước khi chuyển đổi:

s = "123"
if s.isdigit():
    num = int(s)
    print(num)  # 123
else:
    print("Không thể chuyển đổi thành số!")

Ví dụ 2: Giải nén số lượng giá trị sai

a, b = [1, 2, 3]  # Danh sách có 3 phần tử, nhưng chỉ có 2 biến

Kết quả:

ValueError: too many values to unpack (expected 2)

Cách khắc phục:
Sử dụng danh sách đủ số phần tử hoặc unpacking chính xác:

a, b, c = [1, 2, 3]
print(a, b, c)  # 1 2 3

Tóm Tắt

Lỗi Nguyên nhân Cách khắc phục
SyntaxError Cú pháp sai (quên dấu hai chấm, dấu ngoặc, sai cách đặt tên biến, v.v.) Kiểm tra cú pháp, đọc kỹ thông báo lỗi.
TypeError Thực hiện phép toán không hợp lệ trên kiểu dữ liệu (cộng số với chuỗi, gọi phương thức không có trên kiểu dữ liệu) Kiểm tra kiểu dữ liệu trước khi thực hiện thao tác.
ValueError Giá trị đúng kiểu nhưng không hợp lệ (chuyển đổi sai, unpacking sai) Kiểm tra giá trị trước khi sử dụng.

Việc hiểu rõ các lỗi trên sẽ giúp bạn debug nhanh hơn và viết mã Python hiệu quả hơn.

Website Logo

Với hơn 10 năm kinh nghiệm lập trình web và từng làm việc với nhiều framework, ngôn ngữ như PHP, JavaScript, React, jQuery, CSS, HTML, CakePHP, Laravel..., tôi hy vọng những kiến thức được chia sẻ tại đây sẽ hữu ích và thiết thực cho các bạn.

Bình luận

Website Logo

Chào, tôi là Vũ. Đây là blog hướng dẫn lập trình của tôi.

Liên hệ công việc qua email dưới đây.

lhvuctu@gmail.com

Chúng Tôi Trên

Bạn đang muốn học về lập trình website?

Bạn cần nâng cao kiến thức chuyên nghiệp hơn để nâng cao cơ hội nghề nghiệp? Liên hệ