Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

Python IndentationError:โซลูชันการเยื้องที่ไม่คาดคิด

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 แล้ว!