/ / mong đợi một khối được thụt lề ”Lỗi trong mã Python của bạn

mong đợi một khối được thụt lề ”Lỗi trong mã Python của bạn

Thụt lề là một tính năng quan trọng của mã có thể đọc được, có thể bảo trì, nhưng ít ngôn ngữ thực thi nó. Python là một trong số ít.

Nếu Python xác định mã của bạn được thụt lề không chính xác, bạn sẽ thấy thông báo “IndentationError” khi chạy mã của mình. Nhưng làm thế nào để bạn khắc phục điều này, và làm thế nào để bạn ngăn chặn nó trong tương lai?

Tại sao bạn nhận được lỗi IndentationError trong Python?

Lỗi “IndentationError: mong đợi một khối được thụt lề” là lỗi bạn có thể gặp khi lần đầu tiên bắt đầu sử dụng Python, đặc biệt nếu bạn đến từ một ngôn ngữ lập trình khác.

Các chi tiết cụ thể của quy tắc thụt lề của Python rất phức tạp, nhưng chúng tóm gọn lại ở một điều: thụt lề mã trong các khối. Điều này áp dụng cho các hàm, mệnh đề if, v.v. Dưới đây là một ví dụ về mã Python được định dạng không chính xác:

fname = "Gaurav"
lname = "Siyal"

if fname == "Gaurav" and lname == "Siyal":
print("You're Gaurav")
else:
print("You're somebody else")

Khi bạn cố gắng chạy đoạn mã trên, bạn sẽ nhận được thông báo như sau:

 File "tmp.py", line 5
print("You're Gaurav")
^
IndentationError: expected an indented block

LÀM VIDEO TRONG NGÀY

Thay vào đó, bạn nên thêm một tab hoặc một loạt dấu cách ở đầu hai dòng đại diện cho các khối:

fname = "Gaurav"
lname = "Siyal"

if fname == "Gaurav" and lname == "Siyal":
print("You're Gaurav")
else:
print("You're somebody else")

Nếu bạn thụt lề bằng dấu cách, bạn thực sự có thể sử dụng bất kỳ số nào bạn thích, miễn là bạn nhất quán và rõ ràng. Hầu hết các lập trình viên sử dụng hai, bốn hoặc tám khoảng trắng.

Các trường hợp thường gặp về thụt lề đúng

Dưới đây là một số ví dụ mà bạn có thể tham khảo, vì vậy bạn có thể đảm bảo bạn đang thụt lề chính xác.

Câu lệnh if

Thụt lề khối theo sau một nếu tuyên bố:

if my_name == "Gaurav":
print("My name is Gaurav")
return True

Chức năng

Phần thân của một hàm là một khối. Bạn nên thụt lề toàn bộ khối này:

def magic_number():
result = 42
return result

print magic_number()

Đối với các vòng lặp

Như với câu lệnh if, phần thân của vòng lặp for nên được thụt vào một cấp so với dòng bắt đầu bằng từ khóa:

for i in range(10):
print (i)

Đảm bảo Trình chỉnh sửa của bạn thụt lề chính xác

Hầu hết các trình soạn thảo văn bản hiện đại đều hỗ trợ thụt lề mã tự động. Nếu trình soạn thảo của bạn xác định rằng một dòng mã phải được thụt vào, nó sẽ tự động thêm các tab hoặc khoảng trắng.

Trong Spyder, các tùy chọn thụt lề có sẵn trong Công cụ> Tùy chọn> Mã nguồn:


Giao diện Spyder

Nếu bạn đang sử dụng vim, bạn có thể chỉnh sửa cấu hình của mình và sử dụng autoindent và các tùy chọn liên quan để định cấu hình thụt lề. Ví dụ: đây là một thiết lập phổ biến:


set autoindent
set expandtab
set tabstop=4
set softtabstop=4
set shiftwidth=4

Điều này sẽ tự động thụt lề bằng cách sử dụng bốn dấu cách.

Tuy nhiên, không có trình soạn thảo nào có thể làm cho chống đạn thụt lề tự động. Bạn vẫn cần chú ý đến việc thụt lề vì một số trường hợp không rõ ràng:


Một hàm Python để tính giai thừa của một số nguyên

Trong ví dụ này, trận chung kết trở về câu lệnh được thụt vào một mức so với chữ ký hàm trên dòng đầu tiên. Tuy nhiên, nếu bạn đặt con trỏ ở cuối dòng áp chót và nhấn đi vào, một trong hai điều có thể xảy ra. Người chỉnh sửa của bạn có thể định vị con trỏ:

  1. Hai mức thụt lề trong, được căn chỉnh bằng “res = …”
  2. Một mức thụt lề vào, được căn chỉnh với “else:”

Trình chỉnh sửa của bạn không thể phân biệt giữa hai trường hợp này: bạn có thể muốn thêm nhiều mã hơn vào khối if / else hoặc có thể không.

Xử lý lỗi ‘Dự kiến ​​một khối được thụt lề’ của Python

Lỗi xảy ra hàng ngày trong Python, cũng giống như bất kỳ ngôn ngữ lập trình nào khác. Các quy tắc nghiêm ngặt của Python về thụt lề có thể thêm một loại lỗi mới để suy nghĩ, nhưng chúng rất hữu ích. Mã được thụt lề thích hợp sẽ dễ đọc hơn và nhất quán giữa các nhóm.

Lỗi thụt lề không phải là lỗi duy nhất bạn phải đối phó. Việc làm quen với các lỗi Python phổ biến sẽ giúp bạn biết cách gỡ lỗi và phải làm gì để sửa chúng.


Hình minh họa logo Python cùng với các ứng dụng của nó

Lỗi “Danh sách chỉ mục ngoài phạm vi” trong Python có nghĩa là gì?

Đọc tiếp


Thông tin về các Tác giả

Similar Posts

Leave a Reply

Your email address will not be published. Required fields are marked *