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

Python TabError:การใช้แท็บและช่องว่างที่ไม่สอดคล้องกันในการเยื้อง Solution

คุณสามารถเยื้องโค้ดโดยใช้ช่องว่างหรือแท็บในโปรแกรม Python หากคุณพยายามใช้ทั้งสองอย่างรวมกันในกลุ่มโค้ดเดียวกัน คุณจะพบข้อผิดพลาด “TabError:การใช้แท็บและการเว้นวรรคในการเยื้องไม่สอดคล้องกัน”

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

TabError:การใช้แท็บและการเว้นวรรคในการเยื้องไม่สอดคล้องกัน

ในขณะที่คู่มือสไตล์ Python บอกว่าการเว้นวรรคเป็นวิธีที่ต้องการในการเยื้องเมื่อเขียนโค้ดใน Python คุณสามารถใช้ช่องว่างหรือแท็บได้

การเยื้องมีความสำคัญใน Python เนื่องจากภาษาไม่ได้ขึ้นอยู่กับไวยากรณ์เช่นวงเล็บปีกกาเพื่อระบุว่าบล็อกของโค้ดเริ่มต้นและสิ้นสุดที่ใด เยื้องบอก Python ว่าโค้ดใดเป็นส่วนหนึ่งของบล็อคโค้ดใด

พิจารณาโปรแกรมต่อไปนี้:

numbers = [8, 7, 9, 8, 7]

def calculate_average_age():
average = sum(numbers) / len(numbers)
print(average)

หากไม่มีการเยื้อง เป็นไปไม่ได้ที่จะรู้ว่าโค้ดบรรทัดใดควรเป็นส่วนหนึ่งของฟังก์ชัน calc_average_age และโค้ดบรรทัดใดที่เป็นส่วนหนึ่งของโปรแกรมหลัก

คุณต้องยึดติดกับการใช้ช่องว่างหรือแท็บ อย่าผสมแท็บและช่องว่าง การทำเช่นนี้จะทำให้ล่าม Python สับสนและทำให้เกิดข้อผิดพลาด “TabError:การใช้แท็บและการเว้นวรรคในการเยื้องไม่สอดคล้องกัน”

ตัวอย่างสถานการณ์

เราต้องการสร้างโปรแกรมที่คำนวณมูลค่ารวมของการซื้อที่ร้านโดนัท ในการเริ่มต้น ให้กำหนดรายการซื้อ:

81% ของผู้เข้าร่วมกล่าวว่าพวกเขารู้สึกมั่นใจมากขึ้นเกี่ยวกับโอกาสในการทำงานด้านเทคโนโลยีหลังจากเข้าร่วม bootcamp จับคู่กับ Bootcamp วันนี้

ผู้สำเร็จการศึกษาจากหลักสูตร bootcamp โดยเฉลี่ยใช้เวลาน้อยกว่าหกเดือนในการเปลี่ยนอาชีพ ตั้งแต่เริ่มต้น bootcamp ไปจนถึงหางานแรก

purchases = [2.50, 4.90, 5.60, 2.40]

ต่อไป เราจะกำหนดฟังก์ชันที่คำนวณผลรวมของรายการ "การซื้อ":

def calculate_total_purchases(purchases):
	total = sum(purchases)
    return total

ฟังก์ชันของเรายอมรับพารามิเตอร์เดียว:รายการซื้อซึ่งมูลค่ารวมที่เราต้องการคำนวณ ฟังก์ชันส่งคืนค่ารวมของรายการที่เราระบุเป็นพารามิเตอร์

เราใช้วิธี sum() เพื่อคำนวณผลรวมของตัวเลขในรายการ "การซื้อ"

หากคุณคัดลอกข้อมูลโค้ดนี้ลงในโปรแกรมแก้ไขข้อความ คุณอาจสังเกตเห็นว่าบรรทัด "ผลตอบแทนรวม" ของโค้ดถูกเยื้องโดยใช้ช่องว่างในขณะที่โค้ด "รวม =ผลรวม (การซื้อ)" จะใช้แท็บสำหรับการเยื้อง นี่คือความแตกต่างที่สำคัญ

ถัดไป เรียกใช้ฟังก์ชันของเราและพิมพ์ค่าที่ส่งคืนไปยังคอนโซล:

total_purchases = calculate_total_purchases(purchases)
print(total_purchases)

รหัสของเราเรียก calculate_total_purchases() ฟังก์ชันคำนวณมูลค่ารวมของการซื้อทั้งหมดที่ทำที่ร้านโดนัท จากนั้นเราพิมพ์ค่านั้นไปที่คอนโซล เรียกใช้รหัสของเราและดูว่าเกิดอะไรขึ้น:

  File "test1.py", line 5
	return total
           	^
TabError: inconsistent use of tabs and spaces in indentation

รหัสของเราส่งคืนข้อผิดพลาด

การแก้ปัญหา

เราใช้ช่องว่างและแท็บเพื่อเยื้องโค้ดของเรา ในโปรแกรม Python คุณควรใช้วิธีใดวิธีหนึ่งในการเยื้องนี้

ในการแก้ไขโค้ดของเรา เราจะเปลี่ยนฟังก์ชันเพื่อให้เราใช้เว้นวรรคเท่านั้น:

def calculate_total_purchases(purchases):
	total = sum(purchases)
    return total

รหัสของเราใช้ช่องว่าง 4 ช่องสำหรับการเยื้อง มาเริ่มโปรแกรมของเราด้วยการเยื้องใหม่ของเรา:

15.4

โปรแกรมของเราคำนวณมูลค่ารวมของการซื้อโดนัทได้สำเร็จ

ในตัวแก้ไข IDLE คุณสามารถลบการเยื้องสำหรับบล็อกของโค้ดโดยทำตามคำแนะนำเหล่านี้:

  • เลือกรหัสที่คุณต้องการลบการเยื้อง
  • คลิก “เมนู” -> “รูปแบบ” -> “เลิกแท็บภูมิภาค”
  • แทรกประเภทของการเยื้องที่คุณต้องการใช้

นี่เป็นวิธีที่สะดวกในการแก้ไขการจัดรูปแบบในเอกสาร สมมติว่าคุณกำลังใช้ตัวแก้ไข IDLE เครื่องมือแก้ไขอื่นๆ มากมาย เช่น Sublime Text มีวิธีการของตนเองในการเปลี่ยนการเยื้องในไฟล์

บทสรุป

ข้อผิดพลาด Python “TabError:การใช้แท็บและการเว้นวรรคในการเยื้องไม่สอดคล้องกัน” เกิดขึ้นเมื่อคุณพยายามเยื้องโค้ดโดยใช้ทั้งช่องว่างและแท็บ

คุณแก้ไขข้อผิดพลาดนี้โดยยึดช่องว่างหรือแท็บในโปรแกรมและแทนที่แท็บหรือช่องว่างใด ๆ ที่ไม่ได้ใช้วิธีการเยื้องที่คุณต้องการ ตอนนี้คุณมีความรู้ที่จำเป็นในการแก้ไขข้อผิดพลาดนี้เหมือนโปรแกรมเมอร์มืออาชีพแล้ว!