103 lines
4.5 KiB
Plaintext
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.")
|