Computer >> Hướng Dẫn Máy Tính >  >> Xử Lý Sự Cố >> Lỗi Windows

Cách khắc phục lỗi Indentation Error (Lỗi thụt lề) trong Python

Python là ngôn ngữ lập trình nổi bật phát hành lần đầu 1991. Ngôn ngữ nổi tiếng với thư viện chuẩn lớn và hỗ trợ nhiều mô hình lập trình: hàm, mệnh lệnh, thủ tục, hướng đối tượng.

Cách khắc phục lỗi Indentation Error (Lỗi thụt lề) trong Python

Lỗi 'Indentation Error: Expected an indented block' xảy ra với mọi loại người dùng: mới bắt đầu hay giàu kinh nghiệm. Vì Python sắp xếp mã bằng khoảng trắng (whitespace) chính xác, nếu thụt lề sai, mã không biên dịch và trả về thông báo lỗi.

Theo quy ước PEP8, nên dùng 4 khoảng trắng nơi cần thiết. Mọi lập trình viên nên dùng thụt lề đúng để tăng khả năng đọc mã.

Nguyên nhân gây lỗi Indentation Error trong Python

Như đã nói, lỗi chính do lỗi khoảng trắng/tab trong mã. Vì Python dùng ngôn ngữ thủ tục, bạn gặp lỗi nếu đặt tab/space không đúng. Chương trình có thể chạy nhưng nếu trình thông dịch (interpreter) tìm thấy lỗi, thông báo lỗi xuất hiện giữa chừng. Một số nguyên nhân:

  • Bạn dùng cả spaces và tabs trong mã. Nếu dùng xen kẽ, trình thông dịch không xác định dùng cái nào.
  • Bạn đặt một số thụt lề sai. Nếu không tuân thủ quy tắc thụt lề, lỗi chắc chắn xảy ra.
  • Quên thụt lề cho câu lệnh phức hợp (compound statements) như 'if', 'for', 'while' v.v.
  • Quên thụt lề cho hàm do người dùng định nghĩa (user-defined functions) hoặc lớp (classes).

Giải pháp 1: Kiểm tra khoảng trắng/tab sai

Không có sửa ngay lập tức cho vấn đề này. Vì mã do bạn viết, bạn phải duyệt từng dòng tìm lỗi. Có nhiều khối (block) trong mã theo cấu trúc. Nếu có câu lệnh 'If', mã theo sau cần thụt lề.

Cách khắc phục lỗi Indentation Error (Lỗi thụt lề) trong Python

Xem sơ đồ trên. Thụt lề cho khối cụ thể giữ nguyên suốt mã dù khối mới xuất hiện giữa chừng. Đảm bảo thụt lề nhất quán. Nếu dùng space, luôn dùng space; nếu dùng tab, luôn dùng tab. Trộn lẫn gây vấn đề.

Cách khắc phục lỗi Indentation Error (Lỗi thụt lề) trong Python

Thụt lề đúng trong ví dụ trên. Xem vòng lặp 'for'. Mọi thứ bên trong 'for' phải thụt lề. Bên trong 'for', có câu lệnh 'if'. Bên trong 'if', mọi thứ phải thụt lề thêm.

Bạn dễ dàng kiểm tra lỗi thụt lề ở đâu bằng cách xem log lỗi và dòng lỗi xuất phát.

Giải pháp 2: Bật hiển thị ký hiệu tab/space trong trình soạn thảo

Nếu bạn khó thụt lề mã bằng 'đoán mò' như mọi lập trình viên, bạn có thể bật hiển thị ký hiệu tab/space trong IDE hoặc trình soạn thảo mã. Tùy chọn này bật các 'chấm' nhỏ trong mã, mỗi chấm đại diện space hoặc tab. Bạn dùng để thụt lề chính xác hơn, đảm bảo không thừa hoặc thiếu thụt lề.

Ví dụ này dùng Notepad++ xem cách bật ký hiệu. Nếu dùng phần mềm khác, bật tùy chọn tương ứng.

  1. Nhấn View > Show Symbol > Show Whitespace and TABCách khắc phục lỗi Indentation Error (Lỗi thụt lề) trong Python
  1. Tùy chọn đã bật. Cũng có thể bật Indent Guide để dễ dàng hơn.
Cách khắc phục lỗi Indentation Error (Lỗi thụt lề) trong Python

Xem ví dụ trên. Thụt lề sau mỗi lớp. Mỗi space đại diện bởi một chấm. Sau khi sửa thụt lề sai, chạy lại mã xem đã khắc phục chưa.