Basit Sözlük Programı için giriş (sınıf metodu, bezeyicisi... )


#21
class Sözlük():
    
    @classmethod
    def sözcük_ekle(cls,Türkçe,İngilizce):
        with open("sözlük.txt","r+") as f:
            metin_liste = f.readlines()    #dosyadaki verileri metin_liste adli listeye aktariyorum. 
            kontrol = True     #kontrol adli bool degiskenini yolda cevirme yapan polise benzetelim.Ve devam edelim
            for i in metin_liste:
                bitis_yeri = int(i.index("=")) - 1  # Burada                         
                kelime_tarama = i[0:bitis_yeri] # aradigim otonun kimligini istiyorum.(kısaca her kelimenin türkcesini aliyorum.cünkü kontrol mekamizmasinda kullanacagim bu parcalari.anlayamadiysan sorunuz lutfen)
                if kelime_tarama == Türkçe: #otolar(kelimeler) kontrole sokuluyor.
                    print("Sözlükte zaten böyle bir kelime var.") #eger bu oto aradigimiz oto ise goruyorsun cevirmenin sonucunu
                    kontrol = False #iste burada sakincali bir oto oldugu icin kontrol sorunsuz gecmedi.
                    break
            if kontrol == True: #eger kontrole takilan bir kelime yoksa(kontrol sorunsuz gecmisse
                metin_liste.extend("\n" + Türkçe + " = " + İngilizce) #bu oto gecebilir.yani kelimeyi yaz.
                with open("sözlük.txt","w+") as f:
                    f.writelines(metin_liste)
                print("{} sözlüge eklendi.".format(Türkçe))
                
        
        
    
    @classmethod
    def sözcük_sil(cls,türkce):
        with open("sözlük.txt","r+") as f:
            metin_liste = f.readlines()
            f.seek(0)
            eski_metin = f.readlines()
            for i in metin_liste:
                bitis_yeri = int(i.index("=")) - 1            
                kelime_tarama = i[0:bitis_yeri]
                if kelime_tarama == türkce:
                    metin_liste.remove(i)
                    break
        with open("sözlük.txt","w+") as f:           
            f.writelines(metin_liste)
            
        if eski_metin == metin_liste:
            print("Sozlukte boyle bir kelimr yok.")
        else:
            print("{} kelimesi sözlükten silindi.".format(türkce))
        
    @classmethod
    def sözcük_ara(cls,Türkçe):
         with open("sözlük.txt","r+") as f:
            metin_liste = f.readlines()
            kontrol = True   
            for i in metin_liste:
                bitis_yeri = int(i.index("=")) - 1            
                kelime_tarama = i[0:bitis_yeri]
                if kelime_tarama == Türkçe:
                    print(i)
                    kontrol = False
                    break
            if kontrol == True:
                print("Ne yazik ki sözlügünüzde böyle bir kelime yok.")

Kusura bakmayin lutfen.Biraz gec cevap vermek zorunda kaldim.Cunku telefon elime anca haftasonlari civari geciyor simdilik.Size hazirla fonksiyonunun gereksiz oldugunu soylemistim😊
(belki de yanlis dusunuyorum kimbilir):grin:.Kodlar arasinda bir yerde aciklama yaptim.Anlayamazsaniz sorabilirsiniz.

Sahsen ben de düsunecegim😊.


#22

Merhaba, üzerinden yıl geçmiş bir konuya geri döndüm. Buna forumda hortlatmak deniyor sanırım. Çözümünüzdeki sözlük_ekle fonksiyonuz da kullanışlı bir yöntem olmuş. Hazırla adlı fonksiyonum da aynı işlevi görüyor. Fazla kod yazmak yerine sizin kodunuzu tercih edebilirim. Tersinden baktığımda da yazdığım kodlar sizinkine nazaran daha bir kategori halinde ve anlaşılır duruyor. Bilemedim iki yönde de iyi bir taraf var. Ama emek verdiğiniz için de teşekkür ederim. :slight_smile: Umarım konuyu hortlatmak hoşunuza gider… Ben zira hiç bıkmıyorum… :slight_smile: