
A. Mục đích nghiên cứu
Nhận biết các lỗi phổ biến như ValueError, ZeroDivisionError, IndexError.
Dùng try - except để bắt lỗi và đưa ra thông báo thân thiện.
Ngăn chương trình bị dừng đột ngột khi có đầu vào không hợp lệ.
Viết chương trình ổn định, thân thiện với người dùng, đặc biệt trong các tình huống nhập liệu hoặc chia số.
B. Nội dung nghiên cứu
Bài 15. Các lỗi thường gặp trong Python
Bài 16. Cấu trúc try - except cơ bản
Bài 17. Xử lý nhiều loại lỗi
C. Bài tập tổng hợp
CHƯƠNG 6: XỬ LÝ LỖI
36

37
CHƯƠNG 6: Xử lý lỗi
Bài 15. Các lỗi thường gặp trong Python
Lỗi cú pháp (SyntaxError): viết sai cú pháp → chương trình không chạy
Lỗi khi chạy (Runtime Error): chương trình chạy rồi mới lỗi → có thể xử lý bằng try - except.
Các lỗi phổ biến:
ValueError: nhập chữ vào chỗ cần số → int("abc")
ZeroDivisionError: chia cho 0 → 5 / 0
IndexError: truy cập chỉ số không tồn tại trong list → lst[10] khi lst chỉ có 3 phần tử
KeyError: truy cập key không tồn tại trong dict → d["xyz"] nếu "xyz" chưa có

38
Bài 16. Cấu trúc try - except cơ bản
CHƯƠNG 6: Xử lý lỗi
Cú pháp:
try:
# Khối lệnh có thể gây lỗi
...
except TênLỗi:
# Xử lý khi lỗi xảy ra
...
Ví dụ 1: Xử lý nhập số sai
try:
tuoi = int(input("Nhap tuoi cua ban: "))
print("Tuoi cua ban la:", tuoi)
except ValueError:
print("Loi: Vui long nhap mot so nguyen!")
Ví dụ 2: Tránh chia cho 0
try:
a = 10
b = 0
ket_qua = a / b
except ZeroDivisionError:
print("Khong the chia cho 0!")

Dùng nhiều khối except:
try:
so = int(input("Nhap so nguyen: "))
ket_qua = 100 / so
print("Ket qua:", ket_qua)
except ValueError:
print("Loi: Ban phai nhap mot so nguyen!")
except ZeroDivisionError:
print("Loi: Khong the chia cho 0!")
Hoặc bắt mọi lỗi (không khuyến khích, chỉ dùng khi cần):
except Exception as e:
print("Da xay ra loi:", e)
39
Bài 17. Xử lý nhiều loại lỗi
CHƯƠNG 6: Xử lý lỗi

40
CHƯƠNG 6: Xử lý lỗi
Bài tập tổng hợp
Bài tập 1: Chuyển đổi đơn vị
Viết hàm chuyen_doi_do_dai(gia_tri_str,
don_vi_nguon, don_vi_dich):
Hỗ trợ chuyển đổi giữa: "cm", "m", "km"
Quy tắc:
1 m = 100 cm
1 km = 1000 m
Xử lý lỗi:
Nếu gia_tri_str không phải số → trả về None
Nếu đơn vị không hợp lệ → trả về None
Nếu kết quả âm (với độ dài) → vẫn cho phép (coi
như hợp lệ)
Bài tập 2: Truy xuất điểm theo chỉ số cột
Giả sử bạn có danh sách điểm theo cột:
diem_theo_cot = [
[8, 9, 7], # học sinh 0
[10, 9, 9], # học sinh 1
[6, 7, 5] # học sinh 2
]
Viết hàm lay_diem_hoc_sinh(danh_sach, stt_hoc_sinh,
stt_cot):
Trả về điểm nếu cả hai chỉ số hợp lệ
Nếu học sinh không tồn tại → in "Không có học
sinh thứ [stt]"
Nếu cột điểm không tồn tại → in "Học sinh này
không có cột điểm thứ [stt]"
Dùng một khối try duy nhất, bắt lỗi và phân biệt loại
lỗi

