Làm cách nào để sửa lỗi thụt lề trong python?

Thụt đầu dòng là một khái niệm rất quan trọng của Python vì nếu không thụt lề mã Python đúng cách, cuối cùng bạn sẽ thấy IndentationError và mã sẽ không được biên dịch

Thụt lề Python

Thụt đầu dòng Python đề cập đến việc thêm khoảng trắng trước một câu lệnh cho một khối mã cụ thể. Nói cách khác, tất cả các câu lệnh có cùng khoảng trắng ở bên phải, thuộc về cùng một khối mã

Làm cách nào để sửa lỗi thụt lề trong python?

Ví dụ về thụt lề Python

  • Câu lệnh (dòng 1), câu lệnh if (dòng 2) và câu lệnh (dòng cuối cùng) thuộc cùng một khối có nghĩa là sau câu lệnh 1, câu lệnh if sẽ được thực hiện. và giả sử điều kiện if trở thành Sai thì Python sẽ chuyển đến câu lệnh cuối cùng để thực thi
  • If-else lồng nhau thuộc khối 2 nghĩa là nếu if lồng nhau trở thành False thì Python sẽ thực thi các câu lệnh bên trong điều kiện else
  • Các câu lệnh bên trong if-else lồng nhau thuộc khối 3 và chỉ một câu lệnh sẽ được thực thi tùy thuộc vào điều kiện if-else

Thụt đầu dòng trong Python là một cách để nói với trình thông dịch Python rằng nhóm các câu lệnh thuộc về một khối mã cụ thể. Một khối là sự kết hợp của tất cả các câu lệnh này. Khối có thể được coi là nhóm các câu lệnh cho một mục đích cụ thể. Hầu hết các ngôn ngữ lập trình như C, C++ và Java đều sử dụng dấu ngoặc nhọn { } để xác định một khối mã. Python sử dụng thụt đầu dòng để làm nổi bật các khối mã. Khoảng trắng được sử dụng để thụt đầu dòng trong Python. Tất cả các câu lệnh có cùng khoảng cách về bên phải đều thuộc về cùng một khối mã. Nếu một khối phải được lồng sâu hơn, thì nó chỉ cần được thụt vào xa hơn về bên phải. Bạn có thể hiểu rõ hơn bằng cách xem các dòng mã sau.  

ví dụ 1

Các dòng print('Đăng nhập vào geeksforgeeks…') và print('retype the URL. ’) là hai khối mã riêng biệt. Hai khối mã trong câu lệnh if ví dụ của chúng tôi đều được thụt vào bốn khoảng trắng. Bản in cuối cùng ('Tất cả đã đặt. ') không thụt vào, vì vậy nó không thuộc khối khác.  

Python3




1
2
3
4
5
0

1
2
3
4
5
1

 

1
2
3
4
5
2____23
1
2
3
4
5
4

 

1
2
3
4
5
5
1
2
3
4
5
2
1
2
3
4
5
3
1
2
3
4
5
3
1
2
3
4
5
4
1
2
3
4
5
2

1
2
3
4
5
3
1
2
3
4
5
4
1
2
3
4
5
5
1
2
3
4
5
6
1
2
3
4
5
7

1
2
3
4
5
8
1
2
3
4
5
2

1
2
3
4
5
3
1
2
3
4
5
4
1
2
3
4
5
5
1
2
3
4
5
03
1
2
3
4
5
7

1
2
3
4
5
4
1
2
3
4
5
5
1
2
3
4
5
07
1
2
3
4
5
7

đầu ra

1
2
3
4
5
5

ví dụ 2

Để chỉ ra một khối mã trong Python, bạn phải thụt lề từng dòng của khối bằng cùng một khoảng trắng. Hai dòng mã trong vòng lặp while đều được thụt vào bốn khoảng trắng. Nó được yêu cầu để chỉ ra khối mã mà một câu lệnh thuộc về. Ví dụ: j=1 và while(j<=5). không được thụt lề và do đó, nó không nằm trong khối Python. Vì vậy, cấu trúc mã Python bằng cách thụt đầu dòng.  

Python3




1
2
3
4
5
09
1
2
3
4
5
3
1
2
3
4
5
11

1
2
3
4
5
12

1
2
3
4
5
13
1
2
3
4
5
14
1
2
3
4
5
3
1
2
3
4
5
16
1
2
3
4
5
17

1
2
3
4
5
18
1
2
3
4
5
4
1
2
3
4
5
20

1
2
3
4
5
18
1
2
3
4
5
09
1
2
3
4
5
3
1
2
3
4
5
09
1
2
3
4
5
25
1
2
3
4
5
11

đầu ra

1
2
3
4
5

Ghi chú. Python sử dụng 4 dấu cách làm thụt đầu dòng theo mặc định. Tuy nhiên, số lượng dấu cách là tùy thuộc vào bạn, nhưng phải sử dụng tối thiểu 1 dấu cách

Trong hướng dẫn này, bạn sẽ học cách khắc phục một lỗi phổ biến mà bạn sẽ gặp phải trong Python, lỗi thụt lề. Thụt mã của bạn là một chức năng quan trọng để viết các chương trình hữu ích. Tuy nhiên, mã thụt lề không đúng cách sẽ gây ra lỗi sau. “Lỗi thụt lề Python. unindent không khớp với bất kỳ cấp độ thụt lề bên ngoài nào"

Đến cuối hướng dẫn này, bạn sẽ học được

  • Cách khắc phục lỗi thụt lề Python
  • Cách thụt đầu dòng hoạt động trong Python và tại sao nó lại quan trọng
  • Cách sử dụng các IDE phổ biến như VS Code để dễ dàng khắc phục lỗi thụt đầu dòng trong Python

Bắt đầu nào

Mục lục

  • Lỗi thụt lề Python là gì?
  • Cách thụt đầu dòng hoạt động trong Python
  • Nguyên nhân gây ra lỗi thụt lề Python
  • Sự kết luận
  • Tài nguyên bổ sung

Lỗi thụt lề Python là gì?

Lỗi thụt đầu dòng trong Python do một số yếu tố khác nhau gây ra

  • Trộn không gian và tab trong thụt đầu dòng
  • Các mức thụt đầu dòng không khớp trong các khối mã

Cả hai kịch bản này sẽ khiến

1
2
3
4
5
9 được nâng lên. Thật không may, không rõ trường hợp nào trong số những trường hợp này đã gây ra lỗi. Trước khi đi sâu vào chi tiết hơn, hãy cùng khám phá cách thức hoạt động của thụt lề trong Python

Cách thụt đầu dòng hoạt động trong Python

Python cho phép bạn thụt lề mã của mình bằng dấu cách hoặc tab. Không quan trọng bạn chọn cái nào – tuy nhiên nó đòi hỏi bạn phải nhất quán với lựa chọn đó. Vì Python là ngôn ngữ được nhập tĩnh, Python sẽ không thể hoạt động bình thường nếu cả khoảng trắng và tab đều được sử dụng để thụt lề

Thực tế khi copy code từ trên mạng thì đây là lỗi phổ biến mà bạn sẽ gặp phải. Trong suốt phần còn lại của hướng dẫn này, bạn sẽ học cách xác định và giải quyết lỗi này

Bạn có nên thụt lề bằng dấu cách hoặc tab trong Python không?

Mặc dù việc bạn sử dụng tab hay dấu cách để thụt lề mã của mình không quan trọng, nhưng Python cung cấp một số hướng dẫn về phương pháp nào được ưu tiên hơn. Tiêu chuẩn PEP-8 về thụt lề mã của bạn chỉ ra rằng sử dụng bốn khoảng trắng cho mỗi mức thụt lề là phương pháp ưu tiên để thụt lề mã của bạn

Tiêu chuẩn PEP còn tiến xa hơn nữa. Nó nói rằng khoảng trắng được ưu tiên và các tab chỉ nên được sử dụng để duy trì sự nhất quán với mã hiện có

Nguyên nhân gây ra lỗi thụt lề Python

Hãy khám phá thêm một chút về nguyên nhân của Python

1
2
3
4
5
9. Trước đó, bạn đã biết rằng lỗi này là do trộn lẫn dấu cách và tab trong mã thụt lề cũng như mã thụt lề không đúng cách

Hãy khám phá cả hai điều này một cách chi tiết hơn để xem lỗi có thể được giải quyết như thế nào

Trộn không gian và tab trong Python

Một trong những nguyên nhân phổ biến nhất của Python

1
2
3
4
5
9 là trộn lẫn các tab và khoảng trắng trong mã của bạn khi thụt lề. Vấn đề với điều này là nó thường không trực quan để tìm. Sự cố này chủ yếu xảy ra khi bạn sao chép và dán mã từ một nguồn khác vào chương trình Python

Rất may, hầu hết các IDE hiện đại sẽ tính đến điều này và tự động chuyển đổi các tab thành khoảng trắng. Ví dụ: Visual Studio Code mặc định sẽ chuyển đổi các tab thành số khoảng trắng tương ứng. Do đó, lỗi này phổ biến hơn khi bạn đang chạy các chương trình Python trong các ứng dụng khác

Trong nhiều trường hợp, bạn sẽ có thể chọn các tab bằng cách sử dụng tìm và thay thế bằng cách tìm kiếm chuỗi

1
2
3
4
5
2

Thụt lề sai trong Python

Nguyên nhân khác của lỗi thụt đầu dòng Python là do mã Python của bạn bị thụt lề không chính xác. Điều này có thể xảy ra khi bạn đang viết bất kỳ đoạn mã nào thuộc loại bị chặn, chẳng hạn như câu lệnh

1
2
3
4
5
3 hoặc vòng lặp
1
2
3
4
5
4

Hãy cùng xem một ví dụ sẽ ném Python

1
2
3
4
5
5

1
2
3
4
5
8

Bạn có thể khắc phục điều này một cách dễ dàng bằng cách thụt vào đoạn mã thứ hai, như được hiển thị bên dưới

1
2
3
4
5
9

Lưu tâm đến nơi mã của bạn cần được thụt vào là một bước quan trọng để viết mã không có lỗi. Nói chung, sau dấu hai chấm, mã của bạn sẽ cần được thụt vào

Sự kết luận

Trong hướng dẫn này, bạn đã học cách giải quyết lỗi thụt đầu dòng trong Python. Bạn đã tìm hiểu nguyên nhân gây ra lỗi thụt đầu dòng trong Python và cách giải quyết hai nguyên nhân chính của nó. Trước tiên, chúng tôi đã xem xét cách lỗi được đưa ra khi mã của bạn kết hợp cả dấu cách và tab. Sau đó, chúng tôi đã xem xét các chỗ thụt đầu dòng bị thiếu hoặc sai trong mã của bạn