IndexErrors, Python’daki en yaygƒ±n çalƒ±≈üma zamanƒ± hatasƒ± turlerinden biridir. Var olmayan bir Python listesi içindeki bir dizin deƒüerine eri≈ümeye çalƒ±≈ütƒ±ƒüƒ±nƒ±zda bunlar ortaya 烱kar. √áoƒüu durumda, dizin hatalarƒ±nƒ±n ç√∂zulmesi kolaydƒ±r. Sadece biraz hata ayƒ±klama yapmanƒ±z gerekiyor.
Bu eƒüitimde, "indexerror: liste dizini aralƒ±k dƒ±≈üƒ±nda‚" hata. Nasƒ±l çalƒ±≈ütƒ±ƒüƒ±nƒ± tartƒ±≈üacaƒüƒ±z ve ç√∂zebilmemiz için bu hatanƒ±n mevcut olduƒüu bir √∂rnek senaryo uzerinde yuruyeceƒüiz.
Sorun: indexerror: list index out of range
As her zaman, ba≈ülamak için en iyi yer hata mesajƒ±mƒ±zƒ± okumak ve ayrƒ±≈ütƒ±rmaktƒ±r:
Bu hata mesajƒ± bize, dizin konumu olmayan bir dizi içindeki bir deƒüere eri≈ümeye çalƒ±≈ütƒ±ƒüƒ±mƒ±zƒ± bildirir.
Python’da dizin numaralarƒ± 0’dan ba≈ülar. ƒ∞≈üte tipik bir Python dizisi:
Bu dizi uç deƒüer içerir. ƒ∞lk liste √∂ƒüesi Java, 0 dizin deƒüerine sahiptir. Sonraki her deƒüerin, bir √∂ncekinden daha buyuk bir dizin numarasƒ± 1 vardƒ±r. √ñrneƒüin, Python’un dizin deƒüeri 1’dir.
ƒ∞ndeks konumu 3’teki bir √∂ƒüeye eri≈ümeye çalƒ±≈üƒ±rsak, bir hata d√∂ndurulur. Dizimizdeki son √∂ƒüenin dizin deƒüeri 2’dir.
Örnek Senaryolar (ve Çözumler)
"liste indeksi aralƒ±k dƒ±≈üƒ±nda‚" hata ortaya 烱kƒ±yor:
Katƒ±lƒ±mcƒ±larƒ±n %81’i, bir eƒüitim kampƒ±na katƒ±ldƒ±ktan sonra teknik i≈ü beklentileri konusunda daha emin hissettiklerini belirtti. Bugun bir eƒüitim kampƒ± ile e≈üle≈ütirin.
Ortalama bir eƒüitim kampƒ± mezunu, bir eƒüitim kampƒ±na ba≈ülamaktan ilk i≈üini bulmaya kadar, kariyer geçi≈üinde altƒ± aydan daha az zaman harcadƒ±.
İkisini de inceleyelim. bu senaryolardan bazıları.
Listeler Sıfırdan İndekslenir
A≈üaƒüƒ±daki program, "programming_languages‚" Python kabuƒüuna:
√ñnce iki deƒüi≈üken tanƒ±mladƒ±k. "programming_languages‚" deƒüi≈ükeni konsola yazdƒ±rmak istediƒüimiz dillerin listesini saklar. "count‚" konsola kaç deƒüer yazdƒ±rdƒ±ƒüƒ±mƒ±zƒ± izlemek için kullanƒ±lƒ±r.
Sonra, bir while d√∂ngusu. Bu d√∂ngu, "programming_languages‚" "count‚" içinde saklanan dizin konumunda. Ardƒ±ndan, "count‚" deƒüi≈üken. Bu d√∂ngu, "count‚" artƒ±k "programming_languages‚" list.
Kodumuzu çalƒ±≈ütƒ±rmayƒ± deneyelim:
Listemizdeki tum deƒüerler konsola yazdƒ±rƒ±lƒ±yor ancak bir hata olu≈üuyor. Sorun ≈üu ki, d√∂ngumuz "count‚" artƒ±k "programming_languages‚" uzunluƒüundan kuçuk veya ona e≈üit deƒüil. Bu, son yinelemenin ≈üunlarƒ± kontrol edeceƒüi anlamƒ±na gelir:
Bu deƒüer mevcut deƒüil. Bu bir IndexError’a neden olur. Bu sorunu ç√∂zmek için operat√∂rumuzu <= yerine < olarak deƒüi≈ütirebiliriz. Bu, listemizin yalnƒ±zca "count‚" artƒ±k "programming_languages‚" uzunluƒüundan daha az deƒüil. Bu revizyonu yapalƒ±m:
Kodumuz şunu döndurur:
Hatayƒ± ba≈üarƒ±yla ç√∂zduk! D√∂ngumuz artƒ±k programlama_dillerini yazdƒ±rmaya çalƒ±≈ümƒ±yor[3]. "count‚" 3’e e≈üittir çunku 3, "programming_languages‚" uzunluƒüundan kuçuk deƒüildir.