Computer >> Máy Tính >  >> Lập trình >> Python

Python IndentationError:Giải pháp thụt lề không mong muốn

IndentationErrors phục vụ hai mục đích:chúng giúp làm cho mã của bạn dễ đọc hơn và đảm bảo trình thông dịch Python hiểu đúng mã của bạn. Nếu bạn thêm một khoảng trống hoặc tab bổ sung mà không cần thiết, bạn sẽ gặp phải lỗi “IndentationError:thụt lề không mong muốn”.

Trong hướng dẫn này, chúng tôi thảo luận về lỗi này có nghĩa là gì và tại sao nó lại xuất hiện. Chúng tôi sẽ giới thiệu cho các bạn một ví dụ về lỗi này để bạn có thể tìm ra cách khắc phục lỗi này trong chương trình của mình.

IndentationError:thụt lề không mong muốn

Thụt lề là một số khoảng trắng hoặc tab cụ thể biểu thị rằng một dòng mã là một phần của một khối mã cụ thể. Hãy xem xét chương trình sau:

def hello_world():
	print("Hello, world!")

Chúng tôi đã xác định một hàm duy nhất:hello_world() . Hàm này chứa một câu lệnh in. Để cho Python biết dòng mã này là một phần trong hàm của chúng tôi, chúng tôi đã thụt lề cho nó.

Bạn có thể thụt lề mã bằng cách sử dụng dấu cách hoặc tab, tùy thuộc vào sở thích của bạn. Bạn chỉ nên thụt lề mã nếu mã đó phải là một phần của khối mã khác. Điều này bao gồm khi bạn viết mã trong:

  • Câu lệnh “nếu… khác”
  • Câu nói “thử… ngoại trừ”
  • Vòng lặp “for”
  • Câu lệnh "chức năng"

Mã Python phải được thụt lề một cách nhất quán nếu nó xuất hiện trong một câu lệnh đặc biệt. Python thực thi thụt lề nghiêm ngặt.

Một số ngôn ngữ lập trình như JavaScript không thực thi thụt lề nghiêm ngặt vì chúng sử dụng dấu ngoặc nhọn để biểu thị các khối mã. Python không có tính năng này, vì vậy ngôn ngữ phụ thuộc nhiều vào thụt đầu dòng.

Nguyên nhân của lỗi “IndentationError:đột xuất thụt lề” là do bạn thụt lề mã quá xa hoặc sử dụng quá nhiều tab và dấu cách để thụt lề một dòng mã.

81% người tham gia cho biết họ cảm thấy tự tin hơn về triển vọng công việc công nghệ của mình sau khi tham gia chương trình đào tạo. Kết hợp với bootcamp ngay hôm nay.

Sinh viên tốt nghiệp bootcamp trung bình dành ít hơn sáu tháng để chuyển đổi nghề nghiệp, từ khi bắt đầu bootcamp đến khi tìm được công việc đầu tiên của họ.

Các lỗi thụt lề khác mà bạn có thể gặp phải là:

  • Unindent không khớp với bất kỳ mức thụt lề nào khác
  • Mong đợi một khối thụt lề

Một tình huống mẫu

Chúng tôi sẽ xây dựng một chương trình lặp lại danh sách các giao dịch mua mà người dùng đã thực hiện và in ra tất cả các giao dịch mua lớn hơn $ 25,00 vào bảng điều khiển.

Để bắt đầu, hãy xác định danh sách các giao dịch mua:

 purchases = [25.50, 29.90, 2.40, 57.60, 24.90, 1.55]

Tiếp theo, chúng tôi xác định một hàm để lặp qua danh sách các giao dịch mua của chúng tôi và in những thứ có giá trị trên 25 đô la vào bảng điều khiển:

def show_high_purchases(purchases):
	   for p in purchases:
		        if p > 25.00:
			            print("Purchase: ")
				                print(p)

show_high_purchases() hàm chấp nhận một đối số:danh sách các giao dịch mua qua đó hàm sẽ tìm kiếm. Hàm lặp qua danh sách này và sử dụng if để kiểm tra xem mỗi lần mua có giá trị hơn $ 25,00 hay không.

Nếu một giao dịch mua lớn hơn $ 25,00, thì câu lệnh Purchase: được in ra bảng điều khiển. Sau đó, giá của giao dịch mua đó được in ra bảng điều khiển. Nếu không, không có gì xảy ra.

Trước khi chúng tôi chạy mã của mình, hãy gọi hàm của chúng tôi và chuyển danh sách các giao dịch mua của chúng tôi dưới dạng tham số:

show_high_purchases(purchases)

Hãy chạy mã của chúng tôi và xem điều gì sẽ xảy ra:

  File "main.py", line 7
	print(p)
	^
IndentationError: unexpected indent

Mã của chúng tôi không chạy thành công.

Giải pháp

Như với bất kỳ lỗi Python nào, chúng ta nên đọc toàn bộ thông báo lỗi để xem điều gì đang xảy ra. Vấn đề dường như nằm ở dòng 7, đó là nơi chúng tôi in giá trị của giao dịch mua.

	if p > 25.00:
			print("Purchase: ")
				    print(p)

Chúng tôi đã vô tình thụt lề cho print() thứ hai tuyên bố. Điều này gây ra lỗi vì print() thứ hai của chúng tôi câu lệnh không phải là một phần của khối mã khác. Nó vẫn là một phần của if của chúng tôi tuyên bố.

Để giải quyết lỗi này, chúng tôi cần đảm bảo rằng chúng tôi thường xuyên thụt lề tất cả print() của chúng tôi các câu lệnh:

	if p > 25.00:
			print("Purchase: ")
				    print(p)

Cả print() các câu lệnh phải sử dụng cùng một mức độ thụt lề vì chúng là một phần của cùng một if tuyên bố. Chúng tôi đã thực hiện bản sửa đổi này ở trên.

Hãy thử chạy mã của chúng tôi:

Purchase:
25.5
Purchase:
29.9
Purchase:
57.6

Mã của chúng tôi in thành công tất cả các giao dịch mua trị giá hơn $ 25,00 vào bảng điều khiển.

Kết luận

“Lỗi thụt lề:thụt lề không mong muốn” xuất hiện khi bạn thụt lề một dòng mã quá nhiều lần. Để giải quyết lỗi này, hãy đảm bảo rằng tất cả mã của bạn sử dụng thụt lề nhất quán và không có thụt lề không cần thiết.

Bây giờ bạn đã sẵn sàng để sửa lỗi này như một chuyên gia Python!