เช่นเดียวกับรายการ 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 อย่างผู้เชี่ยวชาญแล้ว!