Python’da döngülerden, yani içerisindeki kod bloğunu, belirtilen şart gerçekleştikçe tekrar tekrar çalıştıran komutlardan bahsetmeye başlamıştım. Bu kategoride bir önceki yazımda Python While Döngüsü hakkında bilgiler paylaşmış, Python While Döngüsü komutları ile ilgili detaylı bilgi vermiş ve örnekler paylaşmıştım. Şimdi sıra, Python For Döngüsü konusunda.
Python For Döngüsü
While gibi bir döngü olan Python for döngüsü, temelde aynı işlevi görür: içerisinde barındırdığı kod bloğunu, belirtilen koşula göre tekrar tekrar çalıştırır. Peki, while döngüsü ve for döngüsü arasındaki fark nedir?
While döngüsü ve for döngüsü arasındaki fark tam olarak şudur:
- Python while döngüsü, bir koşulun boolean değerini kontrol eder, yani çıktısının TRUE mu yoksa FALSE mu olduğuna bakar. Kontrol ettiği koşuldan TRUE sonucu aldığı sürece, içerisindeki kod bloğunu tekrar tekrar çalıştırır. FALSE sonucu aldığında, döngüyü durdurur.
- Python for döngüsü ise döngüye girebilecek veri tiplerinin (az sonra detay vereceğim) içerisindeki her bir öge (item) üzerinde ayrı ayrı işlem yapar.
“Döngüye girebilecek veri tipleri” konusunu açıkladıktan sonra, bir örnek vereceğim.
Karakter dizileri, döngüye girebilecek veri tiplerinden biridir. For döngüsünü bir karakter dizisi üzerinde kullandığınızda döngü, karakter dizisindeki her bir karakter üzerinde ayrı ayrı işlem yapar. Sayı veri tipi ise döngüye girebilecek bir veri tipi değildir, bu yüzden sayı değerine sahip değişkenler ya da sayılar üzerinde for döngüsü kurulamaz.
Python For Döngüsü Örnekleri
Aşağıdaki temel örnekte Python’a şu komutu veriyoruz:
degisken içerisindeki her bir ögeyi degisken_item olarak tanımla ve her birinin üzerinde islem yap:
for degisken_item in degisken islem
ad değişkeninin içerisindeki her bir ögeyi harf olarak tanımla ve her birini ekrana yazdır:
ad = "Can Atasever" for harf in ad: print(harf)
Bu örneğin çıktısı, aşağıdaki gibi olacak:
C a n A t a s e v e r
Gördüğünüz gibi for döngüsü, ad değişkenine bağlı karakter dizisinin her bir ögesi üzerinde print() işlemini çalıştırdı ve tüm ögelerin üzerinde bu işlemi yaptıktan sonra sonlandı.
Belirtilen sayının karesini hesaplayan basit bir hesap makinesi kodlayalım:
rakamlar = "1234567890" print(""" Girilen bir tam sayının karesini hesaplayan basit bir hesap makinesi. Hesap makinesinden çıkmak için q tuşuna basabilirsiniz. """) while True: tamsayi = input("""Karesini hesaplamak istediğiniz tam sayıyı girin: """) if tamsayi == "e": print("Hesap makinesinden çıkılıyor.") break for i in tamsayi: if i not in rakamlar: print("Bu hesaplama yalnızca tam sayılarla yapılabilir! Rakam olmayan bir karakter girdiniz.") quit() karesi = int(tamsayi)**2 print("Belirttiğiniz sayının karesi: ", karesi)
- Kullanıcıdan input() fonksiyonuyla bir tam sayı girmesini istedik, girdiği değeri de tamsayi değişkenine atadık.
- Ardından kullanıcının girdiği değerin e olup olmadığını if ile kontrol ettik, e ise hesap makinesinden break komutuyla çıktık (exit).
- Girilen değer e değilse, for döngüsünü çalıştırdık:
- tamsayi değişkenindeki karakter dizisinin her bir karakterinin, başta tanımladığımız rakamlar değişkeninin bir ögesi olup olmadığını tek tek kontrol ettik:
- Herhangi bir öge rakamlar değişkeninin karakterleri içerisinde mevcut değilse bu, girilen değerin rakam harici bir değere sahip olduğunu (harf, özel karakter vs.) gösterir. Bu durumda da “Bu hesaplama yalnızca tam sayılarla yapılabilir! Rakam olmayan bir karakter girdiniz.” hatasını ekrana yazdırıp, döngüden çıktık.
- Eğer girilen değerdeki tüm karakterler rakamsa, for döngüsü içindeki if komutu her bir karakterin bir rakam olduğunu doğruladı ve kodumuz çalışmaya devam etti.
- tamsayi değişkenindeki karakter dizisinin her bir karakterinin, başta tanımladığımız rakamlar değişkeninin bir ögesi olup olmadığını tek tek kontrol ettik:
- karesi değişkenini tanımladık, kullanıcıdan alınan değeri integer’a çevirip, karesini aldık ve sonucu karesi değişkenine atadık.
- Sonucu yazdırdık.
For Döngüsü – Range
For döngüsü satırında kullanabileceğiniz bir işlev var: range
İngilizce’de “menzil, aralık” anlamına gelen range kelimesi, Python for döngüsü özelinde bir başlangıç ve son değer tanımlamaya yarar.
for i in range(5) print(i)
Çıktısı şöyle olacaktır:
0 1 2 3 4
Range işlevinde parantez içine 1 adet sayı girerseniz, işlev varsayılan olarak 0’dan başlar ve belirttiğiniz sayı defa döngüyü çalıştırır.
for i in range(2,5) print(i)
Çıktısı şöyle olacaktır:
2 3 4
Range işlevinde parantez içine 2 adet sayı girerseniz, ilk sayı başlangıç değeri olur ve döngü son sayıya kadar devam eder (son sayıya gelince döngü başlamadan durur, bu yüzden çıktıda 5 değerini görmüyoruz!)
for i in range(0,8,2) print(i)
Çıktısı şöyle olacaktır:
0 2 4 6
Range işlevinde parantez içine 3 adet sayı girerseniz, ilk sayı başlangıç değeri, ikinci sayı bitiş değeri ve 3. sayı işlemin kaçar kaçar ilerleyeceğini belirtir. Bu durumda ilk değerimiz 0 oldu ve 8 değerine gelene kadar 2’şer 2’şer atlayarak sayıları ekrana yazdırdık.