14 Aralık 2011 Çarşamba

Karakter Dizi Metodları -2

Ljust
Bu metod karakter dizisinin sağında boşluk bırakarak,karakter dizisinin sola yaslanmasını sağlar.

>>> "python".ljust(10)
'python '

ikinci bir örnek ise

>>> "python".ljust(10,"*")
'python****'

şeklinde ek ifadeler ekleyebiliriz

Rjust
Bu metod karakter dizisinin solunda boşluk bırakarak,karakter dizisinin sağa yaslanmasını sağlar.

>>> "python".rjust(10,"*")
'****python'

Zfill
Bu metod da önceki işlediğimiz 2 metoda benzer bir görevi vardır.Zfill() metodu ile sayıların
soluna istedeğimiz kadar 0 yerleştirebiliriz

>>> x=7
>>> x="7"
>>> x.zfill(2)
'07'

şeklinde 0 sayısını eklememizi sağlar.

Replace
Bu metod python metodları içinde en çok işimize yarayacak metod olacak.replace() metodu ile bir
karakter dizisi içindeki karakterleri,başka bir karakter ile değiştirebiliriz.

>>> cumle="python dilini öğreniyorum"
>>> cumle.replace("i","ı")
'python dılını öğrenıyorum'

Startswith
Bu metod ile karakter dizilerimizin belli bir harfle veya karakterle başlayıp başlamadığını
öğrenebiliriz.

>>> x="elma"
>>> x.startswith("e")
True
>>> a="python"
>>> a.startswith("a")
False

Endswith
Bu metod da bir önceki metodun tam tersi görevi yapmaktadır.Yani bir karakter dizisinin hangi
karakter yada harfle bittiğini bulmamızı sağlar.

>>> x="python"
>>> x.endswith("p")
False
>>> x.endswith("n")
True

Count
Bu metod ile karakter dizimizin içerisinde bir karakterden kaç tane olduğunu bulmamızı sağlar.

>>> x="film,dizi,sinema"
>>> x.count("i")
4

Isalpha
Bu metod ile karakter dizimizin alfabetik olup olmadığını kontrol edebiliriz.

>>> x="python"
>>> x.isalpha()
True
>>> x="number1"
>>> x.isalpha()
False

İsdigit
Bu metod da bir önceki metodun ters işlemini yani girilen karakter dizsinin sayısal olup olmadığını
öğrenmemizi sağlar.

>>> x="123asd456"
>>> x.isdigit()
False
>>> x="456123789"
>>> x.isdigit()
True

Isalnum
Bu metod bir karakter dizisinin alfanümerik olup olmadığı hakkında bize bilgi verir.

>>> x="123asd456"
>>> x.isalnum()
True
>>> x="123/"
>>> x.isalnum()
False

Islower ve Isupper
Islower karakter dizisinin tamamının küçük harflerden oluşup oluşmadığını denetlememizi sağlar.
Isupper ise karakter dizisinin tamamının büyük harferden oluşup oluşmadığını denetlememizi sağlar.

>>> sehir="Bartın"
>>> sehir.islower()
False
>>> sehir="bartın"
>>> sehir.islower()
True


>>> sehir="Bartın"
>>> sehir.isupper()
False
>>> sehir="BARTIN"
>>> sehir.isupper()
True

Istitle
Bu metod ile karakter dizimizin ilk harfinin büyük olup olmadığını öğrenebiliriz.

>>> bolum="yönetim bilişim sistemleri"
>>> bolum.istitle()
False
>>> bolum="Yönetim bilişim sistemleri"
>>> bolum.istitle()
False
>>> bolum="Yönetim Bilişim Sistemleri"
>>> bolum.istitle()
True

Isspace
Bu metod ile karakter dizimizin boşluktan oluşup oluşmadığını denetleyebiliriz.

>>> x=" "
>>> x.isspace()
True
>>> x="Python Programlama Dili"
>>> x.isspace()
False

10 Aralık 2011 Cumartesi

Karakter Dizi Metodları -1

Listeler konusunda bu konuya benzer bir konu işlemiştik.Ama artık pythonda ilerlediğimize göre
daha complex terimler göremenin vakti geldi.
Öcelikle göreceğimiz metodları ekrana yazdırmakla başlayalım

>>> dir("")
['__add__', '__class__', '__contains__', '__delattr__', '__doc__', '__eq__', '__format__',
'__ge__', '__getattribute__', '__getitem__', '__getnewargs__', '__gt__', '__hash__',
'__init__', '__iter__', '__le__', '__len__', '__lt__', '__mod__', '__mul__', '__ne__',
'__new__', '__reduce__', '__reduce_ex__', '__repr__', '__rmod__', '__rmul__', '__setattr__',
'__sizeof__', '__str__', '__subclasshook__', '_formatter_field_name_split', '_formatter_parser',
'capitalize', 'center', 'count', 'encode', 'endswith', 'expandtabs', 'find', 'format',
'index', 'isalnum', 'isalpha', 'isdecimal', 'isdigit', 'isidentifier', 'islower', 'isnumeric',
'isprintable', 'isspace', 'istitle', 'isupper', 'join', 'ljust', 'lower', 'lstrip',
'maketrans', 'partition', 'replace', 'rfind', 'rindex', 'rjust', 'rpartition', 'rsplit',
'rstrip', 'split', 'splitlines', 'startswith', 'strip', 'swapcase', 'title', 'translate',
'upper', 'zfill']

tabii bunların hepsini işlemeyceğiz.İşelemeyceklerimizi gruplandıracak olursak '__xxx__' şeklinde
önünde ve sonunda alt tire olanlardır.Çünkü bunlar özel metodlara girmektedir.Bunların farklı
kapsam alanları var.Bunların dışındaki metodları göreceğiz.

Capitalize
Bu metod ile cümlelerimizin,kelimelerimizin yada daha geniş kapsamıyla karakter dizilerinin ilk
harfini büyütmemize yardımcı oluyor.


>>> "python".capitalize()
'Python'


Upper
Bu metod ile küçük harflerden oluşan karakter dizisinin bütün harflerini büyültmemizi sağlıyor


>>> "python".upper()
'PYTHON'


Eğer bu metodda Türkçe karakter kullanırken hata alıyorsanız ayrıca birkaç işlem yapmamız gerekiyor.Örneğin

>>>"şennur".upper()
'\xc\x9fEKER'

gibi bir durum ile karşılaşıyorsanız

>>>import locale
>>>locale.setlocale(locale.LC_ALL,"")

şeklindek locale modülünü eklememiz gerekir.Ve sonra

>>>print u"şennur".upper()
'ŞENNUR'

burada kullandığımız u harfi unicode adlı bir veri tipini ifade ediyor.Şimdilik bunu dönüştürücü
şeklinde bilsek yeterli ileride göreceğiz zaten.

Lower
Bu metodda upper() metodunun tam tersini yani büyük harfi küçük harfe dönüştürüyor.

>>> "PYTHON".lower()
'python'


tıpkı upper metodunda da olduğu gibi Türkçe karakter sorunu için yine aynı işlemi yapmamız gerekecek.

Swapcase
Bu metod ise harfin o andaki durmunun tam ters haline dönüştürür.

>>> "PyThOn".swapcase()
'pYtHoN'

Title
capitalize() metodunun bütün kelimelerin baş harflerini büyük yapar.

>>> "python programlama öğreniyorum".title()
'Python Programlama Öğreniyorum'

Center
Karakter dizisinin sağında ve solunda programcının belirlediği sayı kadar boşluk bırakır.

>>> "python".center(12)
' python '

center() metodunun ikinci bir kullanımıda

>>> "python".center(12,"*")
'***python***'

şeklindede kullanabilmemizdir.

6 Aralık 2011 Salı

Python Hesap Makinesi

while True:
import math
try:
print("--------------------------------------------")
x=int(input("Toplama-->1\nÇıkarma-->2\nÇarpma-->3\nBölme-->4\n"
"Karakök-->5\nYüzde Alma-->6\nProgramdan Çıkma-->0\nTercihiniz:"))
print("--------------------------------------------")
if x==1:
sayı1=int(input("Birinci sayı "))
sayı2=int(input("İkinci sayı "))
toplam=sayı1+sayı2
print("Sonuc= ",toplam)
if x==2:
sayı1=int(input("Birinci sayı "))
sayı2=int(input("İkinci sayı "))
cikarma=sayı1-sayı2
print("Sonuc= ",cikarma)
if x==3:
sayı1=int(input("Birinci sayı "))
sayı2=int(input("İkinci sayı "))
carp=sayı1*sayı2
print("Sonuc= ",carp)
if x==4:
sayı1=int(input("Birinci sayı "))
sayı2=int(input("İkinci sayı "))
böl=sayı1/sayı2
print("Sonuc= ",böl)
if x==5:
sayı1=int(input("Sayıyı Giriniz "))
karakök=math.sqrt(sayı1)
print("Sonuc= ",karakök)
if x==6:
sayı1=int(input("Sayıyı Giriniz "))
sayı2=int(input("Yüzde kaç "))
yuzde=(sayı1*sayı2)/100
print("Sonuc= ",yuzde)
if x==0:
break
if x<0 or x>6:
continue
except ZeroDivisionError:
print("Lütfen paydayı 0'dan farklı bir sayı giriniz!")
except ValueError:
print("Lütfen sayısal ifadeler girin!")


4 Aralık 2011 Pazar

Hata Ayıklama(raise)

Pythonda yazdığımız bir programda normalde kullanıcınınyaptığı işlemlerde hata vermese bile biz
istersek kullanıcıya hata mesajı verebiliriz.
Mesala bir toplama işleminde 3 ile işlem yapmak istemiyorsanız,

sayi=int(input("Birinci sayı: "))
sayi1=int(input("İkinci sayı: "))
if (sayi or sayi1)==3:
raise Exception("Bu programda 3 sayısınız kullanamazsınız!!!")
else:
print(sayi+sayi1)





bu kodlamayı yapmalısınız.Bu ne işimize yarar sorusuna gelince o sizin hayal gücünüze bağlı :D

Şimdi raise ile hem mesaj verelim hemde pythonun hatasını yazdıralım:

try:
bölünen = int(input("bölünecek sayı: "))
bölen = int(input("bölen sayı: "))
print(bölünen/bölen)

except ZeroDivisionError:
print("bir sayıyı 0'a bölemezsiniz")
raise






bu kodumuzda önce sayıları karşılaştıracak,eğer bölen 0 değilse sonucu ekrana yazacak.Eğer bölen 0
ise önce "bir sayıyı 0'a bölemezsiniz" bizim mesajımızı ardından pythonun kendine özgü hata mesajını
ekrana verecektir.

3 Aralık 2011 Cumartesi

Hata Ayıklama(except...as...)

Python'da hata mesajları 2 bölümden oluşur
1)Hatanın adı
2)Hatanın mesajı

Örneğin

ValueError: invalid literal for int() with base 10: 'x'

Burada "ValueError" bilidğimiz gibi hatanın adıdır."invalid literal for int() with base 10: 'x'"
kısmı ise hata mesajıdır.İstersek bizbu mesajı değiştirip kullanıcının anlayacağı şekle dönüştürebiliriz.


while True:
try:
x=int(input("Bir sayı Giriniz: "))
if x%2==0:
print("Girilen sayı çift sayıdır.")
else:
print("Girilen sayı tek sayıdır.")
except ValueError as hata:
print("Karakter Hatası\nPython'un verdiği hata:",hata)






kodumuzu açıklayacak olursak:
Kullanıcıdan bir sayı alan program,bu sayının 2'ye tam bölünüp bölünmedğini kontrol ediyor.Buradan
sonuç 0 ise if'in içindeki print ifadesini yazdırıyor.Eğer sonuç 0'dan farklı ise else ifadesi içindeki
print ifadesi içeriğini yazdırıyor.Eğer kullanıcı a,b,e,? gibi karakterler girerse son iki satırda
ValueError ile yakaladığımız yazım hatasını mesajını devreye koyuyor ve böylelikle kullanıcıyı
yönlendirmiş oluyor.

Hata Ayıklama(continue-else...finaly)

continue ifadesi üzerinde fazla durmadan sadece 1 örnek vererek geçeceğim.

while True:
x=input("Bir sayı giriniz: ")
if x=="çıkış":
break
if len(x)<5:
continue
print("En fazla 5 heneli bir sayı girebilirsiniz...")






bu programda amaç kullanıcıdan en fazla 5 haneli bir sayı almak.5 haneyi geçecek bir sayı yazarsa
bunu "En fazla 5 heneli bir sayı girebilirsiniz..." şeklinde uyarmak.Eğer 5 haneden daha az girerse
continue ifadesi ile programın başına geri döenere bizden tekrar yeni bir sayı girmemizi isteyecek.


else...finally...


else...finally... ifade try... except... ifadesinin bir bakıma devemı niteliğindedir.
Mesala bir bölme işlemini yapan program yazdığımızı varsayalım.Kullanıcı bu programda sayıda
girebilir diğer karakterlerdende girebilir.Bunu önlemek için except ValueError: ifadesini
kullnıyorduk.Ama kullanıcı paydayı 0 girdi diyelim o zaman ne olacak.Hangi sayı 0'a bölünür Ki?
Tabiki burada python kendi çapındaki hata mesajını ekrana yansıtacak.İşte bunun gibi 1.hatadan
sonraki hataları yakalamak için else...finally... ifadesini kullanıyoruz.Şunu sorabilirsinizi:
"try...except... aynı işi yapmıyor mu?" Bu soruya yanıt evet olacaktır.Ama eğer kodlamamızda
hataları gruplamak istersek else...finally... tercih edebiliriz.else...finally bir özelliğide
...finally kodundan önce herhangi bir hata verse bile bu koddan sonraki işlemleri
hiç hata vermemiş gibi işletmesidir.Şimdi bu yazdıklarımızı örenkle açıklayalım.

Örneğimiz bölme işleminin yapan program kodlamasıdır


try:
bölünen = int(input("bölünecek sayı: "))
bölen = int(input("bölen sayı: "))

except ValueError:
print("Bir Hata Oluştu!")

else:
try:
bölme=bölünen/bölen

except ZeroDivisionError:
print("Bir sayıyı 0'a bölemezsiniz!")
finally:
print(bölme)

2 Aralık 2011 Cuma

Hata Ayıklama(pass)

pass ifadesi Türkçe anlamı geçmektir.Pythonda kullanım bakımından
bu anlama benzemektedir:Görmezden gelmek

Bir örnek açıklayalım
Programımız kalvyeden girilen 10'dan küçük 5 sayının kareleri toplamını bulan programı yazalım

sayac=1
toplam=0
while sayac<=5: sayac=sayac+1 x=int(input("1'den 10'a kadar bir sayı giriniz: ")) if x>10:
pass
else:
toplam=toplam+x*x
print("Girilen sayıların KARELERİ TOPLAMI: ",toplam)




şimdi kodumuzu açıklamaya başlayalım.pass ifadesine kadar olan kısım önceki konudaki programa
benziyor.Program bizden bir sayı alıyor sonra bu sayının 10'dan büyük mü olduğunu kontrol ediyor,
eğer büyükse pass ile hiçbir işlem yapmadan sizden tekrar bir sayı girmenizi istiyor,eğer girdiğiniz
sayı 10'dan küçükse pass ifadesini atlayarak else kısmındaki kodları çalıştırarak girilen
sayıların karelerinin toplamını alıp ekrana yazıyor.

1 Aralık 2011 Perşembe

Hata Ayıklama(break)

Python'da break özel bir deyimdir.Bu deyim ile devam etmekte olan bir programı kesintiye uğratabiliriz.
Daha öncede kullandğımız bu deyim programın belli bir yerinden sonra,programı sonlandırmamızı
sağlıyordu.
Şimdi ise bunu hata yakalamada kullanacağız.

Örneğin;

Klavyeden girilen 5 sayının 10'dan küçük sayıların toplamını bulan programı kodlayalım

sayac=1
toplam=0
while sayac<=5: sayac=sayac+1 try: sayi=int(input("sayı :")) if sayi<=10: print ("Girilen sayı-->",sayi)
toplam=toplam+sayi
print("Girilen sayılarn toplamı: ",toplam)
else:
print("Girilen sayı 10'dan büyüktür,lütfen 10'dan küçük sayı giriniz.")
continue
except ValueError:
break


Şimdi bu kodu açıklayalım.Kodda daha önceden görmediğimiz hiç yeni kod yok.
İlk öncelikle bir "sayac" şeklinde bir değişken belirledim.Bunun nedeni ise programın bizden 5 tane
sayı aldığında programdan çıkmamazı sağlayacak."continue" komutuyla her girdiğimiz sayıda başa dönmesini
sağladık.Buraya kadar her şey çok güzel.Kullanıcı olduda yanlışlıka "a" harfi yada "3e" gibi bir şey yazdı.
Bunun neticesinde hiçbir uyarı almadan programdan çıkacaktır ve programı yeniden başlatması gerekecektir.