Python Alıştırma 2 [Çözüm Yayınlandı]

Başlatan dwain, 23 Temmuz 2010 - 09:44:04

« önceki - sonraki »

0 Üyeler ve 1 Ziyaretçi konuyu incelemekte.

dwain

Evet arkadaşlar,

Eğer biraz vaktinizi python a vermek ve geliştirmek istiyorsanız ve ne yapsam acaba diye aklınızda soru işaretleri dolanıyorsa size birazdan yazacağım ikinci alıştırma programı üzerinde çalışabilirsiniz.

Bunlar daha çok yeni öğrenenler ve geliştirmeye başlayanlar için alıştırma programları. Yine bir arkadaşım bana veriyor bunları ve ben de yapıyorum. Şu an yazacağım programı henüz ben de tasarlamadım. Beraber yapmaya başlarız artık. Haftasonu bağlanabilirsem buraya kodları da yazarım.

# 2010-07-22 Bora

Title:
   Bir dokumanda gecen kelimeleri alfabetik olarak grouplayan bir program gelistirmek

Task:
   Bir dokuman dosyasini okuyup, icerisinde gecen kelimeleri A'dan Z'ye grouplayip
   baska bir dosyaya yazan bir program gelistirecegiz.

   Ornek dokuman:
   "Bu dokumanin icerisinde gecen kelimeleri, ekteki dosya icerisinde A'dan Z'ye
   gruplanmis bir halde bulabilirsiniz."
   
   Olusturulacak dosya ornegi;
   
   -A-
      A'dan
   -B-
      Bu
      bulabilirsiniz.
   -D-
      dokumanin
      dosya
   -E-
      ekteki
   -G-
      gruplanmis
   -H-
      halde
   -I-
      icerisinde
   ...


Kolay gelsin...
Kaan Aslan
Mac OSX

dwain

#1
Selam arkadaslar,

Aradan bir gün gecti. Bu arada ben de dün kodu yazdım. Sizinle de artık paylasabilirim.

Dediğim gibi daha sonra kendisi çözmek isteyen olursa aşağıdaki kodlara bakmadan denemelerini yapabilir.

Kolay gelsin :)

def lettersort(text):
   harf = ["a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "r", "s", "t", "u", "v", "y", "z"]
   yeniharf = []
   duzenliharf = []
   global yeniliste
   yeniliste = []
   dosya = open(text, "r")
   oku = dosya.read().replace("\n", "") #dosyadaki yeni satir karakterlerini kaldiriyoruz.
   liste = oku.split(" ") #kelimeleri " " ile ayiriyoruz.
   for x in liste:
       yeniliste.append(x.lower())
       yeniliste.sort()
   for y in harf:
       for i in yeniliste:
           if i.startswith(y):
               yeniharf.append(y) #yeniharf listesine dosyadaki kelimelerin bas harfleri hangisiyle onlari ekliyor.
   for z in set(yeniharf): #tekrar eden harfleri kume ile ayikliyoruz.
       duzenliharf.append(z) #ayiklanan bu harfleri de duzenliharf listesine ekliyoruz.
       duzenliharf.sort() #sonra bunlari siraliyoruz.
   for a in duzenliharf: #duzenliharfin icerisine sadece dosyadaki kelimelere ait bas harfleri eklemistik.   
       print "-", a.upper(), "-\n" #burada bu harfleri teker teker sirala() fonksiyonuna atayarak islemimizi tamamliyoruz.
       sirala(a)
       print "\n"


def sirala(x): #bu fonksiyon atanmis olan harf ile baslayan kelimeleri listeliyor.
   for i in yeniliste:
       if i.startswith(x):
           print i




Kaan Aslan
Mac OSX

eribol

Güzel bir örnek olmuş. Ellerine sağlık.

heartsmagic

Böyle alıştırma babındaki uygulamalar daha akılda kalıcı oluyor. Eline sağlık @dwain.
Hayattan çıkarı olmayanların, ölümden de çıkarı olmayacaktır.
Hayatlarıyla yanlış olanların ölümleriyle doğru olmalarına imkân var mıdır?


Böylece yalan, dünyanın düzenine dönüştürülüyor.

dwain

Rica ederim. Begenmis olmaniza sevindim. Ben hemen hemen hergun veya iki gunde bir elimden geldigince bunun gibi beyin firtinasi yaptiracak program calismalari yazmaya calisacagim.

Bu arada yukaridaki program tum kelimeleri ayri ayri yaziyor. Ayni kelimeden birkac tane oldugunda da o kelimeyi birkac defa yaziyor.

Programs asagida kirmizi ile isaretledigim iki kucuk kod ekledim ve cikti alirken bu sefer ayni kelimeleri tekrar etmiyor ancak yaninda  o kelimenin kac defa gectigini rakamla gosteriyor. Bunlari saglamak icin asagida ekledigim kodlardaki kirmizi bolumleri inceleyebilirsiniz.

def lettersort(text):
    harf = ["a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "r", "s", "t", "u", "v", "y", "z"]
    yeniharf = []
    duzenliharf = []
    global yeniliste
    yeniliste = []
    dosya = open(text, "r")
    oku = dosya.read().replace("\n", "") #dosyadaki yeni satir karakterlerini kaldiriyoruz.
    liste = oku.split(" ") #kelimeleri " " ile ayiriyoruz.
    for x in liste:
        yeniliste.append(x.lower())
        yeniliste.sort()
    for y in harf:
        for i in yeniliste:
            if i.startswith(y):
                yeniharf.append(y) #yeniharf listesine dosyadaki kelimelerin bas harfleri hangisiyle onlari ekliyor.
    for z in set(yeniharf): #tekrar eden harfleri kume ile ayikliyoruz.
        duzenliharf.append(z) #ayiklanan bu harfleri de duzenliharf listesine ekliyoruz.
        duzenliharf.sort() #sonra bunlari siraliyoruz.
    for a in duzenliharf: #duzenliharfin icerisine sadece dosyadaki kelimelere ait bas harfleri eklemistik.   
        print "-", a.upper(), "-\n" #burada bu harfleri teker teker sirala() fonksiyonuna atayarak islemimizi tamamliyoruz.
        sirala(a)
        print "\n"


def sirala(x): #bu fonksiyon atanmis olan harf ile baslayan kelimeleri listeliyor.
    for i in set(yeniliste):
        if i.startswith(x):
            print i, "-", yeniliste.count(i)

       
   
Kaan Aslan
Mac OSX

heartsmagic

Güzel olur bu türlü paylaşımlar. Ancak ufak bir ricamız olsa, kodları kod etiketi içinde versek? :)
Hayattan çıkarı olmayanların, ölümden de çıkarı olmayacaktır.
Hayatlarıyla yanlış olanların ölümleriyle doğru olmalarına imkân var mıdır?


Böylece yalan, dünyanın düzenine dönüştürülüyor.

dwain

Tamamdir farkında değildim bu sekilde girmem gerektiğinin :)

İlk kodu düzelttim. İkincide kırmızı ile isaretledigim bölümler olduğu için şimdilik değiştirmedim.

Yarına yeni bir uygulama yazmaya çalışacağım.
Kaan Aslan
Mac OSX

heartsmagic

Teşekkürler. En azından birini kurtardık. Diğerini alıntı içine alalım derdim fakar bazen ordaki ifadeler gülen yüze dönüşüyor.
Hayattan çıkarı olmayanların, ölümden de çıkarı olmayacaktır.
Hayatlarıyla yanlış olanların ölümleriyle doğru olmalarına imkân var mıdır?


Böylece yalan, dünyanın düzenine dönüştürülüyor.