Python’da Döngüler
Döngüler programlama dillerinde çok fazla kullanım alanı olan ve bir kodu birden fazla kez çalıştırmanızı sağlayan ifadelerdir. Kodun kaç kez çalıştırılacağını belirlemeniz için de bir koşul taşırlar. Bu koşul sağlandığı sürece döngü içindeki kod tekrar tekrar çalıştırılmaya devam eder.
Python temel olarak 2 döngüye sahiptir; While Döngüsü ve For Döngüsü
While Döngüsü
Bir kod bloğunu koşul sağlandığı sürece çalıştıran döngülerden ilki While Döngüsüdür. While döngüsünde başlangıç değerini taşıyan bir değişkene ve döngü içindeki kodlar içinde de bu değişken değerini değiştirmeye ihtiyacımız var. Yoksa döngüler de ki en büyük korkumuz ile yüzleşmek durumunda kalırız; sonsuz döngü. Bir noktada döngünün sona ereceği bir önlem almalıyız, yoksa döngü hiç durmaz ve döngü dışına çıkamayacağı, tekrar tekrar aynı kod çalıştırılmaya devam edeceği için programımız kilitlenir.
Örneğin, telefon arama klavyesinde hangi rakamların olduğunu döngü olmadan kodlamaya kalkarsak şöyle bir kod karşımıza çıkar;
print("0") print("1") print("2") print("3") print("4") print("5") print("6") print("7") print("8") print("9")
Çıktı:
0 1 2 3 4 5 6 7 8 9
Ancak döngü kullanarak bunu çok daha kolay bir şekilde yazabiliriz;
x=0 while x<10: print(x) x += 1
Çıktı:
0 1 2 3 4 5 6 7 8 9
Buradaki kodumuzu Türkçe ifade etmek gerekirse;
x=0 – x Başlangıç değerimiz sıfır olmak üzere
while x<10: x değeri 10’dan küçük iken
print(x) x değerini ekrana yazdır
x +=1 x’in değerini bir artır ve aynı işlemi tekrar et.
Yani; başlangıç değeri( x=0 ) olan sıfırdan başlıyoruz ve bu değeri ekrana yazdırıyoruz( print(x) ), başlangıç değerini bir artırıyoruz( x += 1 ) ve ekrana yazdırmaya devam edyoruz. Ta ki x 10 olana kadar. x 10 olduğunda ( while x<10 ) koşulumuz sağlanmadığı için döngü içindeki kodlar artık çalıştırılmıyor ve işlem sona eriyor.
Tüm bu kodda yer alan en önemli 2 parça; döngüyü oluşturan koşul ve döngü her çalıştığında başlangıç değerini artırarak koşula ulaşılmasını sağlayan ifadedir. Çünkü döngünün sınırlı sayıda tekrar etmesini isteriz. Bu iki ifadeyi yanlış planladığınızda ya da yazdığınızda sonsuz döngü oluşturursunuz ki bu da bir programda en istenmeyen hataların başında gelir.
Döngü koşulu sağlanmadığında da bir işlem gerçekleştirilmesini isterseniz tıpkı koşullu ifadelerde olduğu gibi bir else kod bloğunu kullanabilirsiniz;
x=0 while x<10: print(x) x += 1 else: print("Döngü koşulları dışına çıkıldı")
Çıktı:
0 1 2 3 4 5 6 7 8 9 Döngü koşulları dışına çıkıldı
else bloğunda yer alan kod hem başlangıç değeri döngü koşuluna uymadığında, hem de döngü çalıştırıldıktan sonra döngü koşuluna uymadığında çalıştırılır. Başlangıç değerini örnek koşulu sağlamayacak bir rakam, örneğin 11 olarak verdiğinizde döngü çalıştırılmadan sadece else kod bloğunun çalıştırıldığını görebilirsiniz.
Eğer döngü koşulu tamamlanmamış ve halen sağlanıyor olsa da, döngünün çalışması esnasında belirli bir durum ortaya çıktığında döngüyü sonlandırmak isterseniz bunun için de bir koşul belirleyebilirsiniz ve koşula break anahtar kelimesini vererek döngünün sonlanmasını sağlayabilirsiniz.
x=0 while x<10: print(x) if x == 7: break x += 1 print("")
Çıktı:
0 1 2 3 4 5 6 7
İlk örneğimiz ile aynı olan bu örneğimizde döngü koşul değişkenini artıran ifade değişken değerini 7 yaptıktan ve işlem tamamlandıktan sonra if koşullu ifadesi ile döngünün sonlandırılmasını sağlıyoruz. Eğer işlem gerçekleştirilmeden sonlandırılmasını isteseydik işlemi gerçekleştiren kodların öncesine de yerleştirebilirdik;
x=0 while x<10: if x ==7: break print(x) x += 1
Çıktı:
0 1 2 3 4 5 6
Eğer yukarıdaki gibi belirli bir koşul gerçekleştirildiğinde işlemin durdurulmasını, ancak döngünün devam ettirilerek bir sonraki işlemin gerçekleştirilmesini istersek, bu durum içinde bir koşul belirleyebilir ve o koşul için yapılan işlemin atlanarak sonraki işlemden devam edilmesini sağlayabiliriz. bunun için de koşulumuza continue anahtar kelimesini veririz;
x=0 while x<10: x += 1 if x ==7: continue print(x)
Çıktı:
1 2 3 4 5 6 8 9 10
Belirlediğiniz koşul sağlanıp continue anahtar kelimesi ile karşılaşıldığında döngünün başına dönülmesini sağlar. Bu nedenle işlemin koşuldan sonraya taşındığına, döngünün devam etmesi için başlangıç değerini artıran ifadenin de döngünün başına taşındığına özellikle dikkat ediniz. Ayrıca başlangıç değeri döngünün başında artırıldığı için başlangıç değerinin yazdırılmadan artırıldığına ve böylece daha önce 0’dan başlayan bir sonuç elde ederken artık 1’den başlayan bir sonuç elde ettiğimize de dikkat ediniz. Eğer daha önceki örneklerdeki sonucu almak ama belirli koşulda işlemin atlanmasını istersek, yani bu örnek için sıfırdan başlayan sonuçlar almak istersek, başlangıç değerini de değiştirmemiz gerekir.
x=-1 while x<10: x += 1 if x ==7: continue print(x)
Çıktı:
0 1 2 3 4 5 6 8 9 10
Bir diğer dikkat edilmesi gereken husus da; işlem artık başlangıç değeri artırıldıktan sonra gerçekleştiği için while döngüsü koşulumuz 10’dan küçük değerler için işlemi çalıştırırken, artık değer 10 olduğunda da işlemi gerçekleştirip koşulun sağlanıp sağlanmadığını daha sonra kontrol ettiği için sonuçlar arasında 10 değeri de yer alıyor. Eğer bunun gerçekleşmesini de istemiyorsak, while döngüsü koşulunu da yeniden düzenlemeliyiz;
x=-1 while x<9: x += 1 if x ==7: continue print(x)
Çıktı:
0 1 2 3 4 5 6 8 9
for Döngüsü
for döngüsü de tıpkı while döngüsü gibi bir işlemin belirli bir koşul sağlandığı sürece birden fazla kez tekrarlı çalıştırılmasını sağlar.
Python’da for döngüsünü kullanırken bir kod bloğunu belirli bir sayıda çalıştırmak için range() fonksiyonundan faydalanırız. range() fonksiyonu bize belirli bir başlangıç ve bitiş noktası olan, belirli artış değerine sahip sayısal değerlerden oluşan bir dizi aralığı tanımlar.
Bu bakımdan while döngüsüne benzerdir. While döngüsünün ilk örneğinde yazdığımız kodu;
x=0 while x<10: print(x) x += 1
for döngüsü ile şu şekilde yazabiliriz;
for x in range(0, 10, 1): print(x)
Çıktı:
0 1 2 3 4 5 6 7 8 9
While döngüsünde başlangıç değerini x=0 şeklinde bir değişken olarak tanımlamış, bitiş değerini x<10 olarak tanımlamış ve artış aralığını da x += 1 ifadesiyle birer birer artacak şekilde belirlemiştik. for döngüsünde ise aynı ifadeyi range() fonksiyonu ile kuruglayıp; range(0, 10, 1) şeklinde ifade ediyoruz. Aynı ifadeyi başlangıç değeri varsayılan olarak 0 ve artış aralığı 1 kabul edildiği için kısa bir şekilde range(10) olarak da yazabilirdik.
Python’da for döngüsünün asıl kullanım alanı; veri koleksiyonları üzerinde çalışmayı kolaylaştırmasıdır. Diğer programlama dillerindeki for döngüsüne çok benzemez ama bunun yerine nesne tabanlı programlamadaki bir yineleme(iterasyon) metodu gibi davranır.
for döngüsü ile bir kod bloğunu veri koleksiyonunda yer alan her bir veriyi girdi alarak çalıştırabilirsiniz.
listem=["Python","PHP","Javascript"] for x in listem: print(x)
Çıktı:
Python PHP Javascript
Python’da; Listeler, demetler, kümeler ve sözlükler gibi metinler de karakterlerden oluşan veri koleksiyonlarıdır.
metin="Python" for x in metin: print(x)
Çıktı:
P y t h o n
for döngüsünde else kod bloğunun kullanımı while döngüsünden küçük bir farklılık gösterir. Döngü sonlandırıldıktan sonra çalıştırılmasını istediğimiz bir kod bloğu var ise, else kod bloğunu kullanırız;
listem=["Python","PHP","Javascript"] for x in listem: print(x) else: print("Web programlamada kullanabileceğiniz programlama dilleridir.")
Çıktı:
Python PHP Javascript Web programlamada kullanabileceğiniz programlama dilleridir.
for döngülerinde de tıpkı while döngüsünde olduğu gibi belirli bir koşul gerçekleştiğinde döngüyü sonlandırmak isterseniz koşula break anahtar kelimesini vererek döngünün sonlanmasını sağlayabilirsiniz.
listem=["Python","PHP","Javascript"] for x in listem: print(x) if x == "PHP": break
Çıktı:
Python PHP
Eğer işlem gerçekleşmeden önce döngünün sonlandırılmasını isterseniz döngüyü durduran koşulu işlemi gerçekleştiren kodlardan önce yerleştirebilirsiniz;
listem=["Python","PHP","Javascript"] for x in listem: if x == "PHP": break print(x)
Çıktı:
Python
Eğer while döngüsündeki gibi belirli bir koşulda döngünün veriyi işlemeyi atlaması için continue anahtar kelimesinden faydalanabilirsiniz;
listem=["Python","PHP","Javascript"] for x in listem: if x == "PHP": continue print(x)
Çıktı:
Python Javascript
İç İçe yuvalanmış döngülerde programlamada sıkça kullanılan ifadelerdir. İç içe döngünün dışında yer alan döngünün her bir çalışmasında içindeki döngü tam çalışma gerçekleştirir.
for döngüsü için bir örnekte bunu görelim;
en = ["80", "100", "120"] boy = ["200", "220", "240"] print("Ürün Ölçüleri:") for x in en: for y in boy: print(x,"x", y)
Çıktı:
Ürün Ölçüleri: 80 x 200 80 x 220 80 x 240 100 x 200 100 x 220 100 x 240 120 x 200 120 x 220 120 x 240