Python’ da Döngüler

Python’ da herhangi bir programlama dilinde eğer bir işlemi birden fazla tekrar ettirmek istediğimizde kullandığımız yapılara döngüler denir. Yazdığınız bir program istediğiniz işlemi gerçekleştirdikten sonra yeniden çalıştırmak istediğinizde kapatıp tekrar açmanız gerekmektedir. Diğer yandan bir işlemi tekrarlı şekilde yapmak istediğimizde de döngüleri kullanırız. Örneğin; bir sınıftaki öğrencilerin ortalamasını hesaplayan program yaptığınızda her bir öğrencinin ortalaması hesaplandıktan sonra programı kapatıp açmanız gerekmektedir. Başka bir programda ise ekrana 1′ den 100′ e kadar olan sayıları ekrana yazdırmak istediğinizde hepsi için print kodunu kullanıp ekrana yazdırmanız gerekir. Döngüler ile bunları çok daha kısa kodlar ile yapabilirsiniz. Python’da döngüler konusunda for döngüsünü ve while döngüsünü kullanacağız.

Örnek: Ekrana 1′ den 5′ e kadar olan sayıları yazdırmak için şu kodları yazmamız gerekir.

 
print(1)
print(2)
print(3)
print(4)
print(5)

Eğer döngüleri kullanmazsak bu şekilde uzun uzun kodlar yazmamız gerekir. Şimdi öğreneceğimiz döngü yapıları ile bu işlemi daha kısa yoldan yapacağız.

1- for Döngüsü

for döngüleri belirli sayıda işlemlerin tekrarlanması için kullanılan döngülerdir. for döngüleri başlangıç
ve bitiş değerleri arasında artım miktarına göre istenilen sayıda tekrar yapar.

Eğer yukarıda alt alta print komutu yazarak yaptırdığımız işlemi döngü ile sadece 2 satır kod ile yapabiliriz.

 
for n in range(1,6):
    print(n)
Örnek 1:
 
for n in range(1, 11):
    print(n)

for döngüsü için söz dizimi şöyledir:

range (başlangıç değeri, son değer, arttırma/azaltma değeri):

Başlangıç değeri: Döngü değişkeninin alacağı ilk değerdir. Eğer boş bırakılırsa 0 olarak belirlenir.
Son değer: Döngü değişkeninin bitiş değeridir. Boş bırakılmamalıdır.
Artırma/azaltma değeri: Döngü değişkeninin artırma veya azaltma miktarını belirler. Eğer boş
bırakılırsa, 1 olarak belirlenir.

Burada yazılacak olan başlangıç, bitiş ve artırma/azaltma sayıları tam sayı olmalıdır. Ondalıklı değerler burada kullanılamaz.

Örnek 2:
for n in range(21, 0, -3):
    print(n, end=" ")

Burada yeni kullanılan end parametresi kendisinden sonra gelen karakteri yazdırdığı değerin sonuna ekler. Yani örnekte olduğu gibi ekrana yazdırdığı her n değerinden sonra bir boşluk ekler.

Örnek 3:

top= 0
for i in range(1, 100): # burada döngü değişkeni olarak i kullanılmıştır.
    top+= i
print(top)

Örnek 4:
 
for i in range(16):
    print("{0:3} {1:16}".format(i, 10**i))

Burada kullanılan format() metodu print komutunda çıktı yazdırılırken istenilen değerde hizalama, ekranda istenilen yere yazdırma gibi biçimlendirme işlemlerinde kullanılır.

Örnek 5:
for i in range(10):
    print(i, end=" ")
    if i == 5:
        i = 20
    print("({})".format(i), end=" ")
print()
Örnek 6:
kelime= input("Bir kelime yaz: ")
for harf in kelime:
    print (harf)
Örnek 7:
kelime = input("Cümle Giriniz: ")
sesliHarfSayisi = 0
for c in kelime:
    if c == "A" or c == "a" or c == "E" or c == "e" \
    or c == "I" or c == "ı" or c == "İ" or c == "i" \
    or c == "O" or c == "o" or c == "Ö" or c == "ö" \
    or c == "U" or c == "u" or c == "Ü" or c == "ü":
        print(c, ",", sep=" ", end=" ")
        sesliHarfSayisi += 1
print(" (", sesliHarfSayisi, "sesli)", sep=" ")

İç İçe Döngüler:

Diğer ifadelerde olduğu gibi for döngüsünde de farklı işlemleri yapabilmek için iç içe yapısını kullanmak gerekir. Döngü kullanarak bazen bir çarpım tablosu üretmek istediğinizde iç içe for döngüsü yapısını kullanırız.

Örnek 8:
# Satır oluşturmak için
sayi = int(input("Lütfen tablo ölçüsünü giriniz: "))
for satir in range(1, sayi + 1):
    print("Satır #", satir)
Örnek 9:
# Hem satır hem de sütun oluşturmak için :
sayi = int(input("Lütfen tablo ölçüsünü giriniz: "))
for satir in range(1, sayi + 1):
    for sutun in range(1, sayi + 1):
        deger = satir*sutun
        print(deger, end=" ")
    print()

Tablo formatını hizalı şekilde yazmak için;

Örnek 10:
# Hem satır hem de sütun oluşturmak için :
sayi = int(input("Lütfen tablo ölçüsünü giriniz: "))
for satir in range(1, sayi + 1):
    for sutun in range(1, sayi + 1):
        deger = satir*sutun
        print("{0:4}".format(deger), end="")
    print()
Örnek 11:
sayi = int(input("Lütfen tablo ölçüsünü giriniz: "))
print(" ",end=" ")
for sutun in range(1, sayi + 1):
    print("{0:4}".format(sutun), end=" ")
print()
print("+", end=" ")
for sutun in range(1, sayi + 1):
    print("----", end=" ")
print()
for satir in range(1, sayi + 1):
    print("{0:3}|".format(satir), end=" ")
    for sutun in range(1, sayi + 1):
        deger = satir*sutun # Çarpım sonucunun hesaplanması
        print("{0:4}".format(deger), end=" ")
    print()

2- while Döngüsü

Örnek 1:
sayac = 1 # Başlangıç değeri kontrol değişkenine atanır.
while sayac <= 5: #İstenilen değere ulaşıp ulaşmadığını kontrol eder.
    print(sayac) # Sayaç değerini ekrana yazar.
    sayac=sayac + 1 # Sayaç değerini 1 arttırır.
While Döngüsü İçin Söz Dizimi:

While ifadesi, ilgili kod satırlarının çalıştırılıp çalıştırılmayacağını belirler. Şart doğru olduğu sürece
kod blokunu tekrar tekrar çalıştırır. Şart yanlış olduğunda ise döngü sonlanır. While için söz diziminde
ilk önce while ifadesi yazılır. Şart ifadesi sonrasında : işareti ile yazılmalı ve bu şarta bağlı olarak çalışacak
kod satırları alt alta yazılmalıdır.

Örnek 2:
sayac = 0
giris= "Y"
while giris!= "N" and giris!= "n":
    print(sayac)
    giris= input("Devam etmek için Y, – çıkmak için N giriniz: ")
    if giris == "Y" or giris == "y":
        sayac += 1
    elif giris != "N" and giris != "n":
        print(giris + "geçerli bir giriş kodu değil")
Örnek 3:
sayi = 0
toplam = 0
print("Bir sayı giriniz, negatif sayı döngüyü sonlandırır:")
while sayi >= 0:
    sayi= int(input())
    toplam += sayi
    print("Toplam=", toplam)
Örnek 4:
# Bilgisayar Arıza Çözüm Programı
print("Yardım Edin! Bilgisayarım Çalışmıyor")
cozum = False
while not cozum:
    print("Bilgisayardan herhangi bir ses geliyor mu (fans vb) ")
    secim = input("Veya herhangi bir ışık yanıyor mu? (y/n):")
    if secim == "n":
        secim = input("Fişe takılı mı (y/n):")
        if secim == "n":
            print("Fişe takın")
        else:
            secim = input("Açma düğmesine bastınız mı (y/n):")
            if secim == "n":
                print("Açma düğmesine basın.")
            else:
                secim = input("Sigorta atmış mı? (y/n):")
                if secim == "n":
                    secim = input("Şalter inmiş mi (y/n):")
                    if secim == "n":
                        print("Şalteri kontrol edin veya yenisi ile değiştirin. ")
                    else:
                        print("Teknik servise başvurun.")
                        cozum = True
                else:
                    print("Sigortayı kontrol edin. ")
    else:
        print("Teknik servise başvurun")
        cozum = True
Belirli ve Belirsiz Döngüler:
Örnek 1:
n = 1
while n <= 10:
    print(n)
    n = n+ 1
Örnek 2:
n = 1
karar= int(input("Bir değer girin: "))
while n <= karar:
    print(n)
    n = n+1
Örnek 3:
karar = False
while not karar:
    giris = int(input("Bir değer giriniz: "))
    if giris == 999:
        karar = True
    else:
        print(giris)
Döngü’den Çıkma Komutları:

While döngüsü, şart sağlandığı sürece ilgili kod satırlarını çalıştırır. Benzer şekilde for döngüsü de
aralık içerisinde ilgili işlemleri gerçekleştirir. Ancak bazı değerler için döngü yapısından çıkmak, başka
bir deyişle döngü işleyişinde değişiklik yapmak mümkündür. Bunun için break ve continue komutları
kullanılabilir.

Örnek 1:
giris = 0
toplam = 0
print("Lütfen bir sayı giriniz, negatif sayılar döngüyü sonlandırır:")
while True:
    giris = int(input())
    if giris < 0:
        break # Döngüden çıkılıyor
    toplam += giris
print("Toplam =", toplam)
Örnek 2:
# Metin içerisindeki sesli harfleri bulma krana yazan program
kelime = input("Lütfen bir metin giriniz (Çıkış için X / x): ")
sesliHarfSayisi = 0
for c in kelime:
    if c == "A" or c == "a" or c == "E" or c == "e" \
or c == "I" or c == "ı" or c == "O" or c == "o"\
or c == "U" or c == "u" or c == "Ö" or c == "ö"\
or c == "Ü" or c == "ü" or c == "İ" or c=="i":
        print(c, ",", end=" ", sep=" ")
        sesliHarfSayisi += 1
    elif c == "X" or c =="x":
        break
print(" (", sesliHarfSayisi, " adet sesli harf)", sep="")
Continue İfadesi:

Break ifadesi kullanıldığında ilgili kod satırları çalıştırılmadan atlanırken continue ifadesi kullanıldığında
döngü başı yapılarak bir sonraki yeni değer için işlem yapılır.

Örnek 1:
# 999 girilene kadar girilen pozitif sayıların toplamını alan program
# < girilen negatif sayılar işleme alınmayacaktır. >
toplam = 0
durum = False
while not durum:
    deger = int(input("Lütfen pozitif tam sayı giriniz (Çıkış için 999):"))
    if deger < 0:
        print("Negatif değer girildi, ", deger, "degeri işleme alınmadı")
        continue
    if deger != 999:
        print("Eklenen değer", deger)
        toplam += deger
    else:
        durum = (deger == 999)
print("Toplam =", toplam)
While/else ve for/else:
Örnek:
# Girilen 5 sayının ortalamasını alan program
# Negatif sayı girildiğinde program sonlandırılır
sayac = toplam = 0
print("Lütfen Ortalama hesaplamak için 5 pozitif sayı giriniz")
while sayac < 5:
    sayi = float(input("Sayı giriniz: "))
    if sayi < 0:
        print("Negatif sayılar kabul edilmemektedir. Çıkılıyor")
        break
    sayac += 1
    toplam += sayi
else:
    print("Ortalama =", toplam/sayac)
Döngü Örnekleri:
Faktöriyel Hesaplama:
# Program girilen sayının faktöriyelini hesaplar
faktoriyel=1
sayac=1
sayi=int(input("Lütfen bir sayı giriniz.."))
while sayac<=sayi:
    faktoriyel*=sayac
    sayac+=1
print(sayi," sayısının foktöriyeli:",faktoriyel)
Ağaç Çizimi:
# Girilen değere göre "*" karakterinden ağaç çizen program
yukseklik = int(input("Çizilecek ağaçın yüksekliğini giriniz: "))
satir = 0
while satir < yukseklik:
    sayac = 0
    while sayac < yukseklik - satir:
        print(end=" ")
        sayac += 1
    sayac = 0
    while sayac < 2*satir + 1:
        print(end="*")
        sayac += 1
    print()
    satir += 1
Asal Sayıları Listeleme:
sonDeger = int(input("Kaça kadar asal sayıları görmek istersiniz? "))
sayi = 2
while sayi <= sonDeger:
    kontrol = True
    gecici = 2
    while gecici < sayi:
        if sayi % gecici == 0:
            kontrol = False
            break
        gecici += 1
    if kontrol:
        print(sayi, end= " ")
    sayi += 1
print()
İstenilen Sayıdaki Fibonacci Sayısını Listeleme:
# İstenilen sayıdaki Fibonacci Sayılarını Listeleyen Program
deger1=0
deger2=1
sayac=2
sonDeger=int(input("Listelemek istediğiniz Fibonacci Sayıları adetini giriniz..:"))
print(str(deger1) + " " +str(deger2),end=" ")
while sayac<=sonDeger:
    deger3=deger1+deger2
    print(deger3,end=" ")
    deger1=deger2
    deger2=deger3
    sayac+=1

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir