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

Python IndexError:ดัชนี tuple อยู่นอกช่วง โซลูชัน

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

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

การวิเคราะห์ปัญหา:IndexError:ดัชนีทูเพิลอยู่นอกช่วง

ทูเปิลถูกสร้างดัชนีโดยเริ่มจาก 0 ทุกค่าที่ตามมาในทูเพิลถูกกำหนดเป็นตัวเลขที่มากกว่าค่าสุดท้ายหนึ่งค่า ลองดูที่ทูเพิล:

birds = ("Robin", "Collared Dove", "Great Tit", "Goldfinch", "Chaffinch")

ทูเพิลนี้มีค่าห้าค่า แต่ละค่ามีหมายเลขดัชนีของตัวเอง:

โรบิน นกพิราบคอปก หัวนมโต นกฟินช์ แชฟฟินช์
1 2 3 4

ในการเข้าถึงค่า “Robin” ในทูเพิลของเรา เราจะใช้รหัสนี้:

print(birds[0])

รหัสของเราส่งคืน:Robin เราเข้าถึงค่าที่ตำแหน่งดัชนี 1 และพิมพ์ไปยังคอนโซล เราสามารถทำได้ด้วยค่าใดก็ได้ในรายการของเรา

หากเราพยายามเข้าถึงรายการที่อยู่นอกทูเพิลของเรา จะเกิดข้อผิดพลาด

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

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

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

มาเขียนโปรแกรมที่พิมพ์ค่าสามค่าสุดท้ายในทูเพิลกัน tuple ของเรามีรายชื่อเมืองในสหราชอาณาจักร เริ่มต้นด้วยการประกาศทูเพิล:

cities = ("Edinburgh", "London", "Southend", "Bristol", "Cambridge")

ต่อไป เราพิมพ์สามค่าสุดท้าย เราจะทำสิ่งนี้โดยใช้ for loop และ range() คำแถลง. คำสั่ง range() จะสร้างรายการตัวเลขระหว่างช่วงหนึ่งๆ เพื่อให้เราสามารถวนซ้ำรายการในรายการของเราที่มีหมายเลขดัชนีอยู่ในช่วงนั้น

นี่คือรหัสสำหรับลูปของเรา:

for i in range(3, 6):
	print(birds[i])

มาลองรันโค้ดของเรากัน:

Goldfinch
Chaffinch
Traceback (most recent call last):
  File "main.py", line 4, in <module>
	print(birds[i])
IndexError: tuple index out of range

รหัสของเราพิมพ์ค่า Goldfinch และ Chaffinch นี่คือสองค่าสุดท้ายในรายการของเรา ไม่พิมพ์ค่าที่สาม

การแก้ปัญหา

range()ของเรา คำสั่งสร้างรายการตัวเลขระหว่างช่วง 3 และ 6 รายการนี้รวม 3 และไม่รวม 6 รายการของเราจัดทำดัชนีได้ถึง 4 เท่านั้นซึ่งหมายความว่าลูปของเราจะพยายามเข้าถึงนกที่ตำแหน่งดัชนี 5 ในทูเพิลของเราเพราะ 5 อยู่ในช่วงของเรา

มาดูกันว่าจะเกิดอะไรขึ้นหากเราพยายามพิมพ์นก[5] ทีละตัว:

print(birds[5])

รหัสของเราส่งคืน:

Traceback (most recent call last):
  File "main.py", line 3, in <module>
	print(birds[5])
IndexError: tuple index out of range

มีข้อผิดพลาดเดียวกัน นี่เป็นเพราะเราพยายามเข้าถึงรายการในรายการของเราราวกับว่ามันถูกสร้างดัชนีจาก 1 Tuples ถูกสร้างดัชนีจาก 0

เพื่อแก้ไขข้อผิดพลาดนี้ เราต้องแก้ไข range() . ของเรา คำสั่งจึงพิมพ์เฉพาะสามรายการสุดท้ายในทูเพิลของเรา ช่วงของเราควรไปจาก 2 ถึง 5:

for i in range(2, 5):
	print(birds[i])

มาเรียกใช้โค้ดที่แก้ไขแล้วดูว่าเกิดอะไรขึ้น:

Great Tit
Goldfinch
Chaffinch

รหัสของเราพิมพ์สามรายการสุดท้ายในรายการของเราได้สำเร็จ ขณะนี้ เรากำลังเข้าถึงรายการที่ตำแหน่งดัชนี 2, 3 และ 4 ตำแหน่งทั้งหมดถูกต้อง ดังนั้นโค้ดของเราจึงใช้งานได้

บทสรุป

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

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

ตอนนี้คุณพร้อมที่จะแก้ไขข้อผิดพลาดของ Python อย่างผู้เชี่ยวชาญแล้ว!