Python Egitim Notlari - V
- Sevdanur GENC

- Jan 27, 2013
- 4 min read
Egitimin besinci adiminda, Python’da bir rehber uygulamasi olusturuyor olacagiz. Bunun icin belirli dizin yapilari olusturup icerilerine kullanacagimiz siniflari ekliyor olacagiz. Ayrica ilgili Tutorial’lara, kurmus oldugunuz Python paketleri icerisindeki The Python Tutorial.html icerisinden de ulasabilirsiniz. Rehber isminda bir bir dizin olusturuyoruz. Icerisine iki ayri dizin olarak siniflar ve yardimci isimlerinden yeni dizinler olusturuyoruz. #vim IpNo.py #Verilen string'i duzgun bir Ip olup olmadiginin kontrolunun yapildigi bir sinif olacaktir. #ip = IpNo("192.168.1.1") 0-255 arasi bir kontrol olacaktir. #ip = IpNo("192.1.1") girildigi zaman hata gondericek. #string.split('.') kullanilabilir # IpNo Sinifi #-*- coding: utf-8 -*- from yardimci.istisnalar import UygunDegil class IpNo: def __init__(self,ip): self.ip = ip self.kontrol() def kontrol(self): parcalanmis_ip = ip.split('.') if len(parcalanmis_ip) != 4: raise UygunDegil("4 Parca Degil") for parca in parcalanmis_ip: try: parca = int(parca) except ValueError: raise UygunDegil("Rakamlardan Olusmali") if parca<0 or parca>255: raise UygunDegil("Parcalar 0 ile 255 arasi olmalidir.") touch siniflar/__init__.py touch yardimci/__init__.py ls * python from siniflar.IpNo import IpNo ip = IpNo("192.168.1.1") ip ip.ip ile uygun olduguna dair mesaj geliyor ip = IpNo("192.168.1") ip = IpNo("192.168.33431.1") from siniflar.IpNo import IpNo ekran ciktisi ; >>> ip = IpNo("192.168.1.1") >>> ip.ip '192.168.1.1' # Telefon Sinifi #-*- coding: utf-8 -*- from yardimci.istisnalar import UygunDegil #05555555555 -> 0 ile baslayacak 11 tane hepsi rakkam class Telefon: def __init__(self,telefon): self.telefon = telefon self.kontrol() def kontrol(self): if not self.telefon.isdigit(): raise UygunDegil("Telefon Numarasi Rakamlardan Olusmali...") if not self.telefon.startswith('0'): raise UygunDegil("Telefon Numarasi 0 Ile Baslamalidir....") if not len(self.telefon) != 11: raise UygunDegil("Telefon Numarasi 11 Haneli Olmalidir...ß") # TCKimlik Sinifi #-*- coding: utf-8 -*- from yardimci.istisnalar import UygunDegil class TCKimlik: def __init__(self,tc): self.tc = tc self.kontrol() def kontrol(): #11 hane<0-10> #tamamen rakkam #basi 0 olamaz #(0.+2.+4.+6.+8.)*7 - (1.+3.+5.+7.) %10 -> 9 #toplam(1-9) % 10 -> 10.hane if len(self.tc) !=11: raise UygunDegil("Tc 11 Haneli Degildir...") if self.tc.startswith('0'): raise UygunDegil("Tc 0 Ile Baslayamaz...") if self.tc.isdigit(): raise UygunDegil("Tc Sadece Rakamdan Olusmalidir...") if (sum(map(int, self.tc<0:10>))) % 10 != int(self.tc<10>) or (sum(map(int, self.tc<0:9:2>))) * 7 - (sum(map(int, self.tc<1:9:2>))) % 10 != int(self.tc<9>): raise UygunDegil("Tc Hatali") if (sum(map(int, self.tc<0:10>))) % 10 != int(self.tc<10> or (sum(map(int, self.tc<0:9:2>)) * 7) - (sum(map(int, self.tc<1:9:2>)))) % 10 != int(self.tc<9>)): raise UygunDegil("Tc Hatali") TCKimlik("97797987") if topla(self.tc,0,10,1) def topla(dizi,x,y,z): return (sum(map(int, dizi))) # Kisi Sinifi #ad -> string #soyad -> string #tc -> TCKimlik() #ip ->IpNo() #telefon -> Telefon() #__str__fonk. ad: soyad: #ornek = Kisi() #raw_input("Ad Giriniz") #ornek.ad_gir("ad") #ornek... #-*- coding: utf-8 -*- from siniflar.TCKimlik import TCKimlik from siniflar.IpNo import IpNo from siniflar.Telefon import Telefon class Kisi: def __init__(self,ad): self.ad = ad def soyad_gir(self,soyad): self.soyad = soyad def tc_gir(self,tc): self.tc = TCKimlik(tc) def ip_gir(self,ip): self.ip = IpNo(ip) def tel_gir(self,tel): self.tel = Telefon(tel) def __str__(self): return "Ad : {ad}, Soyad : {soyad}\nTc : {tc}\nIp : {ip}\nTelefon {telefon}".format(ad=self.ad, soyad=self.soyad, tc=self.tc, ip=self.ip, telefon = self.tel) from siniflar.Kisi import Kisi >>> ornek = Kisi("Sevdanur") >>> dir(ornek) <'__doc__', '__init__', '__module__', '__str__', 'ad', 'ip_gir', 'soyad_gir', 'tc_gir', 'tel_gir'> >>> ornek.ip_gir("10.10.10.10") >>> ornek.soyad_gir("genc") >>> ornek.tel_gir("05321118918") >>> ornek.tc_gir("97927921413") >>> print ornek # Rehber.Py Sinifi olusturuluyor #raw_input ile ad soyad tc telefon ip alinacak #kisi nesnesini kisiler listesine eklenecek #ad olarak -1 girilirse cikilacak from siniflar.Kisi import Kisi kisiler = [] while 1: ad = raw_input("Ad Giriniz...") try: if int(ad) == -1: break except: pass kisi = Kisi(ad) soyad = raw_input("Soyad Giriniz...") kisi.soyad_gir(soyad) try: tc = raw_input("Tc Giriniz...") kisi.tc_gir(tc) ip = raw_input("Ip Giriniz...") kisi.ip_gir(ip) telefon = raw_input("Telefon Giriniz...") kisi.tel_gir(telefon) except: print ("Kisi Hatali") continue kisiler.append(kisi) for kisi in kisiler: print kisi # Dosyaya yazma import cPickle #dosyalara nesneleri yazmak icin kullaniliyor. from siniflar.Kisi import Kisi ornek = Kisi("sevda") ornek.soyad_gir("jkjh") ornek.tc_gir("987897") ornek.tel_gir("897897") ornek.ip_gir("1.1.1.1") ornek dosya = open("veritabani.txt","w") cPickle.dump(ornek, dosya) dosya.close() Kaydedilen dosyadan siniflari almak istenildiginde; from siniflar.Kisi import Kisi import cPickle dosya= open("veritabani.txt","r") dosya.seek(0) kisi = cPickle.load(dosya) kisi.ad kisi.soyad kisi.tc.tc import sqlite3 #yardimcinin icerisine veritabani.py aciyoruz import sqlite3 import os class Veritabani: def __init__(self,dosya_adi): self.dosya_adi = dosya_adi if not os.path.exists(dosya_adi): self.veritabani_olustur() def veritabani_olustur(self): baglanti = sqlite3.connect(self, dosya_adi) veritabani = baglanti.cursor() veritabani.execute('''create table kisiler (ad text, soyad text, tc text, telefon text, ip text)''') baglanti.commit() baglanti.close() def veri_isle(self,veri): baglanti = sqlite3.connect(self, dosya_adi) veritabani = baglanti.cursor() veritabani.execute('''insert into kisiler values("%s", "%s", "%s", "%s", "%s")''' % (veri.ad, veri.soyad, veri.tc.tc, veri.ip.ip, veri.tel.telefon)) baglanti.commit() baglanti.close() def veri_getir(self): baglanti = sqlite3.connect(self, dosya_adi) veritabani = baglanti.cursor() veritabani.execute('''select * from kisiler''') print veritabani baglanti.close() #raw_input ile ad soyad tc telefon ip alinacak #kisi nesnesini kisiler listesine eklenecek #ad olarak -1 girilirse cikilacak from siniflar.Kisi import Kisi kisiler = [] while 1: ad = raw_input("Ad Giriniz...") try: if int(ad) == -1: break except: pass kisi = Kisi(ad) soyad = raw_input("Soyad Giriniz...") kisi.soyad_gir(soyad) try: tc = raw_input("Tc Giriniz...") kisi.tc_gir(tc) ip = raw_input("Ip Giriniz...") kisi.ip_gir(ip) telefon = raw_input("Telefon Giriniz...") kisi.tel_gir(telefon) except: print ("Kisi Hatali") continue kisiler.append(kisi) for kisi in kisiler: print kisi #Rehber dizini altinda bir rehber.py dosyasini aciyoruz veritabanini import ediyor ve duzenliyoruz... #-*- coding: utf-8 -*- #raw_input ile ad soyad tc telefon ip alinacak #kisi nesnesini kisiler listesine eklenecek #ad olarak -1 girilirse cikilacak from siniflar.Kisi import Kisi from yardimci.veritabani import Veritabani kisiler = [] veritabani = Veritabani("veritabani.db") while 1: ad = raw_input("Ad Giriniz...") try: if int(ad) == -1: break except: pass kisi = Kisi(ad) soyad = raw_input("Soyad Giriniz...") kisi.soyad_gir(soyad) try: tc = raw_input("Tc Giriniz...") kisi.tc_gir(tc) ip = raw_input("Ip Giriniz...") kisi.ip_gir(ip) telefon = raw_input("Telefon Giriniz...") kisi.tel_gir(telefon) except: print ("Kisi Hatali") continue kisiler.append(kisi) for kisi in kisiler: veritabani.veri_isle(kisi) print kisi import sqlite3 cursor = baglanti.cursor() cursor.execute("select * from kisiler") for i in cursor: print i python rehber.py ile giris yapiyoruz ad kismina -1 yaziyoruz ve tum verileri cikista listeliyor. Keyifli Calismalar Dilerim...
Comments