Python'da for ve while döngülerini, range(), break ve continue kullanımlarını kod örnekleriyle anlatan Ders 04 eğitim görseli.

Python’da Döngüler: for, while ve range() ile Tekrarlanan İşlemler

Python'da for ve while döngüleri nasıl kullanılır? range(), break ve continue yapılarını çalışan örneklerle öğrenin, kendi çalışma takip programınızı geliştirin.

PYTHON EĞİTİM SERİSİ · DERS 04 / 16

Tüm Python dersleri  ·  ← Önceki: Koşullu İfadeler

Bir programın ekrana aynı mesajı beş kez yazdırmasını istediğimizi düşünelim.

Bunu gerçekleştirmek için aynı komutu beş defa yazabiliriz.

Ancak mesajın yüz kez gösterilmesi gerekiyorsa ne yapacağız?

Ya da bir uygulamanın kullanıcıdan, doğru bilgi girilene kadar yeniden giriş yapmasını istediğimizi düşünelim.

Her ihtimal için ayrı ayrı kod yazmak ne kadar mantıklı olur?

Programlamada aynı işlemleri tekrar tekrar yazmak yerine bu işlemleri belirli kurallara göre yinelememizi sağlayan yapılar bulunur.

Bu yapılara döngüler denir.

Python’da döngüler sayesinde bir işlemi belirli sayıda tekrarlayabilir, bir koşul sağlandığı sürece çalıştırabilir veya gerektiğinde durdurabiliriz.

Örneğin bir programla 1’den 100’e kadar sayıları yazdırabiliriz. Kullanıcının girdiği sayıların toplamını hesaplayabiliriz. Bir oyunda belirli koşullar gerçekleşene kadar işlemleri sürdürebiliriz.

Döngüler, basit uygulamalardan büyük yazılım sistemlerine kadar programlamanın hemen her alanında karşımıza çıkar.

Bu derste Python’daki for ve while döngülerini, range() fonksiyonunu, döngülerin nasıl durdurulduğunu ve sık yapılan hataları çalışan örneklerle öğreneceğiz.

Dersin sonunda ise önceki derste geliştirdiğimiz günlük çalışma asistanını yeni bir sürüme dönüştüreceğiz.

Bu kez kullanıcı yalnızca bir çalışma süresi girmeyecek. Gün boyunca istediği kadar çalışma oturumu ekleyebilecek ve hedefe ulaşana kadar ilerlemesini takip edebilecek.

Python Eğitim Serisi — Ders 04 / 16

Bu konuya başlamadan önce Ders 03 — Python’da Koşullu İfadeler yazımızı tamamlamanız yararlı olacaktır.

Bütün derslerin öğrenme sırasına Python Eğitim Merkezi sayfamızdan ulaşabilirsiniz.

Python’da döngü nedir ve neden kullanılır?

Önce basit bir örnekle başlayalım.

Python’da ekrana beş kez “Merhaba” yazdırmak istediğimizi düşünelim.

Bunun için şu kodu yazabiliriz:

print("Merhaba")
print("Merhaba")
print("Merhaba")
print("Merhaba")
print("Merhaba")

Bu kod çalışır.

Ancak her tekrarda aynı komutu yeniden yazmak zorunda kaldık.

Üstelik mesaj sayısını 50’ye çıkarmak istersek kodumuz gereksiz yere uzayacak.

Bunun yerine bir döngü kullanabiliriz:

for sayi in range(5):
    print("Merhaba")

Çıktı:

Merhaba
Merhaba
Merhaba
Merhaba
Merhaba

Gördüğümüz gibi yalnızca iki satırlık kodla aynı işlemi gerçekleştirdik.

Burada for, tekrar edilecek değerler üzerinde ilerleyen döngüyü oluşturur.

range(5) ise bu örnekte beş değerlik bir sayı aralığı sağlar.

Python her adımda girintili print() satırını çalıştırır.

Artık mesaj sayısını değiştirmek oldukça kolaydır.

Örneğin range(10) kullandığımızda mesaj on kez gösterilir.

Döngülerin önemli avantajlarından biri budur.

Aynı işlemi tekrarlamak için kodumuzu tekrar tekrar yazmamız gerekmez.

Ancak döngülerin görevi yalnızca ekrana mesaj yazdırmak değildir.

Bir program, döngü sırasında hesaplama yapabilir, kullanıcıdan bilgi alabilir veya koşulları değerlendirebilir.

Bu özellikleri birazdan daha ayrıntılı olarak göreceğiz.

for döngüsü nasıl kullanılır?

Python’da for döngüsü, üzerinde sırayla ilerlenebilen değerleri işlemek için kullanılır.

Bu değerler sayısal aralıklardan, metinlerden veya ileride öğreneceğimiz farklı veri yapılarından gelebilir.

Başlangıçta sayılarla çalışmak daha kolay olduğu için önce range() kullanacağız.

Visual Studio Code’da donguler.py adında yeni bir Python dosyası oluşturalım.

Şu kodları yazalım:

for sayi in range(1, 6):
    print(sayi)

Programı çalıştırdığımızda:

1
2
3
4
5

çıktısını görürüz.

Burada döngü her adımda sayi değişkenine farklı bir değer verir.

İlk adımda sayi değeri 1’dir.

Sonraki adımda 2 olur.

Bu işlem 5 değerine kadar devam eder.

Son değer işlendiğinde döngü sona erer.

Önemli bir ayrıntıya dikkat edelim.

for döngüsünde kullanılan sayi değişkenini önceden oluşturmamız gerekmez.

Python, döngü sırasında bu değişkene ilgili değeri atar.

Değişkenin ismini de kendimiz belirleyebiliriz.

Örneğin:

for numara in range(1, 4):
    print("İşlem numarası:", numara)

Çıktı:

İşlem numarası: 1
İşlem numarası: 2
İşlem numarası: 3

Burada değişkenin ismini numara yaptık.

Programın çalışma mantığı değişmedi.

Kodun okunabilir olması için değişken isimlerini temsil ettikleri bilgiye uygun seçmek iyi bir alışkanlıktır.

range() fonksiyonu ne işe yarar?

range(), belirli kurallara göre ilerleyen sayısal değerler oluşturmamızı sağlayan yerleşik bir Python fonksiyonudur.

Döngülerde oldukça sık kullanılır.

En temel üç kullanımını inceleyelim.

KullanımÜretilen değerler
range(5)0, 1, 2, 3, 4
range(1, 6)1, 2, 3, 4, 5
range(2, 11, 2)2, 4, 6, 8, 10

İlk kullanımda yalnızca bitiş sınırı belirtilir.

for sayi in range(5):
    print(sayi)

Çıktı:

0
1
2
3
4

Neden 5 yazdırılmadı?

Çünkü range() fonksiyonunda bitiş sınırı aralığa dahil edilmez.

range(5) ifadesi, sıfırdan başlayıp 5’e ulaşmadan önceki değerlerde ilerler.

Bu, Python öğrenirken en sık karıştırılan konulardan biridir.

İkinci kullanımda başlangıç ve bitiş sınırlarını birlikte belirleyebiliriz.

for sayi in range(3, 8):
    print(sayi)

Çıktı:

3
4
5
6
7

Üçüncü kullanımda ise ilerleme miktarını da belirleriz.

for sayi in range(2, 11, 2):
    print(sayi)

Çıktı:

2
4
6
8
10

Burada sayılar ikişer ikişer artmaktadır.

Üçüncü parametreye adım değeri diyebiliriz.

Adım değeri negatif olduğunda geriye doğru da ilerleyebiliriz.

for sayi in range(5, 0, -1):
    print(sayi)

Çıktı:

5
4
3
2
1

Bu kullanım özellikle geri sayım gibi işlemlerde yararlıdır.

Örneğin bir programın başlangıcında geri sayım gösterebiliriz:

for sayi in range(3, 0, -1):
    print(sayi)

print("Başlıyoruz!")

Çıktı:

3
2
1
Başlıyoruz!

Burada son print() satırının girintili olmadığına dikkat edelim.

Bu satır döngünün dışında bulunduğu için geri sayım tamamlandıktan sonra yalnızca bir kez çalışır.

range() konusunda ayrıntılı örneklere Python’un resmî kontrol akışı rehberinden ulaşabilirsiniz.

for döngüsüyle toplam hesaplamak

Şimdi yalnızca sayıları ekrana yazdırmak yerine bir hesaplama yapalım.

1’den 5’e kadar sayıların toplamını bulmak istediğimizi düşünelim.

toplam = 0

for sayi in range(1, 6):
    toplam += sayi

print("Toplam:", toplam)

Çıktı:

Toplam: 15

Bu kodun nasıl çalıştığını anlamak önemlidir.

Başlangıçta:

toplam = 0

satırıyla bir değişken oluşturduk.

Döngünün ilk adımında sayi değeri 1 olur.

toplam += sayi ifadesi, değişkenin mevcut değerine 1 ekler.

İkinci adımda 2 eklenir.

Bu işlem 5’e kadar devam eder.

Döngü bittiğinde toplam değişkeninde 15 değeri bulunur.

Bu kullanım sayesinde yalnızca beş sayının değil, yüzlerce sayının toplamını da benzer şekilde hesaplayabiliriz.

Örneğin range(1, 101) kullanırsak 1’den 100’e kadar olan sayıların toplamını bulabiliriz.

Burada Ders 02’de öğrendiğimiz += operatörünü kullandık.

Görüldüğü gibi önceki derslerde öğrendiğimiz kavramlar yeni konularla birleşmeye devam ediyor.

for döngüsü yalnızca sayılarla mı çalışır?

Hayır.

for döngüsü yalnızca sayılar üzerinde ilerlemek için kullanılmaz.

Örneğin bir metindeki karakterleri sırayla işleyebiliriz.

for harf in "Python":
    print(harf)

Çıktı:

P
y
t
h
o
n

Burada Python metnin karakterleri üzerinde sırayla ilerledi.

range() kullanmadık.

Çünkü for, sayısal aralıklarla sınırlı değildir.

Bu davranış özellikle ileride öğreneceğimiz metin işlemleri, listeler ve sözlükler konularında çok işimize yarayacak.

Şimdilik for döngüsünün farklı türdeki yinelenebilir değerler üzerinde çalışabildiğini bilmemiz yeterli.

while döngüsü nasıl çalışır?

for döngüsünü öğrendik.

Şimdi farklı bir ihtiyacı düşünelim.

Bir programın kullanıcıdan belirli bir hedefe ulaşana kadar bilgi almaya devam etmesini istiyoruz.

Ancak bu işlemin kaç kez tekrarlanacağını önceden bilmiyoruz.

Kullanıcı hedefe iki adımda ulaşabilir.

Beş adımda da ulaşabilir.

Böyle durumlarda while döngüsü oldukça kullanışlıdır.

while, Türkçede “olduğu sürece” şeklinde düşünülebilir.

Python’da while döngüsü, koşul doğru olduğu sürece tekrar eder.

Örneğin:

sayac = 1

while sayac <= 5:
    print(sayac)
    sayac += 1

Çıktı:

1
2
3
4
5

Bu kodun çalışma sırasını inceleyelim.

Başlangıçta sayac değişkeninin değeri 1’dir.

Python şu koşulu değerlendirir:

sayac <= 5

Koşul doğru olduğu için döngünün içindeki satırlar çalışır.

Önce sayı ekrana yazdırılır.

Ardından:

sayac += 1

satırıyla sayaç bir artırılır.

Döngü yeniden başladığında koşul tekrar kontrol edilir.

Sayaç 6 olduğunda koşul yanlış olur.

Python döngüden çıkar ve sonraki kodlara geçer.

Burada for döngüsünden önemli bir fark bulunur.

while döngüsünde devam edip etmeyeceğimizi belirleyen koşulu kendimiz oluşturduk.

Ayrıca sayacın güncellenmesini de kendimiz gerçekleştirdik.

Bu nedenle while kullanırken döngünün hangi durumda sona ereceğini dikkatli planlamamız gerekir.

while döngüsüyle hedefe ulaşmak

Bir öğrencinin günlük 60 dakika çalışma hedefi olduğunu düşünelim.

Öğrenci 15’er dakikalık çalışma oturumları gerçekleştirsin.

hedef = 60
toplam = 0

while toplam < hedef:
    toplam += 15
    print("Çalışılan süre:", toplam)

print("Günlük hedef tamamlandı.")

Çıktı:

Çalışılan süre: 15
Çalışılan süre: 30
Çalışılan süre: 45
Çalışılan süre: 60
Günlük hedef tamamlandı.

Burada while döngüsü, toplam değeri 60’tan küçük olduğu sürece çalıştı.

Her adımda toplam çalışma süresine 15 dakika eklendi.

Toplam 60 olduğunda koşul artık doğru olmadığı için döngü sona erdi.

Bu basit örnek, birazdan geliştireceğimiz günlük çalışma asistanının da temelini oluşturuyor.

Ancak gerçek bir çalışma programında bütün oturumların 15 dakika sürmesi gerekmez.

Kullanıcı bir oturumda 20 dakika, diğerinde 10 dakika çalışabilir.

Bu yüzden uygulamamızı birazdan kullanıcıdan bilgi alacak şekilde geliştireceğiz.

for ile while arasındaki fark nedir?

İki döngü de işlemleri tekrar etmek için kullanılır.

Ancak çalışma mantıkları farklıdır.

Özellikforwhile
Temel amaçYinelenebilir değerler üzerinde ilerlemekKoşul doğru olduğu sürece tekrarlamak
Tekrar miktarıKullanılan değerlere bağlıdırKoşulun ne zaman yanlış olacağına bağlıdır
Sayaç kullanımırange() ile kolaydırGerektiğinde kendimiz güncelleriz
Örnek kullanım1’den 10’a kadar sayıları yazdırmakHedefe ulaşana kadar çalışmayı sürdürmek

Burada bir noktayı doğru anlamamız gerekir.

for yalnızca tekrar sayısını önceden bildiğimiz durumlarda kullanılmaz.

Örneğin bir metnin karakterleri veya bir dosyanın satırları üzerinde de ilerleyebilir.

Benzer şekilde while döngüsüyle de belirli sayıda tekrar yapabiliriz.

Asıl fark, tekrarın nasıl kontrol edildiğidir.

for yinelenebilir bir kaynaktan sıradaki değeri alarak ilerler.

while ise her tekrarın başında belirlediğimiz koşulu değerlendirir.

Bu nedenle hangi döngünün daha uygun olduğu, yapmak istediğimiz işleme bağlıdır.

Örneğin beş öğrencinin puanını sırayla almak için for kullanılabilir.

Ancak kullanıcının ne zaman çıkış yapacağını bilmediğimiz bir menü uygulamasında while daha doğal bir seçim olabilir.

Python'da for ve while döngülerinin çalışma mantığını, range() fonksiyonunu, break ve continue kullanımını gösteren Türkçe eğitim infografiği.
Python’da for ve while döngülerinin akışı, range() örnekleri ve break ile continue arasındaki farklar.

break ve continue ne işe yarar?

Bazen bir döngünün normal tamamlanmasını beklemek istemeyebiliriz.

Örneğin kullanıcı belirli bir işlem sırasında çıkış yapmak isteyebilir.

Ya da girilen bir bilgi geçersiz olduğu için yalnızca o tekrarı atlamak gerekebilir.

Python’da bu durumlar için iki önemli anahtar kelime bulunur:

break ve continue.

break ile döngüyü durdurmak

break, bulunduğu en iç döngüyü hemen sonlandırır.

Örneğin:

for sayi in range(1, 11):
    if sayi == 6:
        break

    print(sayi)

Çıktı:

1
2
3
4
5

Burada range(1, 11) normalde 1’den 10’a kadar ilerler.

Ancak sayı 6 olduğunda şu koşul gerçekleşir:

if sayi == 6:
    break

Python döngüyü sonlandırır.

Bu nedenle 6 ve sonraki sayılar ekrana yazdırılmaz.

Şimdi break kullanımını kullanıcıdan bilgi alan bir programda düşünelim.

while True:
    komut = input("Devam için D, çıkış için C yazın: ")

    if komut == "C":
        print("Program sona erdi.")
        break

    print("Program çalışmaya devam ediyor.")

Burada yeni bir kullanım gördük:

while True:

Bu ifade, koşulu sürekli doğru olan bir döngü başlatır.

Dolayısıyla programın döngüden çıkması için ayrıca bir mekanizmaya ihtiyaç vardır.

Biz bu örnekte break kullandık.

Kullanıcı C yazdığında döngü sonlanır.

Diğer girişlerde program yeniden soru sorar.

Bu yapı kullanıcıya tekrar tekrar işlem yaptıran basit terminal uygulamalarında sık kullanılır.

Ancak sonlandırma koşulunu dikkatli yazmak gerekir.

Örneğimizde küçük c harfi çıkış sağlamaz; çünkü metin karşılaştırması büyük ve küçük harfe duyarlıdır.

Bu konuyu metin işlemleri dersinde daha ayrıntılı ele alacağız.

continue ile bir tekrarı atlamak

continue, döngünün tamamını bitirmez.

Yalnızca o anki tekrarın kalan kısmını atlar ve döngünün sonraki tekrarına geçer.

Örneğin:

for sayi in range(1, 6):
    if sayi == 3:
        continue

    print(sayi)

Çıktı:

1
2
4
5

Burada sayı 3 olduğunda continue çalışır.

Bu nedenle o tekrardaki print() satırı atlanır.

Ancak döngü sona ermez.

4 ve 5 değerleri için çalışmaya devam eder.

İki anahtar kelime arasındaki farkı şöyle düşünebiliriz:

break: Döngüyü tamamen bırak.

continue: Bu tekrarı atla, döngüye devam et.

Bir başka örnekte yalnızca tek sayıları yazdıralım.

for sayi in range(1, 11):
    if sayi % 2 == 0:
        continue

    print(sayi)

Çıktı:

1
3
5
7
9

Ders 02’den hatırlayalım.

%, bölme işleminden kalanı bulmak için kullanılır.

Bir sayı 2’ye bölündüğünde kalan sıfırsa çifttir.

Dolayısıyla çift sayılarda continue çalıştı ve print() satırı atlandı.

Sonuçta yalnızca tek sayılar ekrana yazdırıldı.

break ve continue kullanımlarının ayrıntılarını Python’un resmî kontrol akışı rehberinde inceleyebilirsiniz.

Döngülerde girintileme ve sonsuz döngü hataları

Önceki derste Python’da girintilemenin önemini öğrenmiştik.

Aynı kurallar döngüler için de geçerlidir.

Örneğin:

for sayi in range(1, 4):
    print("Döngü içindeki sayı:", sayi)

print("Döngü bitti.")

Çıktı:

Döngü içindeki sayı: 1
Döngü içindeki sayı: 2
Döngü içindeki sayı: 3
Döngü bitti.

Girintili satır üç kez çalıştı.

Girintisiz son satır ise yalnızca bir kez çalıştı.

Şimdi şu örneği inceleyelim:

sayac = 1

while sayac <= 5:
    print(sayac)

Bu kodda önemli bir sorun bulunuyor.

Sayaç değeri hiçbir zaman artırılmıyor.

Dolayısıyla sayac <= 5 koşulu sürekli doğru kalıyor.

Program tekrar tekrar 1 yazdırmaya devam eder.

Bu duruma sonsuz döngü denir.

Doğru kullanım:

sayac = 1

while sayac <= 5:
    print(sayac)
    sayac += 1

şeklindedir.

Burada sayacı artırdığımız için döngü belirli bir noktada sona erer.

Sonsuz döngüye giren bir programı terminalde çalıştırıyorsanız çoğu durumda Ctrl + C ile durdurabilirsiniz.

Ancak her zaman programı elle durdurmaya güvenmek doğru değildir.

Döngünün başlangıç koşulunu ve sonlandırılma yöntemini önceden düşünmeliyiz.

Bir başka önemli hata da continue kullanımında ortaya çıkabilir.

Şu örneği inceleyelim:

# Sorunlu örnek: Çalıştırmayın.
sayac = 0

while sayac < 5:
    if sayac == 2:
        continue

    sayac += 1

Bu kodda sayaç 2 olduğunda continue çalışır.

Ancak sayaç artırma satırına ulaşılmaz.

Sonuçta sayaç sürekli 2 olarak kalır ve döngü sona ermez.

Bu sorunu önlemek için sayacı koşuldan önce artırabiliriz:

sayac = 0

while sayac < 5:
    sayac += 1

    if sayac == 2:
        continue

    print(sayac)

Çıktı:

1
3
4
5

Burada sayaç her tekrarda güncellenir.

Bu nedenle döngü ilerlemeye devam eder ve güvenli biçimde sona erer.

Döngü yazarken özellikle şu soruyu kendimize sormalıyız:

Bu döngünün sona ermesini sağlayacak değişiklik nerede gerçekleşiyor?

Bu sorunun cevabı açık değilse kodu yeniden incelememiz gerekir.

Uygulama: Günlük çalışma asistanına çoklu oturum ekleyelim

Artık öğrendiğimiz döngüleri gerçek bir programda kullanabiliriz.

Ders 03’te geliştirdiğimiz günlük çalışma asistanını hatırlayalım.

Uygulamamız kullanıcıdan günlük hedefini ve çalıştığı süreyi alıyordu.

Hedef tamamlanmışsa tebrik mesajı gösteriyordu.

Hedefe henüz ulaşılmamışsa kalan süreyi hesaplıyordu.

Ancak önemli bir eksikliği vardı.

Kullanıcı programı her çalıştırdığında yalnızca tek seferlik bilgi girebiliyordu.

Şimdi bu davranışı değiştireceğiz.

Yeni sürümde kullanıcı gün içinde birden fazla çalışma oturumu ekleyebilecek.

Örneğin önce 20 dakika, sonra 25 dakika, ardından 15 dakika çalışabilir.

Program bütün süreleri toplayacak.

Hedefe ne kadar kaldığını gösterecek.

Hedef tamamlandığında otomatik olarak rapora geçecek.

Ayrıca kullanıcı isterse hedef tamamlanmadan programdan çıkabilecek.

Bu uygulamada önceki derslerden öğrendiğimiz değişkenleri, karşılaştırmaları ve koşullu ifadeleri kullanmaya devam edeceğiz.

Yeni dosyamızın adı:

calisma_asistani_donguler.py

Aşağıdaki programı oluşturalım:

print("=== GÜNLÜK ÇALIŞMA ASİSTANI ===")

ad = input("Adınız: ")
hedef = int(input("Günlük hedefiniz kaç dakika? "))

if hedef <= 0:
    print("Günlük hedef sıfırdan büyük olmalıdır.")

else:
    toplam = 0
    oturum = 0

    while toplam < hedef:
        kalan = hedef - toplam

        print()
        print("Hedefe kalan süre:", kalan, "dakika")

        dakika = int(input(
            "Yeni oturum süresi (çıkış için 0): "
        ))

        if dakika == 0:
            print("Çalışma kaydı sonlandırılıyor.")
            break

        if dakika < 0:
            print("Çalışma süresi negatif olamaz.")
            continue

        toplam += dakika
        oturum += 1

        print("Güncel toplam:", toplam, "dakika")

    print()
    print("=== GÜNLÜK RAPOR ===")

    print("Ad:", ad)
    print("Hedef:", hedef, "dakika")
    print("Toplam çalışma:", toplam, "dakika")
    print("Oturum sayısı:", oturum)

    if toplam >= hedef:
        fazla = toplam - hedef

        print("Tebrikler, günlük hedef tamamlandı!")

        if fazla > 0:
            print("Hedef", fazla, "dakika aşıldı.")

    elif toplam > 0:
        print("Hedefe kalan:", hedef - toplam, "dakika")

    else:
        print("Henüz çalışma oturumu eklenmedi.")

    print()
    print("Tamamlanan oturumlar:")

    for sira in range(1, oturum + 1):
        print("Oturum", sira)

Bu kodu dikkatle inceleyelim.

İlk bölümde kullanıcıdan adını ve günlük hedefini alıyoruz.

Ardından hedefin sıfırdan büyük olup olmadığını kontrol ediyoruz.

Hedef geçersizse kullanıcıya uyarı gösteriyoruz.

Hedef geçerliyse programın asıl çalışma bölümüne geçiyoruz.

toplam = 0
oturum = 0

Başlangıçta toplam çalışma süresi ve oturum sayısı sıfırdır.

Daha sonra şu döngü başlar:

while toplam < hedef:

Bu döngü, toplam çalışma süresi hedefe ulaşmadığı sürece çalışır.

Her tekrarda kullanıcıdan yeni bir çalışma süresi alıyoruz.

Kullanıcı 0 girerse:

if dakika == 0:
    print("Çalışma kaydı sonlandırılıyor.")
    break

bölümü çalışır ve döngü sona erer.

Kullanıcı negatif süre girerse:

if dakika < 0:
    print("Çalışma süresi negatif olamaz.")
    continue

bölümü çalışır.

Negatif değer toplam çalışma süresine eklenmez.

Program yeni bir oturum süresi istemeye devam eder.

Geçerli ve pozitif süre girildiğinde ise:

toplam += dakika
oturum += 1

satırları çalışır.

Böylece toplam çalışma süresi güncellenir ve oturum sayısı artırılır.

Sonra döngü yeniden başlar.

Ancak toplam çalışma süresi hedefe ulaşmışsa döngüye tekrar girilmez.

Program rapor bölümüne geçer.

İlk deneme: Hedefe üç oturumda ulaşalım

Programı çalıştırıp şu bilgileri girelim:

Adınız: Deniz
Günlük hedefiniz kaç dakika? 60

İlk oturum için 20 dakika girelim.

Program toplam çalışma süresini 20 dakika olarak gösterecektir.

Ardından yeni oturum süresi isteyecektir.

İkinci oturum için 25 dakika girelim.

Toplam süre 45 dakika olur.

Üçüncü oturum için 15 dakika girdiğimizde toplam çalışma süresi 60 dakikaya ulaşır.

Döngü sona erer.

Programın raporu şöyle olur:

=== GÜNLÜK RAPOR ===
Ad: Deniz
Hedef: 60 dakika
Toplam çalışma: 60 dakika
Oturum sayısı: 3
Tebrikler, günlük hedef tamamlandı!

Tamamlanan oturumlar:
Oturum 1
Oturum 2
Oturum 3

Bu raporda iki farklı döngü kullandık.

Kullanıcıdan oturumları almak için while kullandık.

Tamamlanan oturum numaralarını göstermek için ise for kullandık.

Burada küçük bir ayrıntıyı açıklayalım.

Programımız henüz her oturumun süresini ayrı ayrı saklamıyor.

Yalnızca toplam süreyi ve oturum sayısını tutuyor.

Raporun sonundaki for döngüsü de bu sayıya göre oturum numaralarını listeliyor.

İleride listeleri öğrendiğimizde her oturumun süresini ayrı ayrı kaydedebileceğiz.

İkinci deneme: Hedef tamamlanmadan çıkış

Programı yeniden çalıştıralım.

Günlük hedef 60 dakika olsun.

İlk oturum için 25 dakika girelim.

Program yeni oturum süresi istediğinde bu kez 0 yazalım.

break çalışacak ve döngü sona erecektir.

Raporumuz:

=== GÜNLÜK RAPOR ===
Ad: Deniz
Hedef: 60 dakika
Toplam çalışma: 25 dakika
Oturum sayısı: 1
Hedefe kalan: 35 dakika

Tamamlanan oturumlar:
Oturum 1

şeklinde olacaktır.

Bu örnekte while koşulu normal yoldan sona ermedi.

Çünkü toplam çalışma süresi henüz hedefe ulaşmamıştı.

Döngüyü break ile sonlandırdık.

Ancak program çalışmaya devam etti ve raporu gösterdi.

Bu, break kullanımının önemli özelliklerinden biridir.

break döngüden çıkar; programın tamamını otomatik olarak kapatmaz.

Üçüncü deneme: Geçersiz oturum süresi

Programı çalıştırıp pozitif bir günlük hedef girdikten sonra yeni oturum süresi olarak -10 yazalım.

Program:

Çalışma süresi negatif olamaz.

uyarısını gösterecektir.

Ardından yeniden oturum süresi isteyecektir.

Çünkü continue kullanıyoruz.

Bu durumda toplam ve oturum değişkenleri güncellenmez.

Yani hatalı bilgi çalışma hesabını bozmaz.

Burada önemli bir sınırımız bulunuyor.

Program negatif tam sayıları kontrol ediyor ancak kullanıcı abc gibi metin girerse int() dönüşümü sırasında hata oluşabilir.

Aynı şekilde ondalıklı süre girişi de bu örnekte kabul edilmiyor.

Şimdilik programın tam sayılarla çalışmasını bekliyoruz.

İleride hata yönetimi konusunu öğrendiğimizde bu tür girişleri de güvenli biçimde ele alabileceğiz.

Bu uygulamayla önemli bir aşamaya geldik: Artık kullanıcıdan tekrar tekrar bilgi alan, hedefi takip eden ve gerektiğinde kendi kendine duran bir program yazabiliyoruz.

Öğrendiklerimizi küçük alıştırmalarla pekiştirelim

Döngülerin mantığını anlamanın en iyi yolu, küçük örnekleri değiştirerek yeniden çalıştırmaktır.

İlk alıştırmamızda for kullanarak 1’den 20’ye kadar sayıları ekrana yazdıralım.

Ardından kodu değiştirerek yalnızca çift sayıları yazdırmayı deneyelim.

Bunu ister range() adım değerini kullanarak ister % operatöründen yararlanarak yapabiliriz.

İkinci alıştırmada kullanıcıdan bir sayı isteyelim.

Program 1’den o sayıya kadar olan bütün tam sayıların toplamını hesaplasın.

Örneğin kullanıcı 5 girdiğinde sonuç 15 olmalıdır.

Üçüncü alıştırmada while kullanarak 5’ten geriye doğru sayan bir program hazırlayalım.

Sayaç sıfıra ulaştığında “Geri sayım tamamlandı” mesajı gösterilsin.

Dördüncü alıştırmada kullanıcıdan bir şifre benzeri metin isteyelim.

Doğru metin girilene kadar yeniden soru sorulsun.

Bu alıştırmayı yalnızca döngü mantığını öğrenmek amacıyla yapıyoruz; gerçek uygulamalardaki güvenli parola saklama veya giriş sistemleri bundan daha farklı önlemler gerektirir.

Son alıştırmada ise günlük çalışma asistanımızı geliştirelim.

Örneğin kullanıcı hedefini aştığında yalnızca “Hedef tamamlandı” mesajı göstermek yerine ne kadar fazla çalıştığını da hesaplayalım.

Ayrıca günlük hedefe ulaşıldığında kaç oturum yapıldığını ve toplam sürenin ne olduğunu doğru biçimde gösterdiğini kontrol edelim.

Alıştırmaları yaparken yalnızca kodun çalışmasına bakmayalım.

Başlangıç değerlerini, sınır durumlarını ve döngünün hangi koşulda sona erdiğini de inceleyelim.

Örneğin range(1, 1) kullanıldığında hiçbir sayı üretilmediğini görebiliriz.

Benzer şekilde başlangıçta while koşulu yanlışsa döngünün içindeki kodlar hiç çalışmayabilir.

Bu gibi durumları deneyerek öğrenmek, döngülerin davranışını daha iyi anlamamızı sağlar.

Kısaca

Python’da döngüler, aynı işlemi belirli kurallara göre tekrar etmemizi sağlar.

for döngüsü, yinelenebilir değerler üzerinde sırayla ilerlemek için kullanılır.

range() fonksiyonu, belirli bir sayısal aralık üzerinde çalışmamıza yardımcı olur.

range() kullanırken bitiş sınırının aralığa dahil edilmediğini unutmamalıyız.

while döngüsü ise belirlediğimiz koşul doğru olduğu sürece çalışır.

Koşul yanlış olduğunda döngü sona erer.

break ile döngüyü normal bitişini beklemeden durdurabiliriz.

continue ile o anki tekrarın kalan kısmını atlayarak sonraki tekrara geçebiliriz.

Döngülerde girintileme önemlidir.

Özellikle while kullanırken döngünün sona ermesini sağlayacak koşulları dikkatli planlamalıyız.

Aksi hâlde sonsuz döngüler ortaya çıkabilir.

Bu derste hazırladığımız günlük çalışma asistanında hem while hem de for kullandık.

Programımız artık kullanıcıdan birden fazla çalışma oturumu alabiliyor.

Toplam süreyi hesaplıyor, hedefe kalan zamanı gösteriyor ve hedef tamamlandığında rapor hazırlıyor.

Ayrıca kullanıcı istediğinde işlemi erken sonlandırabiliyor.

İlk dört dersimizde değişkenleri, veri türlerini, operatörleri, koşullu ifadeleri ve döngüleri öğrendik.

Bu kavramlarla birlikte programlamanın temel yapı taşlarının önemli bir bölümünü tanımış olduk.

Bir sonraki dersimizde Python’da metin işlemlerini öğreneceğiz.

Metinlerin içindeki karakterlere ulaşmayı, metinleri düzenlemeyi, kullanıcıdan alınan bilgileri daha rahat işlemeyi ve metinlerle çalışan küçük uygulamalar hazırlamayı göreceğiz.

Böylece Python öğrenme yolculuğumuzda yeni bir aşamaya geçeceğiz.

Programlama öğrenirken asıl gelişme, aynı kodu tekrar etmekten değil, tekrarları nasıl yöneteceğimizi anlamaktan gelir.

PratikTekno Bülteni

Yeni rehberleri kaçırmayın

Yeni teknoloji rehberleri ve pratik çözümler e-postanıza gelsin.