Düzenli İfadeler -2-

Yazar: Unknown Tarih: 19 Şubat 2012 Pazar Yorum: 2
Metakarakterler
Bu başlık altında python'da metakarakter olarak adlandırılan []  .  *  +  ?  {}  ^  $  |  ()  \
bu karakterleri göreceğiz.Giriş olarak kısa bir örnek yapalım

>>> import re
>>> liste=["turgay","turgut","özkan","özcan","özhan","kemal","dündar"]
>>> for i in liste:
    nesne=re.search("öz[chk]an",i)
    if nesne:
        print (nesne.group())

özkan
özcan
özhan

şeklinde bir örnek ile [] işareti ile belli bir harf aralıklarını içeren isimleri bulduk.Şimdi
bun karakterlerini işleyelim.

[] Köşeli Parantez
Giriş kısmındada bağsettiğimiz gibi belli bir karakteri yada belli bir aralığı araştırır.

Şimdi önceki yazımda anlattığım match metoduyla bir örnek yapalım...

>>> import re
>>> x=["1php","2python","perl","java","3jquery","4css","c/c++"]
>>> for y in x:
    if re.match("[0-9]",y):
        print (y)

1php
2python
3jquery
4css

yaptığımız örnek,sayı ile başlayan karakter dizilerini match metoduyla bulmak.
Eğer istersek if re.match("[0-9]",y): ifadesini if re.match("[A-Z]",y): şeklinde değiştirerek
har ile başlayan karakter dizilerini ekrana yazdırabiliriz.Ama tabi bu büyük hat aramsı yapacağı için
bizim örneğimizde çalışacak şekli if re.match("[a-z]",y): şeklindedir.

. Nokta
Bu metakarakteri yeni satır karakteri dışındaki karakterlerin yerini tutar.

>>>liste=['sema', 'sena', 'sefa', 'semra', 'sene']
>>> for i in liste:
    if re.match("se.a",i):
        print(i)

sema
sena
sefa

yukarıdaki örnek bir dizi oluşturup,dizi için de "se" ile başlayıp "a" ile biteni veya devam edeni
bulmasını istedik.Burada .nokta m,n,f karakterlerinin yerini tutarak işlemi gerçekleştirdi.
Eğer şöyle bir örnek yaparsanız

>>> liste=["ahmet","mehmet","samet",]
>>> for i in liste:
    if re.match(".met",i):
        print(i)

şeklindeki örnek hiç bir çıktı vermeyecek.Çünkü ilk örnektede olduğu gibi bu metakarakter tek
karakterin yerini tutar.

* Yıldız
Bu metakarakter, kendisinden önce gelen bir ifade kalıbını 0 veya daha fazla karakterde eşleştirir.
Yani .nokta karakterinin çoğulu gibi düşünebiliriz.

>>> liste=["at","sat","saat","kat","tat","strafor"]
>>> liste.append("strafor")
>>> for i in liste:
    if re.match("sa*t",i):
        print (i)

sat
saat
strafor

Bu örnekte yaptığımızı açıklamak gerekirse,s ile başlayan karakter dizilerini bulmak diyebiliriz.
Burada s ile başlayıp a ile devam eden karakter dizilerini buldu.Ama strafor ne alaka diyebilirsiniz.
Tanımda da dediğimiz gibi 0 veya daha fazla eşleştirme yapar.

Düzenli İfadeler / Regular Experessions

Yazar: Unknown Tarih: 16 Şubat 2012 Perşembe Yorum: (0)
Evet yeni bir konuya geçiş yapıyoruz.
Düzenli ifadeler her programlama dilinde oluduğu gibi pythonda da karşımıza çıkıyor.
Ama söylemeliyim ki python'nun belkide en karmaşık konusu.Ama elimden geldiğince basite indirgeyip
anlatmaya çalışacağım.Bu kadar konuşmadan sonra başlayalım...

Başlangıç olarak  re modülünü programa çağırmamız gerekiyor ki daha öncede yaptığımız gibi

>>>import re

Bunun arkasından dir(re) komutu ile kullanacağımız metodları ekrana yazdırabiliriz.
Gördüğünüz gibi biraz fazla.Tabiki hepsini anlatmayacağım ama bu anlatmayacaklarımın işinize
yaramayacağı anlamına gelmez.

Match() Metodu
Bu metod daha önce işlediğimiz split() ve startswith() metodlarıyla aynı işlevdedir.
Görevi ise bir karakter dizisi içinde bir kelime aramamızı sağlar fakat aradığımız kelime karakter
dizisinin başında olması gerekir.

>>> x="python dilini öğreniyorum"
>>> re.match("python",x)
<_sre.SRE_Match object at 0x0000000002D7C5E0>

Gördüğümüz gibi burada python kelimesi karakter dizimiz içinde var fakat python'nun bize döndürdüğü
mesaj pekde anlaşılır değil ama aradığımız kelimenin karakter dizisinin içinde varolduğunu söylüyor

Ama şunu yazarsak

>>> re.match("dilini",x)

herhangi bir çıktı ekrana gelmeyecektir.Aslında gelecektir fakat bunu görmek için kodun başına sadece
print ifadesini eklemek yeterli olacaktır.Peki karakter dizimizde "dilini" kelimesi var neden mesaj
vermedi derseniz match metdounun açıklama kısmının son cümlesine bakmanızı tavsiye ederim.

Split ve startswith ile aynı işlevde demiştik

>>> a.split()[0]=="python"
True
>>> a.split()[0]=="dilini"
False

>>> a.startswith("python")
True
>>> a.startswith("dilini")
False

Eğer amaç karakter dizisi başında bulunan bir kelimeyi bulmaksa Split ve startswith metodları kullanılmalıdır.
Çünkü Split ve startswith, match metodundan daha hızlıdırlar.

>>> y="abcdefg"
>>> re.match("abc")
<_sre.SRE_Match object at 0x0000000002E8C5E0>

>>> re.match("abcdef",y)
<_sre.SRE_Match object at 0x0000000002E8C648>

print (re.match("abcg",y))
none

Ama sitersek arattığımızda ne bulunduğunu da görebiliriz

>>> re.match("abcg",y)
>>> a="django,pythonnun çatısıdır"
>>> b=re.match("django",a)
>>> b.group()
'django'

Evet hemen bir programa yazalım

import re
x=input("Bir kelime giriniz: ")
y=re.match("python",x)
if y:
    print ("Kelimeniz (",y.group(),")ile başlıyor")
else:
    print ("Kelimeniz python ile başlamıyor")

bu programı yazıp masaüstünüze kaydedip deneyin ve siz de daha farklı programlar yazmayı deneyin ki
bu dersler dersler bir işe yarasın :)

Search() Metodu
Bu metod ile de karakter dizimizin tamammında arama yapabiliriz

>>>a="python dilinde en karışık konu düzenli ifadeler."
>>>re.search("ifadeler",a)
<_sre.SRE_Match object at 0x0000000002E2C648>

Bu kodla ilgili bir program yazarsak

import re
x=input("Bir cümle giriniz: ")
y=re.search("http://www.",x)
if y:
    print("cümlenizde internet adresi bulundu")
else:
    print("cümlenizde herhengi bir internet adresi yok")

Findall() Metodu
Bu metod ise yine search metodunun yaptığı işi yapar,ayrıca kelimenin karakter dizisi içinde
kaç tane olduğunu biz gösterir.

>>> import re
>>> z="Python'un son derece kolay okunabilir olması düşünülmüştür. Bu yüzden örneğin küme parantezleri yerine girintileme işlemi kullanılır. Hatta bazı durumlarda girintileme işlemine dahi gerek kalmadan kodun ilgili bölümü tek satırda yazılabilir. Böylece Python, program kodunuzu en az çaba ile ve hızlıca yazmanıza imkân tanır. Sade sözdizimi ile diğer programlama dillerinden üstündür."
>>> re.findall("python",z)
['Python', 'Python']

>>> c="Python programalama diline başlayalı çok olmadıki,pythonu sevmeye başladım"
>>> re.findall("python",c)
['python']

Yukarıda 2 tane örnek verdim.Fakat bunların ikisindede 2 tane python yazısı olamsına rağmen
birincisinde 2 tane python yazısı bul ikincisinde ise 1 tane.Bunun nedeni ise findall aranınlan
kelimeye tam olarak uyanı arar ve büyük küçük harf farkı bunu etkiler.

Karakter Dizi Metodları-4

Yazar: Unknown Tarih: 3 Şubat 2012 Cuma Yorum: (0)
Partition metodu
Bu metod ile bir karakter dizisini belli bir ölçüte göre ayırabiliriz.

>>> a="bartın"
>>> a.partition("rt")
('ba', 'rt', 'ın')

>>> a.partition("b")
('', 'b', 'artın')

Eğer aratacağımız karakter, bizim karakter dizimiz içinde yok ise

>>> a.partition("P")
('bartın', '', '')

RPartition metodu
Partition metodu ile aynı görevde olup tek farkı Partition metodu soldan sağa RPartition metodu
ise sağdan sola doğru okuma yapar.

>>> a.rpartition("n")
('bartı', 'n', '')

Strip Metodu
Bu metod ise karakter dizimizin başında ve sonunda yer alan boşluk ve yeni satır gibi karakterleri
kaldırır.

>>> b="   Yönetim Bilişim Sistemleri   "
>>> b.strip()
'Yönetim Bilişim Sistemleri'

RStrip Metodu
Bu metod ise strip metodunun sağdece sonuna yani sağındaki boşluk ve yeni satır karakterleri kaldırır.

>>> b.rstrip()
'   Yönetim Bilişim Sistemleri'

LStrip Metodu
Bu metodda karakter dizimizin başında yani solundaki boşluk ve yeni satır karakterleri kaldırır.

>>> b.lstrip()
'Yönetim Bilişim Sistemleri   '

Splitlines Metodu
Bu metod ile karakter dizimizde yeni satır noktalarından itibaren keserek, bunları bir liste
haline çevirebilmemizi sağlıyor.

>>> c="Yönetim\nBilişim\nSistemleri"
>>> c.splitlines()
['Yönetim', 'Bilişim', 'Sistemleri']

Split Metodu
Bu metod join() metoduna benzemektedir.join() metoduyla bir listenin öğelerini karakter dizisi
şekline çeviriyorduk.Split() ie bu işlemin tam tersini yapıyor.

>>> f="Python programlama dili"
>>> f.split()
['Python', 'programlama', 'dili']

Bu şekilde ayırabildiği gibi

>>> f.split(",")
['Python programlama dili']

şeklindede birleştirebilir.
Diğer bir özelliği ise bir karakter dizisini kaç kez kesme işleminin uygulanmasını belirlememiz

>>> site="wwww.pythondili.blogspot.com"
>>> site.split(".",2)
['wwww', 'pythondili', 'blogspot.com']

görüldüğü gibi karakter dizimizdeki . alanlarından 2 tanesinde ayırma işlemi yaptı.Eğer
site.split(".",3) yapsaydık

>>> site.split(".",3)
['wwww', 'pythondili', 'blogspot', 'com']

eğer ayıracağımız karakter, bizim karakter dizimizde yok ise

>>> site.split(",",3)
['wwww.pythondili.blogspot.com']

ayırma işlemi yapmayacaktır.

Karakter Dizi Metodlar-3

Yazar: Unknown Tarih: 21 Ocak 2012 Cumartesi Yorum: (0)
Expandtabs metodu
Bu metod ile karakter dizimizdeki sekme boşluklarının büyüklüğünü artırabiliyoruz.

>>> x="python\töğreniyorum."
>>> x.expandtabs(5)
'python    öğreniyorum.'

FIND metodu
Bu metod ile bir karakter dizisi içindeki bir karakterin kaçıncı konumda olduğunu bize söylüyor.

>>> a="Python kolay bir dil"
>>> a.find("o")
4

Gördüğümüz gibi "o" harfinin kaçıncı karakter(0'dan başladığını hatırlayalım) olduğunu bize verdi.
Ama "Python" dilinden sonra bir "o" harfi olan kelimemiz daha var.Ama python solda sağa doğru
okuma yaptığı için ilk "o" harfinin bulunduğu değeri verdi.

eğer arama yaptığımız harf yok ise -1 değerini bize döndürecektir.


>>> a="Python"
>>> a.find("i")
-1

Python bize aralık olarak arama yapmada imkanı veriyor:

>>> a="Python kolay bir dil"
>>> a.find("n",0,6)
5

Bu örnekte 0 ile 6. karakterler arasını araştırp bize "n" harfinin kaçıncı karakter olduğunu
söylemesini istedik.

Rfind metodu
Bu metod find metodu ile aynı görevi yapar fakat tek farkı karakter dizilerini soldan sağa değilde
sağdan sola doğru okur.

>>> a="python"
>>> a.rfind("p")
0


İndex metodu
find() metodu ile aynı işelve sahiptir.Tek değişik yönleri;fin() metodu bir karakteri bulamadığında
-1 değerini döndürür,index() metodu ise hata mesajı.

rindex metodu
Bu da index metodunun soldan sağa yaptığı okuma işini sağdan sola yapmaktadır.

join metodu
Bu metod karakter dizimizdeki her karakter arasına yeni bir karakter ekleme imkanı verir.

>>> a="python"
>>> "-".join(a)
'p-y-t-h-o-n'


>>> a=["php","jquery","ajax","android","python","c#","c++","java"]
>>> ":".join(a)
'php:jquery:ajax:android:python:c#:c++:java'


translate metodu
Bu metodu anlatmak hem karışık hemde zor olduğu için bu metodu istihza.com'dan alıntı yapacağım.


str.maketrans ve translate Metotları

Bu iki metot birbiriyle bağlantılı olduğu için, bunları bir arada göreceğiz.

Diyelim ki elimizde bir karakter dizisi var ve biz bu karakter dizisini şifrelemek istiyoruz. Bunun için şöyle bir kod yazdığımızı varsayalım:

sözlük = {"a":"0",
          "b":"1",
          "c":"2",
          "ç":"3",
          "d":"4",
          "e":"5",
          "f":"6",
          "g":"7",
          "ğ":"8",
          "h":"9",
          "ı":"a",
          "i":"b",
          "j":"c",
          "k":"ç",
          "l":"d",
          "m":"e",
          "n":"f",
          "o":"g",
          "ö":"h",
          "p":"ı",
          "r":"i",
          "s":"j",
          "ş":"k",
          "t":"l",
          "u":"m",
          "ü":"n",
          "v":"o",
          "y":"ö",
          "z":"p",
          " ":" "}

kardiz = "python programlama dili"

şifreli = ""
for i in kardiz:
        şifreli = şifreli + sözlük[i]

print(şifreli)

Bu kodu çalıştırdığımız zaman şöyle bir çıktı alırız:

ıöl9gf ıig7i0ed0e0 4bdb

Aslında bu çıktıda “python programlama dili” yazıyor. Biz yukarıdaki kodlar yardımıyla karakter dizimizi şifreledik. Python, yazdığımız sözlüğü temel alarak “p” harfi gördüğü yere “ı” harfini; “y” harfi gördüğü yere “ö” harfini, “t” gördüğü yere “l” harfini... yerleştiriyor. Böylece karakter dizimizin çıplak gözle anlaşılmasını engelleyecek bir çıktı veriyor bize. İsterseniz yukarıdaki kodları bir fonksiyon olarak tanımlayıp çok daha verimli bir hale getirebiliriz:

sözlük = {"a":"0",
          "b":"1",
          "c":"2",
          "ç":"3",
          "d":"4",
          "e":"5",
          "f":"6",
          "g":"7",
          "ğ":"8",
          "h":"9",
          "ı":"a",
          "i":"b",
          "j":"c",
          "k":"ç",
          "l":"d",
          "m":"e",
          "n":"f",
          "o":"g",
          "ö":"ğ",
          "p":"h",
          "r":"ı",
          "s":"i",
          "ş":"j",
          "t":"k",
          "u":"l",
          "ü":"m",
          "v":"n",
          "y":"o",
          "z":"ö",
          " ":" "}

def sifrele(kardiz):
        şifreli = ""
        for i in kardiz:
                şifreli = şifreli + sözlük[i]

        return şifreli

print(sifrele("python programlama dili"))

Fonksiyonumuzu bir kez bu şekilde tanımladıktan sonra sadece sifrele() fonksiyonunu kullanarak karakter dizilerimizi şifreleyebiliriz:

>>> print(sifrele("merhaba dünya"))

e5i9010 4nfö0

Burada bazı sorunlar olduğu açık. Mesela sözlük içinde tanımlanmamış karakter kullanıldığında programımız hata verecektir. Ayrıca açıkçası bu kodlar biraz “kalabalık” görünüyor göze...

İsterseniz yukarıdaki işlemi daha sade ve performanslı bir biçimde yapmanın bir yolu vardır Python’da...

Bunun için str.maketrans() ve translate() metotlarından yararlanacağız. Şu kodlara bir bakalım:

kaynak_dizi = "abcçdefgğhıijklmnoöprsştuüvyz"
hedef_dizi =  "0123456789abcçdefgğhıijklmnoö"
çeviri_nesnesi = str.maketrans(kaynak_dizi, hedef_dizi)

kardiz = "python programlama dili"

sonuç = kardiz.translate(çeviri_nesnesi)

print(sonuç)

Burada yaptığımız şey çok basit. Öncelikle “kaynak_dizi” adında bir karakter dizisi oluşturduk. Amacımız bir karakter dizisi içindeki karakterleri başka karakterlere dönüştürmek. İşte bu “kaynak_dizi” adlı karakter dizisi özgün kaynak dizimizin karakterlerini temsil ediyor. Alt satırdaki “hedef_dizi” adlı karakter dizisi ise, kaynak dizi içindeki karakterlerin dönüştürüleceği karakterleri gösteriyor. Bu iki karakter dizisini, bir üstteki kodlarda sözlük halinde yazmıştık. Buradaki “kaynak_dizi” adlı karakter dizisi bir önceki kodlardaki sözlüğün “anahtar”larının (keys), “hedef_dizi” adlı karakter dizisi ise sözlüğün “değer”lerinin (values) yerini tutuyor.

Karakter dizilerimizi tanımladıktan sonra str.maketrans() metodunu kullanarak bir “çeviri nesnesi” oluşturacağız. Oluşturacağımız bu çeviri nesnesi, biraz önce tanımladığımız “kaynak_dizi” ve “hedef_dizi” adlı karakter dizilerinin öğelerini birbiriyle eşleştirme vazifesi görecek. Zaten “str.maketrans(kaynak_dizi, hedef_dizi)” satırı bu vazifeyi gözler önüne seriyor... Bu arada maketrans() metodunu, öteki metotlardan farklı olarak str.maketrans() şeklinde kullandığımıza özellikle dikkat edin.

Hemen ardından çeviri işlemine tabi tutacağımız karakter dizimizi yazdık. Bu karakter dizimiz “python programlama dili”.

Daha sonra da “sonuç” adlı bir değişken içinde translate() metodundan faydalanarak yukarıda oluşturduğumuz “çeviri_nesnesi”ni bu metoda argüman olarak veriyoruz. Bu metot, “kardiz” adlı karakter dizisini alıp, yukarıda “çeviri_nesnesi” içinde belirlediğimiz formüle göre çeviri işlemine tabi tutuyor ve ortaya şifrelenmiş bir karakter dizisi çıkarıyor...

Karakter Dizi Metodları -2

Yazar: Unknown Tarih: 14 Aralık 2011 Çarşamba Yorum: (0)
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

Karakter Dizi Metodları -1

Yazar: Unknown Tarih: 10 Aralık 2011 Cumartesi Yorum: (0)
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.
Python Hesap Makinesi

Python Hesap Makinesi

Yazar: Unknown Tarih: 6 Aralık 2011 Salı Yorum: (0)
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!")


Hata Ayıklama(raise)

Hata Ayıklama(raise)

Yazar: Unknown Tarih: 4 Aralık 2011 Pazar Yorum: (0)
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.
Hata Ayıklama(except...as...)

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

Yazar: Unknown Tarih: 3 Aralık 2011 Cumartesi Yorum: (0)
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)

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

Yazar: Unknown Tarih: Yorum: (0)
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)

Hata Ayıklama(pass)

Hata Ayıklama(pass)

Yazar: Unknown Tarih: 2 Aralık 2011 Cuma Yorum: (0)
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.

Hata Ayıklama(break)

Yazar: Unknown Tarih: 1 Aralık 2011 Perşembe Yorum: (0)
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.

Dosya İşlemleri 4 (Dosyanın Farklı Yerlerine Veri Ekleme)

Yazar: Unknown Tarih: 14 Kasım 2011 Pazartesi Yorum: (0)
Dosyanın herhangi bir yerine satır ekleme

Şimdiye kadar ki örneklerde dosya sonuna ekleme yaptık.
Bu dersimizde satırın herhangi bir yerine eklme yapmayı göreceğiz.

İlk öncelikle bir kaynak dosyamız olacak.Örneğin dosyamızın içeriği

1.satır
2.satır
3.satır
4.satır

ismide "kaynak.txt" olsun.Öce bu dosyayı açalım.

>>>kaynakdosya=open("C:/Users/kullanıcı_adı/Desktop/kaynak.txt")

Bu dosyayı okuma kipinde açtıktan sonra bu dosyadan veriyi
okuyup başka bir hedef dosyaya bu okuduklarımızı yazmak.Şimdide hedef dosyayı oluşturalım.

>>>hedefdosya=open("C:/Users/kullanıcı_adı/Desktop/hedef.txt","w")

hedef dosyamızı oluşturduktan sonra gelelim şimdi kaynak dosyadan veri okumaya.

>>>verioku=kaynakdosya.readlines()

böylelikle kaynak dosya üzerinde okuma işlemini tanımlamı olduk.
Şimdi gelelim okuduğumuz dosyadan verileri hedefdosyamıza yazmaya.

>>> for satirlar in oku[:2]:
hedefdosya.write(satirlar)

Burada yaptığımız işlem ise verioku değişkeniyle okuduğumuz verilerden,hedef dosya üzerine
sadece 0. ve 1. satırları aldık.Niye 0. satır dediğimizi açıklamaya gerek var mı bilmiyorum ama
diziler 0. terimden başlıyorlardı.(hatırlatma olsun)
Şimdi de aldığımız bu 2 satırdan sonra ne yazdıracağımızı yazdıralım.

>>>hedefdosya.write("Python Öğreniyorum\n")

böylelikle yazdırmayı istediğimiz metni yazdırmış olduk.Şimdi kaynak dosyada kalan diğer verileri
hedefdosyaya yazdıralım

for satirlar in oku[2:]:
hedefdosya.write(satirlar)

ve kalan verileride yazdırdığımıza göre artık dosyaları kapatabiliriz.

>>>kaynakdosya.close()
>>>hedefdosya.close()


böylelikle dosya işlemlerini bitirmiş oluyoruz.İyi çalışmalar

Facebook'u hiç sevmeyen ve onu piyasadan silmeyi planlayan "sosyal devrim" sitesi, resmen açıldı.

Yazar: Unknown Tarih: 27 Ekim 2011 Perşembe Yorum: (0)
Facebook karışıtı sosyal ağ "Unthink" açıldı.

Kendini "anti-Facebook" olarak tanıtan yeni sosyal ağ Unthink.com, dünyaya kapılarını açtı. DouglasBay Capital'den 2.5 milyon fon desteğini arkasına alan şirket, sosyal ağları kullanıcıların kendi verilerine sahip olduğu daha açık, daha "dürüst" hale getireceğine inanıyor.

Reklam kampanyalarında Facebook'u yerinden etme amacını ön planda tutan Unthink, yeni bir sosyal ağ değil, sosyal bir devrim olduğu mesajını iletiyor. Kontrol sahibinin ise Unthink değil siz olduğunuz vurgulanıyor. Şirket, bununla ilgili bir manifesto bile sunuyor. Unthink CEO'su Natasha Dedis, "özgür olmak istiyorsak, kendi iletişimimizi kontrol altında tutmalıyız... bu gücü geri almalıyız" diyor.

Dedis, Unthink fikrinin çocuğu Facebook'a kaydolmak istediğinde hizmet şartlarını okuduğunda söylüyor. Dedis, şartların herhangi bir zamanda değişebilmesi nedeniyle onları kabul etmek istememiş. Ancak çocuğunun Facebook'ta olması gerekiyormuş. Dedis, hangi kararı verirse versin, kötü bir anne olacağını farketmiş.

Unthink'te kullanıcı verileri markalara satılmıyor. Bunun yerine kullanıcı, sayfasına sponsor olacak markayı seçiyor. Herhangi bir marka seçmek istemeyen kullanıcılar, yılda 2 dolar ödeme seçeneğini tercih edebiliyor.
Unthink

Van için Herkes Tek Yürek!

Yazar: Unknown Tarih: 24 Ekim 2011 Pazartesi Yorum: (0)
Van Depremi'ne duyarlılık gösteren ve zor durumda olan depremzedelere yardım elini uzatmak isteyen vatandaşlarımız için bir liste hazırladık. Aşağıdaki kanallardan dilediğinizi seçerek yardımlarınızı en kolay şekilde Van'a ulaştırabilirsiniz:

1. KIZILAY
2868'e tüm operatörlerden boş bir SMS göndererek Kızılay'a 5 TL bağışta bulunabilirsiniz.

Ayrıca havale yoluyla destek olmak isteyenler, tüm bankalardaki "Türk Kızılayı" hesaplarından bağış yapabilir. Ayni bağışlar Türk Kızılayı lojistik merkezleri ve şubeleri tarafından kabul edilecektir. Tüm Kızılay şubelerinin iletişim numaralarını buradan öğrenebilirsiniz.

2. AKUT
Tüm GSM operatörlerinden 2930'a göndereceğiniz AKUT yazan bir SMS ile AKUT'a 5 TL bağışta bulunabilirsiniz.

Kredi kartını kullanarak internet üzerinden bağış yapmak isteyen vatandaşlarımız CardFinans ya da diğer banka kartlarını kullanarak bağışta bulunabilirler.

Havale/EFT için Banka Hesap Numaraları;
T. İş Bankası - Gayrettepe Şubesi - TR14 0006 4000 0011 0800 6666 63
Finansbank - Gayrettepe Şubesi - TR92 0011 1000 0000 0001 9576 70
Garanti Bankası - Ortaklar Cad. Şubesi - TR26 0006 2000 3570 0000 0029 30

3. BAŞBAKANLIK YARDIM KAMPANYASI
Başbakanlık tarafından Van’da yaşanan deprem nedeniyle başlatılan yardım kampanyası çerçevesinde saptanan banka hesap numaralarına buradan ulaşabilirsiniz.

4. KARGO FİRMALARI
Yurtiçi Kargo, PTT Kargo, MNG Kargo ve Aras Kargo yardım gönderilerini ücretsiz olarak ihtiyaç sahiplerine ulaştırmaktadır.

5. HÜRRİYET EVLERİ
Deprem sonrası yaralarını sarmaya çalışan ve kış öncesinde evsiz kalan Van için Hürriyet Gazetesi de büyük bir seferberlik başlattı. Hürriyet, Van’da kış koşullarına dayanıklı, mutfak, banyo ve tuvaleti olan "Hürriyet Evleri" kuracak. Kızılay işbirliğinde başlatılan kampanya ile her biri 6 bin liraya kurulacak evler, evsiz kalan vatandaşlara sıcak bir yuva olacak.

Van Depremi - Hürriyet Gazetesi Bağış Hesapları
T. İş Bankası Mithatpaşa Şubesi
4228 - 0971947 / IBAN TR370006400000142280971947
T.C. Ziraat Bankası Kızılay Şubesi
Hesap No 685-2868-5189 / IBAN TR060001000685000028685189
Garanti Bankası Kızılay Şubesi
Hesap adı: Van Depremi - Hürriyet
Şube: 082 Hesap No: 6294703 / IBAN TR72 0006 2000 0820 0006 2947 03

Yapacağınız ufak bir yardım zor durumdaki bir çok insanı hayata bağlayan bir umut olacaktır. Mesajımızın ulaştığı herkesi, deprem bölgesinde yardıma ihtiyacı olan vatandaşlarımıza yardım etmeye davet ediyoruz.


Bir bumads sosyal sorumluluk içeriğidir.