Nano'nun Günlüğü…

Ideallerimi gerceklestirmek icin arastiriyorum, Unutmamak icin yaziyorum!

  • Bulundugunuz Sayfa: 
  • Ana Sayfa
  • Python Egitim Notlari – V

Python Egitim Notlari – V

Gönderim Ocak 27th, 2013

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[x:y:z])))

# 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…

Etiketler:
Bulundugu Konu Etiketleri Python, Yazilim |

Lutfen Yorumlarinizi Burdan Ulastiriniz!...

You must be Kullanici Adiniz : to post a comment.

Istatistik

  • 1 Uye
  • 334 Yazi
  • 16 Yorum Var