Python เป็นภาษาโปรแกรมมิ่งที่กำลัง nổi lên ซึ่งเผยแพร่ครั้งแรกในปี 1991 ภาษานี้รู้จักในไลบรารีที่ครอบคลุมและใหญ่โต และรองรับพาราดายม์การเขียนโปรแกรมหลายอย่าง เช่น functional, imperative, procedural และ object-oriented

'Indentation Error: Expected an indented block' เกิดขึ้นกับผู้ใช้ทุกประเภท ไม่ว่าจะเป็นมือใหม่หรือผู้มีประสบการณ์ เนื่องจาก Python จัดระเบียบโค้ดทั้งหมดด้วย whitespace ที่ถูกต้อง หากคุณมีการย่อหน้าที่ไม่ถูกต้อง โค้ดจะไม่คอมไพล์และคุณจะได้รับข้อความข้อผิดพลาด
ตามข้อตกลงที่ปฏิบัติตามใน PEP8 ควรมี whitespace 4 ช่องว่างที่จำเป็น นี่เป็นสิ่งที่เหมาะสมสำหรับทุกโปรแกรมเมอร์ที่จะใช้การย่อหน้าที่เหมาะสม เพื่อให้ความอ่านโค้ดดีขึ้น
สาเหตุของ Indentation Error ใน Python
เหมือนที่กล่าวไว้ก่อนหน้านี้ ข้อผิดพลาดนี้เกิดขึ้นหลักเพราะมีข้อผิดพลาดเรื่อง space หรือ tab ในโค้ดของคุณ เนื่องจาก Python ใช้ภาษา procedural คุณอาจประสบข้อผิดพลาดนี้หากคุณไม่ได้วาง tabs/spaces อย่างถูกต้อง โปรแกรมอาจรันได้อย่างถูกต้อง แต่หาก interpreter พบข้อผิดพลาดนี้ ข้อความข้อผิดพลาดจะปรากฏขึ้นกลางทาง สาเหตุบางอย่างของข้อผิดพลาดคือ:
- คุณใช้ ทั้ง spaces และ tabs ในโค้ดของคุณ หากทั้งสองใช้สลับกัน interpreter จะไม่สามารถกำหนดได้ว่าจะใช้รายการใด
- คุณวาง indent บางส่วน ผิด หากไม่ปฏิบัติตามแนวปฏิบัติการย่อหน้า คุณจะมีข้อผิดพลาดนี้โดยไม่เว้นแม้แต่น่าเบื่อ
- คุณลืมย่อหน้า compound statements เช่น 'if', 'for', 'while' เป็นต้น
- คุณลืมย่อหน้า user-defined functions หรือ classes
วิธีแก้ไข 1: ตรวจสอบ white spaces/tabs ที่ผิด
ไม่มีการแก้ไขทันทีสำหรับปัญหานี้ เนื่องจากโค้ดเป็นของคุณ คุณต้องผ่านทุกบรรทัดและดูว่าคุณทำผิดที่ไหน มีบล็อกหลายบล็อกในโค้ดเกี่ยวกับโครงสร้าง หากมีคำสั่ง 'If' จำเป็นต้องมีการย่อหน้าให้กับโค้ดที่ตามมา

ดูแผนภาพด้านบน ดูว่าการย่อหน้าสำหรับบล็อกเฉพาะยังคงเหมือนเดิมตลอดโค้ด แม้ว่าจะมีบล็อกใหม่ถูกนำเข้ามาในกลาง โปรดตรวจสอบให้แน่ใจว่าการย่อหน้าของคุณสอดคล้องกัน หากคุณใช้ spaces ให้ใช้ spaces เสมอ และหากคุณใช้ tabs ให้ใช้ tabs เสมอ การผสมสองอย่างจะก่อให้เกิดปัญหา

การย่อหน้าที่ถูกต้องแสดงในตัวอย่างด้านบน ดู 'for' loop สำหรับการเริ่มต้น ทุกอย่าง ภายใน 'for' loop ต้องถูกย่อหน้า ภายใน 'for' loop เรามีคำสั่ง 'if' ภายในคำสั่ง 'if' ทุกอย่างต้องถูกย่อหน้า เพิ่มเติม
คุณสามารถตรวจสอบได้ง่ายว่าข้อผิดพลาดการย่อหน้าเกิดขึ้นที่ไหนโดยการตรวจสอบ error log และดูบรรทัดที่ข้อผิดพลาดเริ่มต้น
วิธีแก้ไข 2: เปิดใช้งานสัญลักษณ์ tab/space ใน editor
หากคุณมีเวลายากในการย่อหน้าโค้ดของคุณด้วย 'การเดา' เหมือนโปรแกรมเมอร์ทุกคน คุณสามารถเปิดใช้งานสัญลักษณ์ของ tab/space ใน IDE หรือโปรแกรมแก้ไขโค้ดของคุณ ตัวเลือกนี้จะเปิดใช้งาน 'จุด' เล็กๆ ในโค้ดของคุณ ที่แต่ละจุดแทน space หรือ tab คุณสามารถใช้สิ่งนี้เพื่อย่อหน้าโค้ดอย่างถูกต้องมากขึ้น และให้แน่ใจว่าไม่มี indent เพิ่มเติมหรือขาดหายไป
ในตัวอย่างนี้ เราจะใช้ Notepad++ และดูว่าคุณสามารถเปิดใช้งานสัญลักษณ์ได้อย่างไร หากคุณใช้ซอฟต์แวร์อื่นสำหรับการแก้ไขโค้ด คุณสามารถเปิดใช้งานการตั้งค่าที่เฉพาะเจาะจงกับมัน
- กด View > Show Symbol > Show Whitespace and TAB

- ตอนนี้ตัวเลือกเปิดใช้งานแล้ว คุณยังสามารถเปิดใช้งาน Indent Guide ได้ เพื่อให้สิ่งต่างๆ ง่ายขึ้นสำหรับคุณ

ดูตัวอย่างด้านบน ดูการย่อหน้าที่นำไปใช้หลังจากแต่ละ class แต่ละ space แทนด้วยจุดเดียว หลังจากทำการเปลี่ยนแปลงการย่อหน้าที่ผิดบนโค้ดของคุณ ให้รันมันอีกครั้งและดูว่านี้แก้ไขปัญหาหรือไม่