Döngüler # 8 - Python Dersleri (Tutorials)
Python programlama derslerinin bu bölümünde while() döngü yapısı ile devam edeceğiz. Bir önceki dersimizde while döngü yapısını, for döngü yapısından ayıran noktalara değinmiştik.
while döngüsünün genel yapısı hakkında konuşup çalışma mantığını görebileceğimiz bir uygulama yapmıştık.
Önceki dersleri takip etmemişseniz öncelikle onlara bakmanız tavsiye edilir. Bu dersimiz önceki derslerde öğrendiğimiz bilgiler üzerine bina edilecektir.
Şimdi ekrana 10 kez "Python" yazan bir programı while döngüsü kullanarak yazalım :
Uygulamamızda sayi adında bir değişken tanımlayıp ilk değer olarak 1 değerini atadık. Sonrasında while döngüsünün sorgu kısmına geldik.
sayi < 11
mi? sayi değişkenimizin değeri 1 olduğundan
1 < 11
sorgusu True vereceğinden koşul sağlandı ve while döngü bloğuna girildi. Ekrana bir kez "Python" yazıldıktan sonra
sayi = sayi + 1
kodu çalışarak sayi değişkenimizin değeri 2 yapıldı. while bloğunda başka kod olmadığından tekrar sorgu ekranına gelindi.
sayi < 11
mi? 2 < 11 sorgusu True olduğundan ekrana bir kez daha "Python" yazdırıldı. ve sonrasındaki kod ile de sayi değişkeninin değeri 1 artırılarak 3 yapıldı ve tekrar sorgu ekranına gelindi.
Bu şekilde en son sayi değişkeninin değeri 10 olana kadar devam edecektir. Sayi değişkenimizin değeri 10 olduğunda 10 < 11 şartı sağlandığından 10.kez ekrana "Python" yazılacak ve sonrasında
sayi = sayi + 1
kodu çalışarak sayi değişkenimizin değeri 11 olacaktır. Sorgu ekranına gelindiğinde 11 < 11 olmadığından yani şart sağlanmadığından döngüye girilmeyecek ve while blogundan sonraki
print("\nDöngü sonlandırılmıştır.")
kodu çalışacaktır. Çıktımız aşağıdaki gibidir :
Görüldüğü gibi while döngüsünde şart sağlandığı sürece while bloğu içerisindeki kodlar çalıştırılmış şart sağlanmadığında döngüden çıkılmıştır.
for döngüsü ise dizisel yapılar içinde gezinmek için kullanılır ve dizi eleman sayısı kadar döner. Örnek üzerinde görelim :
myList listemiz 5 elemanlı olduğundan for döngüsü 5 kez çalışmış ve her defasında bir elemanın değerini ekrana yazdırmıştır.
Peki for döngüsü ile yapılan her bir liste elemanını ekrana yazdırma işlemini while döngüsü ile yapabilir miyiz? Deneyelim:
Örneğimizdeki liste, bir önceki for örneğindeki aynı listedir.
myList adında 5 elemanlı bir liste ve liste elemanları arasında gezmek için de index adında tam sayı bir değişken tanımladık.
Tam sayı değişkenin ilk değerinin sıfır olmasının sebebi liste elemanlarının index değerlerinin sıfırdan başlamasıdır.
Sonrasında while döngüsüne girmeden önce koşul kısmına geçtik :
index < len(myList)
len() metodu bize myList listesinin eleman sayısını döndürecektir. Aslında sorgumuz bu haliyle
index < 5
demek istemektedir.
0 < 5
koşulu doğru olduğundan while döngüsüne girilmiştir. while döngü bloğunda bizi aşağıdaki gibi bir print() metodu karşılar :
print(index + 1, ".eleman : " , myList[index])
kodundaki myList[index] ifadesi aslında basit bir şekilde liste elemanlarına erişmek için kullanılır. Bu ifadenin
myList[0]
ifadesinden farkı yoktur. Sadece index kısmına değişken konulduğundan her defasında bu değer değişecektir.
index = index +1
kodu ile de her defasında bir sonraki liste elemanına erişilmek istenmiştir.
Bu algoritmayla bu while döngüsü index değeri en son 5 olana kadar devam edecektir. index değeri 5 olduğundan son kez while sorgusuna gelecek ve
5 < 5
olmadığından döngü şartı sağlanmayacak ve döngüden çıkılacaktır. Döngü sonundaki satırdan devam edecek yani print() metodunun olduğu satır işleyecek ve program sonlanacaktır.
Sonuç olarak diyebiliriz ki for döngüsünün yaptığı işlemi while döngüsü ile de yapabilirdik ancak ne kadar efor sarfettiğimiz ortada. Bunu kodlara bakarak siz de söyleyebilirsiniz.
for döngüsü ile tek satırda yaptığımız işlemleri while ile en az 3 satırda yapmamız gerekti. Bu örneğimizle beraber sanırım iki döngü arasındaki fark anlaşılmıştır.
Şimdilik bu kadar.
Umarım faydalı bir çalışma olmuştur.
Teşekkürler.
Kaynak belirtilmeyen görseller bana aittir. The pictures without source in the post is belong to me
You got a 96.77% upvote from @minnowvotes courtesy of @elektroyazilim!