IndentationErrors มีจุดประสงค์สองประการ:ช่วยให้โค้ดของคุณอ่านง่ายขึ้น และทำให้ล่าม Python เข้าใจโค้ดของคุณอย่างถูกต้อง หากคุณเพิ่มพื้นที่หรือแท็บเพิ่มเติมโดยที่ไม่ต้องการ คุณจะพบข้อผิดพลาด “IndentationError:การเยื้องที่ไม่คาดคิด”
ในคู่มือนี้ เราจะพูดถึงความหมายของข้อผิดพลาดนี้และสาเหตุที่ทำให้เกิดข้อผิดพลาด เราจะอธิบายตัวอย่างข้อผิดพลาดนี้เพื่อให้คุณทราบวิธีแก้ไขในโปรแกรมของคุณ
IndentationError:การเยื้องที่ไม่คาดคิด
การเยื้องคือจำนวนช่องว่างหรือแท็บที่ระบุซึ่งแสดงว่าโค้ดหนึ่งบรรทัดเป็นส่วนหนึ่งของบล็อกโค้ดหนึ่งๆ พิจารณาโปรแกรมต่อไปนี้:
def hello_world(): print("Hello, world!")
เราได้กำหนดฟังก์ชันเดียว:hello_world()
. ฟังก์ชันนี้มีคำสั่งพิมพ์ เพื่อระบุให้ Python ทราบ โค้ดบรรทัดนี้เป็นส่วนหนึ่งของฟังก์ชันของเรา เราได้เยื้องมัน
คุณสามารถเยื้องรหัสโดยใช้ช่องว่างหรือแท็บ ขึ้นอยู่กับความต้องการของคุณ คุณควรเยื้องโค้ดก็ต่อเมื่อโค้ดนั้นควรเป็นส่วนหนึ่งของบล็อกโค้ดอื่น ซึ่งรวมถึงเมื่อคุณเขียนโค้ดใน:
- คำสั่ง “ถ้า…อย่างอื่น”
- คำสั่ง "ลอง…ยกเว้น"
- วง "สำหรับ"
- คำสั่ง "ฟังก์ชัน"
ต้องเยื้องโค้ด Python อย่างสม่ำเสมอหากปรากฏในคำสั่งพิเศษ Python บังคับใช้การเยื้องอย่างเคร่งครัด
ภาษาโปรแกรมบางภาษา เช่น JavaScript ไม่ได้บังคับใช้การเยื้องอย่างเคร่งครัด เนื่องจากพวกเขาใช้เครื่องหมายปีกกาเพื่อแสดงกลุ่มของโค้ด Python ไม่มีคุณสมบัตินี้ ดังนั้นภาษาจึงขึ้นอยู่กับการเยื้องเป็นอย่างมาก
สาเหตุของข้อผิดพลาด "IndentationError:การเยื้องที่ไม่คาดคิด" กำลังเยื้องโค้ดของคุณมากเกินไป หรือใช้แท็บและช่องว่างมากเกินไปในการเยื้องบรรทัดโค้ด
81% ของผู้เข้าร่วมกล่าวว่าพวกเขารู้สึกมั่นใจมากขึ้นเกี่ยวกับโอกาสในการทำงานด้านเทคโนโลยีหลังจากเข้าร่วม bootcamp จับคู่กับ Bootcamp วันนี้
ผู้สำเร็จการศึกษาจากหลักสูตร bootcamp โดยเฉลี่ยใช้เวลาน้อยกว่าหกเดือนในการเปลี่ยนอาชีพ ตั้งแต่เริ่มต้น bootcamp ไปจนถึงหางานแรก
ข้อผิดพลาดในการเยื้องอื่นๆ ที่คุณอาจพบคือ:
- Unindent ไม่ตรงกับระดับการเยื้องอื่นๆ
- คาดว่าจะมีการเยื้องบล็อก
ตัวอย่างสถานการณ์
เราจะสร้างโปรแกรมที่วนรอบรายการซื้อที่ผู้ใช้ทำ และพิมพ์รายการทั้งหมดที่มากกว่า $25.00 ไปที่คอนโซล
ในการเริ่มต้น มากำหนดรายการซื้อ:
purchases = [25.50, 29.90, 2.40, 57.60, 24.90, 1.55]
ต่อไป เรากำหนดฟังก์ชันเพื่อวนรอบรายการซื้อของเรา และพิมพ์รายการมูลค่ามากกว่า 25 เหรียญไปยังคอนโซล:
def show_high_purchases(purchases): for p in purchases: if p > 25.00: print("Purchase: ") print(p)
show_high_purchases()
ฟังก์ชั่นยอมรับหนึ่งอาร์กิวเมนต์:รายการซื้อที่ฟังก์ชันจะค้นหา ฟังก์ชันจะวนซ้ำในรายการนี้และใช้ if
ใบแจ้งยอดเพื่อตรวจสอบว่าการซื้อแต่ละครั้งมีมูลค่ามากกว่า $25.00 หรือไม่
หากการซื้อมากกว่า $25.00 คำสั่ง Purchase:
ถูกพิมพ์ไปที่คอนโซล จากนั้นราคาของการซื้อนั้นจะถูกพิมพ์ไปที่คอนโซล มิฉะนั้นจะไม่มีอะไรเกิดขึ้น
ก่อนที่เราจะรันโค้ดของเรา ให้เรียกใช้ฟังก์ชันของเราและส่งรายการซื้อของเราเป็นพารามิเตอร์:
show_high_purchases(purchases)
เรียกใช้รหัสของเราและดูว่าเกิดอะไรขึ้น:
File "main.py", line 7 print(p) ^ IndentationError: unexpected indent
รหัสของเราทำงานไม่สำเร็จ
การแก้ปัญหา
เช่นเดียวกับข้อผิดพลาดของ Python เราควรอ่านข้อความแสดงข้อผิดพลาดแบบเต็มเพื่อดูว่าเกิดอะไรขึ้น ปัญหาดูเหมือนจะอยู่ในบรรทัดที่ 7 ซึ่งเป็นที่ที่เราพิมพ์มูลค่าของการซื้อ
if p > 25.00: print("Purchase: ") print(p)
เราได้เยื้อง print()
. ที่สองโดยไม่ได้ตั้งใจ คำแถลง. สิ่งนี้ทำให้เกิดข้อผิดพลาดเนื่องจาก print()
second ครั้งที่สองของเรา คำสั่งไม่ได้เป็นส่วนหนึ่งของกลุ่มรหัสอื่น มันยังคงเป็นส่วนหนึ่งของ if
. ของเรา คำแถลง.
เพื่อแก้ไขข้อผิดพลาดนี้ เราต้องตรวจสอบให้แน่ใจว่าเราเยื้อง print()
. ทั้งหมดของเราอย่างสม่ำเสมอ งบ:
if p > 25.00: print("Purchase: ") print(p)
ทั้ง print()
คำสั่งควรใช้การเยื้องระดับเดียวกันเพราะเป็นส่วนหนึ่งของ if
คำแถลง. เราได้ทำการแก้ไขข้างต้นนี้
มาลองรันโค้ดของเรากัน:
Purchase: 25.5 Purchase: 29.9 Purchase: 57.6
รหัสของเราพิมพ์การซื้อทั้งหมดที่มีมูลค่ามากกว่า $25.00 ไปยังคอนโซลได้สำเร็จ
บทสรุป
“IndentationError:เยื้องที่ไม่คาดคิด” ปรากฏขึ้นเมื่อคุณเยื้องบรรทัดโค้ดหลายครั้งเกินไป เพื่อแก้ไขข้อผิดพลาดนี้ ตรวจสอบให้แน่ใจว่าโค้ดทั้งหมดของคุณใช้การเยื้องที่สอดคล้องกัน และไม่มีการเยื้องที่ไม่จำเป็น
ตอนนี้คุณพร้อมที่จะแก้ไขข้อผิดพลาดนี้อย่างผู้เชี่ยวชาญ Python แล้ว!