Geçen iki derste not ortalaması hesaplayan bir program yazdık. Ama üç not için üç ayrı input satırı yazmak zorunda kaldık. 30 öğrencinin notunu girmek isteseydin 30 satır mı yazacaktın? Bu derste bilgisayarın en sevdiği işi öğreniyoruz: aynı şeyi sıkılmadan tekrar tekrar yapmak. Buna döngü deniyor.
Bu dersin kodları ve alıştırmaları hazır bir not defterinde: Colab’da Aç.
Döngü ne demek?
Günlük hayatta döngülerle doluyuz: “Sepetteki her elmayı yıka”, “çay demlenene kadar bekle”. İlki bir listedeki her eleman için bir iş yapmak, ikincisi bir koşul sağlanıncaya kadar beklemek. Python’da bunların karşılığı iki ayrı döngü:
- for: “Elimdeki her şey için bunu yap.” Kaç kez döneceği baştan bellidir.
- while: “Bu koşul doğru olduğu sürece bunu yap.” Ne zaman duracağı koşula bağlıdır.
for: her biri için
notlar = [70, 85, 90]for n in notlar: print(n)# 70# 85# 90
notlar bir liste: köşeli parantez içinde virgülle sıralanmış değerler. Listeleri bir sonraki derste ayrıntılı göreceğiz; şimdilik “birden fazla değeri bir arada tutan kutu” diye düşün.
for n in notlar: satırını şöyle oku: “notlar içindeki her değer için, o değere n de ve alttaki işi yap.” Döngü ilk turda n‘e 70, ikinci turda 85, üçüncü turda 90 verir. 5. derste olduğu gibi iki nokta ve girinti burada da kural.
for sadece listeyle değil, metinle de çalışır. Bir metni harf harf gezer:
for harf in "Python": print(harf, end=" ")# P y t h o n
range: sayı üretmek
Bazen elinde bir liste olmaz; sadece “bunu 5 kez yap” demek istersin. range bunun için sayı üretir:
for i in range(5): print(i, end=" ")# 0 1 2 3 4
Dikkat: range(5) 0’dan başlar ve 5’i dahil etmez. 0, 1, 2, 3, 4 toplam beş sayı eder. Farklı bir aralık istersen başlangıç ve bitiş verebilirsin:
| Yazım | Ürettiği sayılar |
|---|---|
range(5) | 0, 1, 2, 3, 4 |
range(1, 6) | 1, 2, 3, 4, 5 |
range(0, 10, 2) | 0, 2, 4, 6, 8 (ikişer ikişer) |
Bir çarpım tablosu yazdırmak artık üç satır:
for i in range(1, 11): print(f"7 x {i} = {7 * i}")# 7 x 1 = 7# 7 x 2 = 14# ...# 7 x 10 = 70
Biriktirmek: döngüde toplam almak
Döngülerin en sık kullanımı, bir değeri tur tur biriktirmek. Döngüden önce boş bir “kumbara” açarsın, her turda içine ekler, sonunda toplamı alırsın:
notlar = [70, 85, 90]toplam = 0 # kumbara boş başlarfor n in notlar: toplam += n # toplam = toplam + n demekprint("Toplam:", toplam) # 245print("Ortalama:", toplam / len(notlar)) # 81.666...
toplam += n yazımı, 3. dersteki puan = puan + 5 satırının kısa hâli. len(notlar) listede kaç değer olduğunu verir.
while: koşul doğru olduğu sürece
sayac = 3while sayac > 0: print(sayac) sayac -= 1 # her turda bir azaltprint("Kalkış!")# 3# 2# 1# Kalkış!
while her turdan önce koşula bakar: sayac > 0 doğru mu? Doğruysa içerideki satırları çalıştırır, sonra tekrar bakar. Koşul yanlış olduğu an döngüden çıkar.
while‘ın içinde koşulu bir gün yanlış yapacak bir şey olmalı. Burada bu işi sayac -= 1 yapıyor. O satırı unutursan sayac hep 3 kalır ve döngü hiç bitmez.
break ve continue: döngüyü yönlendirmek
- break: Döngüyü o anda tamamen bitirir.
- continue: O turun geri kalanını atlayıp bir sonraki tura geçer.
notlar = [70, 85, 40, 90]# İlk kalanı bulunca durfor n in notlar: if n < 50: print("Kalan var:", n) break# Kalan var: 40# Kalanları atla, geçenleri yazfor n in notlar: if n < 50: continue print("Geçti:", n)# Geçti: 70# Geçti: 85# Geçti: 90
Mini program: istediğin kadar not
Şimdi baştaki soruya dönelim. Program önce kaç not girileceğini sorsun, sonra o kadar notu döngüyle alsın:
adet = int(input("Kaç not gireceksin? "))toplam = 0for i in range(1, adet + 1): not_ = float(input(f"{i}. not: ")) toplam += not_ortalama = toplam / adetprint(f"Ortalaman: {ortalama:.1f}")if ortalama >= 50: print("Geçtin!")else: print("Kaldın.")
Örnek çalışma:
Kaç not gireceksin? 31. not: 702. not: 853. not: 90Ortalaman: 81.7Geçtin!
Üç not da girsen otuz not da girsen kod aynı. 4. dersin input‘u, 5. dersin if‘i ve bu dersin döngüsü artık birlikte çalışıyor. Değişkene not_ dedik, çünkü not Python’da özel bir kelime (5. derste gördüğümüz not), değişken adı olarak kullanılamıyor.
Sık karşılaşılan hatalar
Bitmeyen döngü. while içindeki koşulu değiştirmeyi unutursan döngü sonsuza kadar döner. Colab’da hücrenin solundaki dönen simge durmaz; durdurmak için o simgeye tekrar tıkla ya da üst menüden Çalışma zamanı > Yürütmeyi durdur‘u seç.
range’in son sayıyı dahil etmediğini unutmak. 1’den 10’a kadar saymak için range(1, 10) yazarsan 10 gelmez. Doğrusu range(1, 11).
Kumbarayı döngünün içinde açmak. toplam = 0 satırını döngünün içine koyarsan her turda sıfırlanır ve sonunda sadece son değeri görürsün. Biriktirme değişkeni her zaman döngüden önce tanımlanır.
Bu derste öğrendiklerin
forbir listeyi, metni ya darange‘in ürettiği sayıları tek tek gezer.range(baş, son)başı dahil eder, sonu dahil etmez.- Biriktirme: döngüden önce
toplam = 0, içindetoplam += değer. whilekoşul doğru olduğu sürece döner; koşulu bir gün yanlış yapacak satırı unutma.breakdöngüyü bitirir,continueo turu atlar.
Alıştırmalar
- 1’den 100’e kadar olan sayıların toplamını döngüyle hesapla.
- Kullanıcıdan bir sayı al ve o sayının çarpım tablosunu (1’den 10’a kadar) yazdır.
- 1’den 20’ye kadar olan sayılardan sadece çift olanları yazdır. İki farklı yolla dene:
continueile verange‘in adım değeriyle. - Sayı tahmin oyunu: program 7 sayısını tutsun. Kullanıcı bilene kadar tahmin istesin, her yanlış tahminde “Daha büyük” ya da “Daha küçük” desin. Bilince kaç denemede bildiğini yazsın. İpucu:
while True:vebreak.
Cevaplar
toplam = 0,for i in range(1, 101): toplam += i,print(toplam)sonucu5050.sayi = int(input("Bir sayı: ")), sonrafor i in range(1, 11): print(f"{sayi} x {i} = {sayi * i}").for i in range(1, 21):içindeif i % 2 != 0: continueveprint(i). Ya da tek satırlafor i in range(2, 21, 2): print(i).gizli = 7,deneme = 0, sonrawhile True:içindetahmin = int(input("Tahminin: ")),deneme += 1;if tahmin == gizli:iseprint(f"Bildin! {deneme} denemede.")vebreak;elif tahmin < gizli:ise “Daha büyük”,else:ise “Daha küçük”.while Truekendi kendine hiç bitmez; döngüden çıkmanın tek yolubreak.
Sıradaki ders
Bu derste listeleri “birden fazla değeri tutan kutu” diye geçtik. Bir sonraki derste listeleri ayrıntılı öğreneceğiz: eleman eklemek, silmek, sıralamak ve listenin belirli bir parçasını almak.

Bir yanıt yazın