Dersler

View on GitHub

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

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

  1. Girilen n için 1 + 2 + ... + n toplamını hem for hem while ile bulun.
  2. Bir listedeki pozitif, negatif ve sıfır değerlerin sayılarını bulun.
  3. Çarpım tablosunu iç içe döngülerle yazdırın.
  4. Kare bir matrisin ana köşegen toplamını bulun.
  5. Girilen metnin palindrom olup olmadığını, boşlukları ve harf büyüklüğünü göz ardı ederek sınayın.