Files
ornekler/temeller/08-sozlukler/sozlukler.kbl
T
semih 494781e84f Dersler ve Temeller; web örnekleri PORT ortam değişkenini okur
- dersler/: 29 kısa ders (açıklama, çalıştırılabilir örnek, alıştırma). Her örneğin
  ve alıştırma çözümünün çıktısı Online IDE'nin hazırlık adımında gerçekten koşulup
  dosyadakiyle karşılaştırılır; biçim dersler/BICIM.md.
- temeller/: tek konulu 12 başlangıç programı.
- web/anket, web/kisalt, web/pano: port PORT ortam değişkeninden okunur (Online IDE
  önizlemesi 8080 verir), yoksa eski sabit port.
- README: öğrenme bölümü, Online IDE bağlantısı.
2026-10-17 22:07:47 +03:00

103 lines
4.5 KiB
Plaintext

# Sözlükler: anahtar-değer çiftleri, ekleme, sorgulama, gezme ve kelime sayımı
#
# Sözlük, her değeri bir anahtarla eşleştiren kaptır. Listede öğeye sıra
# numarasıyla ulaşırken sözlükte anahtarla ulaşırız: plaka["Ankara"] gibi.
# Süslü parantezle yazılır: {anahtar: değer, anahtar: değer}.
# ── Oluşturma ve okuma ────────────────────────────────────────
plaka = {"İstanbul": 34, "Ankara": 6, "İzmir": 35}
yazdir(f"Sözlük : {plaka}")
yazdir(f"Ankara'nın plakası : {plaka['Ankara']:02}")
yazdir(f"Kaç şehir var : {plaka.uzunluk()}")
yazdir()
# ── Ekleme ve güncelleme ──────────────────────────────────────
# Olmayan bir anahtara değer atamak yeni çift ekler; var olana atamak değeri değiştirir.
plaka["Bursa"] = 16
plaka["Trabzon"] = 61
plaka["İzmir"] = 35
yazdir(f"Eklemeden sonra: {plaka}")
# ── Sorgulama ─────────────────────────────────────────────────
# Sözlükte olmayan bir anahtarı okumak programı hatayla durdurur.
# Emin değilsek önce var_mi() ile soruyoruz.
dongu sehir icinde ["Trabzon", "Konya"]:
eger plaka.var_mi(sehir):
yazdir(f"{sehir}: {plaka[sehir]}")
degilse:
yazdir(f"{sehir}: sözlükte yok")
# ── Silme ─────────────────────────────────────────────────────
# Sözlükte sil() ANAHTARA göre siler (listede konuma göre silerdi).
plaka.sil("Bursa")
yazdir(f"Bursa silindi, kalan {plaka.uzunluk()} şehir")
yazdir()
# ── Gezme ─────────────────────────────────────────────────────
# anahtarlar() bütün anahtarları bir liste olarak verir.
# Bu liste eklenme sırasında değildir; harflerin bilgisayardaki kod sırasına
# göre dizilir ve bu sırada İ, Ş, Ö gibi harfler Z'den sonra gelir (yukarıda
# Trabzon, İstanbul'dan önce yazıldı). Türk alfabesine göre gezmek için
# anahtar listesini alıp sirala() ile sıralıyoruz.
sehirler = plaka.anahtarlar()
sehirler.sirala()
yazdir("Şehir Plaka")
dongu sehir icinde sehirler:
yazdir(f"{sehir:<12}{plaka[sehir]:>5}")
yazdir()
# ── Metinden metne sözlük: küçük bir sözlük uygulaması ────────
ingilizce = {
"kitap": "book",
"kalem": "pencil",
"okul": "school",
"öğretmen": "teacher"
}
cumle = ["öğretmen", "okul", "kitap", "defter"]
ceviri = []
dongu kelime icinde cumle:
eger ingilizce.var_mi(kelime):
ceviri.ekle(ingilizce[kelime])
degilse:
ceviri.ekle(f"?{kelime}?") # bilinmeyen kelimeyi işaretle
yazdir(f"{cumle.birlestir(' ')} → {ceviri.birlestir(' ')}")
yazdir()
# ── Sayım: hangi kelime kaç kez geçiyor? ──────────────────────
# Sözlüğün en sık kullanıldığı iş budur. Her kelime için:
# daha önce gördüysek sayısını bir artırırız, görmediysek 1 ile başlatırız.
metin_parcasi = "bir elma bir armut iki elma bir kiraz üç elma iki armut"
sayim = {}
dongu kelime icinde metin_parcasi.bol(" "):
eger sayim.var_mi(kelime):
sayim[kelime] = sayim[kelime] + 1
degilse:
sayim[kelime] = 1
yazdir(f"Metin: \"{metin_parcasi}\"")
yazdir(f"{sayim.uzunluk()} farklı kelime bulundu:")
# En sık geçen kelimeyi de aynı gezintide bulalım.
# Eşitlik olursa ilk karşılaşılan kalır, çünkü yalnız daha BÜYÜK adet yerini alır.
en_sik = ""
en_cok = 0
dongu kelime icinde sayim.anahtarlar():
adet = sayim[kelime]
# Her kelime için adedi kadar ▇ çizerek küçük bir çubuk grafik yapıyoruz.
yazdir(f" {kelime:<7}{adet:>2} " + "▇".tekrarla(adet))
eger adet > en_cok:
en_cok = adet
en_sik = kelime
yazdir(f"En sık geçen: \"{en_sik}\" ({en_cok} kez)")
yazdir()
# ── Not defteri: öğrenci → not ────────────────────────────────
notlar = {"Ayşe": 88, "Mehmet": 64, "Elif": 92, "Can": 47, "Deniz": 75}
toplam = 0
gecen = 0
dongu ogrenci icinde notlar.anahtarlar():
toplam += notlar[ogrenci]
eger notlar[ogrenci] >= 50:
gecen += 1
yazdir(f"Sınıf ortalaması {toplam / notlar.uzunluk():.1f}; {notlar.uzunluk()} öğrenciden {gecen} kişi geçti.")