EEM-241 İleri Düzey Programlama
2024-2025 Güz Dönemi
Ders 6 - Döngüler, İç İçe Listeler ve Metin İşleme
1. while döngüsü
while, tekrar sayısı önceden kesin olarak bilinmediğinde veya tekrar bir koşula bağlı olduğunda uygundur.
i = 0
while i < 10:
print(i, end=" ")
i += 1
Döngü değişkeni güncellenmezse sonsuz döngü oluşabilir.
Uygulama: Geçerli giriş alıncaya kadar sorma
sayi = int(input("1-10 arasında bir sayı giriniz: "))
while sayi < 1 or sayi > 10:
sayi = int(input("Geçersiz. Tekrar giriniz: "))
print("Kabul edilen sayı:", sayi)
2. range ve for döngüsü
print(list(range(10)))
print(list(range(10, 20)))
print(list(range(10, 20, 3)))
print(list(range(10, 0, -1)))
range için bitiş değeri sonuca dahil değildir.
for i in range(10):
print(i, end=" ")
Bir koleksiyonun elemanları doğrudan dolaşılabilir:
bolumler = ["bilgisayar", "elektrik", "mekatronik", "makine"]
for bolum in bolumler:
print(bolum)
metin = "Python"
for karakter in metin:
print(karakter, end="-")
3. Temel döngü kalıpları
Toplam ve sayaç
sayilar = [4, 7, 2, 9, 6]
toplam = 0
cift_sayisi = 0
for sayi in sayilar:
toplam += sayi
if sayi % 2 == 0:
cift_sayisi += 1
print(toplam, cift_sayisi)
Filtreleyerek yeni liste oluşturma
uygun_sayilar = []
for i in range(10, 25):
if i % 7 == 0 or i % 3 == 0:
uygun_sayilar.append(i)
print(uygun_sayilar)
En küçük değeri hazır fonksiyon kullanmadan bulma
sayilar = [6, 2, 8, 0, 9]
en_kucuk = sayilar[0]
for sayi in sayilar[1:]:
if sayi < en_kucuk:
en_kucuk = sayi
print(en_kucuk)
Boş liste olasılığı varsa ilk elemana erişmeden önce liste denetlenmelidir.
4. break ve continue
breakiçinde bulunduğu en yakın döngüyü sonlandırır.continueo turdaki kalan satırları atlayıp sonraki tura geçer.
for sayi in range(1, 11):
if sayi == 5:
continue
print(sayi, end=" ")
aranan = 18
sayilar = [4, 9, 18, 21]
bulundu = False
for sayi in sayilar:
if sayi == aranan:
bulundu = True
break
if bulundu:
print("Bulundu")
else:
print("Bulunamadı")
Uygulama: Asallık sınaması
sayi = int(input("2 veya daha büyük bir tamsayı giriniz: "))
asal = sayi >= 2
for bolen in range(2, int(sayi ** 0.5) + 1):
if sayi % bolen == 0:
asal = False
break
if asal:
print("Sayı asaldır.")
else:
print("Sayı asal değildir.")
5. İç içe döngüler ve matrisler
Python’da bir matris, listelerden oluşan bir liste ile temsil edilebilir.
matris = [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
]
print(matris[0])
print(matris[0][1])
for satir in matris:
for sayi in satir:
print(f"{sayi:3}", end=" ")
print()
İki matrisi eleman eleman toplama
matris1 = [[1, 2, 3], [4, 5, 6]]
matris2 = [[7, 8, 9], [1, 2, 3]]
sonuc = []
for i in range(len(matris1)):
yeni_satir = []
for j in range(len(matris1[i])):
yeni_satir.append(matris1[i][j] + matris2[i][j])
sonuc.append(yeni_satir)
print(sonuc)
Matris toplamı ve en küçük eleman
matris = [[6, 2, 3, 4], [4, 5, 6, 4], [7, 0, 9, 5]]
toplam = 0
en_kucuk = matris[0][0]
for satir in matris:
for sayi in satir:
toplam += sayi
if sayi < en_kucuk:
en_kucuk = sayi
print(toplam, en_kucuk)
6. Metin işleme ve karakter kodları
print(ord("a"))
print(chr(97))
Basit Sezar şifrelemesi
Bu örnek yalnızca karakter kodu ve döngü pratiği içindir; güvenli şifreleme yöntemi değildir.
metin = "bu bir metindir"
anahtar = 3
sifreli_metin = ""
for karakter in metin:
sifreli_metin += chr(ord(karakter) + anahtar)
print(sifreli_metin)
cozulmus_metin = ""
for karakter in sifreli_metin:
cozulmus_metin += chr(ord(karakter) - anahtar)
print(cozulmus_metin)
Metin istatistikleri
metin = "Python 3 ile programlama öğreniyoruz."
buyuk_harf = 0
rakam = 0
bosluk = 0
for karakter in metin:
if karakter.isupper():
buyuk_harf += 1
elif karakter.isdigit():
rakam += 1
elif karakter.isspace():
bosluk += 1
print(buyuk_harf, rakam, bosluk)
Alıştırmalar
- Girilen
niçin1 + 2 + ... + ntoplamını hemforhemwhileile bulun. - Bir listedeki pozitif, negatif ve sıfır değerlerin sayılarını bulun.
- Çarpım tablosunu iç içe döngülerle yazdırın.
- Kare bir matrisin ana köşegen toplamını bulun.
- Girilen metnin palindrom olup olmadığını, boşlukları ve harf büyüklüğünü göz ardı ederek sınayın.