Rumah > Artikel > pembangunan bahagian belakang > Mengapa Kod Saya Melemparkan Ralat Indeks Semasa Menjumlahkan Elemen Senarai?
Membetulkan Ralat Indeks Semasa Mengakses Elemen Senarai dalam Gelung
Percubaan untuk mengakses elemen senarai menggunakan indeks dalam gelung kadangkala boleh mengakibatkan ralat, seperti IndexError atau TypeError. Memahami struktur gelung yang betul adalah penting untuk menyelesaikan isu ini.
Perihalan Ralat:
Pertimbangkan kod berikut:
<code class="python">def sumAnArray(ar): theSum = 0 for i in ar: theSum = theSum + ar[i] return theSum</code>
Kod ini bertujuan untuk menjumlahkan nilai senarai. Walau bagaimanapun, ia menimbulkan IndexError apabila dijalankan.
Operasi Gelung:
Apabila menggunakan gelung for dengan objek boleh lelar seperti senarai, pembolehubah gelung (i dalam ini case) mewakili elemen semasa yang boleh dilelang. Dalam kod yang diberikan, gelung berulang ke atas elemen ar, dengan saya mengambil nilai setiap elemen.
Analisis Ralat:
Dalam kod di atas, ralat berlaku apabila cuba mengakses ar[i], yang cuba mendapatkan semula elemen ar yang sepadan dengan nilai i. Walau bagaimanapun, dalam gelung for dengan iterable, i mewakili elemen itu sendiri, bukan indeksnya. Percubaan untuk mengindeks ar menggunakan i secara langsung akan mengakibatkan IndexError jika i berada di luar julat (iaitu, lebih besar daripada atau sama dengan panjang senarai).
Gelung Betul:
Untuk menyelesaikan ralat ini, gelung harus diubah suai untuk mengakses elemen senarai dengan betul:
<code class="python">for i in ar: theSum = theSum + i</code>
Versi ini berulang ke atas elemen dalam senarai dan menambah nilai setiap elemen pada jumlah, mengelakkan indeks -ralat yang berkaitan.
Penyelesaian Alternatif:
Pendekatan alternatif untuk menggelungkan elemen senarai dan mengaksesnya mengikut indeks ialah menggunakan julat dan bukannya mengulangi senarai itu sendiri:
<code class="python">for i in range(len(ar)): theSum = theSum + ar[i]</code>
Pendekatan ini memastikan bahawa saya mengambil semua nilai indeks yang sah untuk ar, menghalang ralat pengindeksan.
Atas ialah kandungan terperinci Mengapa Kod Saya Melemparkan Ralat Indeks Semasa Menjumlahkan Elemen Senarai?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!