Python'da yeni bir şeyler öğrenmek için sınıfların nasıl oluşturulduğuna dair örnek yaptım. Bir metin dosyasında bulunan sahaları tab karakteriyle ayrılmış olan öğrenci bilgilerini (her satırda bir öğrenci bilgisi olacak şekilde) okuyup Ogrenci sınıfı şeklinde örnekler oluşturan ve bu örnekleri ekrana basan bir proje yaptım.
Aşağıda bu proje için yazmış olduğum sınıfları açıklamalarıyla inceleyebilirsiniz. Java'da yazabileceğimden daha az kod yazdığım bir gerçek. Metin hallerini en alttaki bağlantıdan indirebilirsiniz.
Metin Dosyası Yapısı (ogrenciler.txt)(sahalar \t - tab - karakteriyle ayrılmıştır)
1 Ali Veli Kirkdokuzelli 4 1998
2 Suphi Suphan 3 1999
3 Mustafa Canveren 2 2000
4 Ahmet Bitiveren 1 2001
Ogrenci sınıfı (Ogrenci.py):
#Ogrenci bilgilerini tuttugumuz sinif
class Ogrenci:
#Yeni ogrenci yaratmak icin ilgili bilgilerini girmek gerekiyor
#__init__ bu sinifin yapicisi oluyor
def __init__(self, numara,isim,sinif,girisYili):
#Basina __ ekleyince private degisken oluyor
self.__isim = isim
self.__numara = numara
self.__sinif = sinif
self.__girisYili = girisYili
#Ogrenci bilgileri metin olarak donduren metod
def toString(self):
return self.__numara+' '+self.__isim+' '+self.__sinif+' '+self.__girisYili
OgrenciAraclar sınıfı (OgrenciAraclar.py):
from Ogrenci import *
#Bu metodun amaci parametre olarak adi verilen dosyayi acmak
#ve icerisindeki ogrenci bilgilerini bir dizi veri yapisina aktarmaktir
class OgrenciAraclar:
def ogrencileriOku(self,dosyaAdi):
#Dosyayi okumak icin aciyoruz
f=open(dosyaAdi,'r')
#Dosyadaki tum satirlari okuyoruz
satirlar =f.readlines()
#Ogrenci listesini yaratiyoruz
ogrenciler = []
#Dosyadan okudugumuz her satir icin
for ogrenciBilgisi in satirlar:
#Satirdaki ogrenci bilgisinden ogrenci nesnesini olusturup
#listemize ekliyoruz
ogrenciler.append(self.__ogrenciUret(ogrenciBilgisi))
#ogrenci listemizi donduruyoruz
return ogrenciler
#Bu metodun amaci string olarak verilen ogrenci bilgisinden
#Ogrenci sinifi ornegini olusturup dondurmektir
def __ogrenciUret(self,ogrenciBilgisi):
#String icerisindeki satir sonu karakterini yokediyoruz ve bosluklari kaldiriyoruz
ogrenciBilgisi = ogrenciBilgisi.replace('\n',' ').strip()
#Ogrenci bilgisi stringini saha parcalarina ayiriyoruz
tokenler = ogrenciBilgisi.split('\t')
#yeni ogrenci nesnesini tokenlerden olusturup donduruyoruz
return Ogrenci(tokenler[0],tokenler[1],tokenler[2],tokenler[3])
AnaProgram sınıfı (AnaProgram.py):
#OgrenciAraclar icerisindeki tum siniflari kullanacagiz
from OgrenciAraclar import *
#Yukaridaki metodu cagirip deniyoruz
ogrenciAraclar = OgrenciAraclar()
ogrenciler = ogrenciAraclar.ogrencileriOku('ogrenciler.txt');
#Okunan ogrenci bilgilerini ekrana yaziyoruz
for ogrenci in ogrenciler:
print ogrenci.toString()
Bu kaynak kodları sınıf ismini kullanarak ilgili *.py dosyasına yazın (yazılmışını alttaki bağlantıdan indirebilirsiniz), öğrenci bilgilerini ogrenciler.txt dosyasına yazın ve tüm dosyaları aynı dizinde toplayın. python AnaProgram.py komutunu komut satırında girerek projeyi çalıştırabilirsiniz.
Kaynak kodlar için tıklayabilirsiniz.
Not: Biçimlendirme için http://formatmysourcecode.blogspot.com/ kullanıldı.
6 yorum:
kodları aynen derliyorum fakat no module named Ogrenci hatasını sürekli veriyor. pythonu yeni öğreniyorum yardımcı olur musunuz sebebi nedir
Merhaba,
Yukarıdaki ayrı ayrı yazdığım kodların herbirini sınıf ismiyle aynı *.py dosyasına koyup, metin dosyasını da ogrenciler.txt dosyasına yazın ve bütün bu dosyaları aynı dizine yerleştirin. Sonrasında python AnaProgram.py dediğinizde çalışacaktır.
Ayrıca http://rapidshare.com/files/319697618/pythonSinif.zip adresinden bahsettiğim şekilde hazırlanmış dosyaları indirebilirsiniz. Siz muhtemelen Ogrenci.py dosyasını aynı dizine koymayı unuttunuz.
linkte sorun var sanırım indiremedim yenileyebilir misiniz
Merhaba,
İki indirme bağlantısı daha ekledim. Posta adresiniz olsa oraya da gönderebilirim? Posta adresime profil sayfamdan erişebilirsiniz.
Şu kodları ve linki tekrar yenilermisiniz.
Tam bana lazım olan birşey di yardımcı olursanız sevinirim.
Merhaba,
Yazıya indirebileceğiniz bir bağlantı eklenmiştir.
Yorum Gönder