Skip to main content

Python Dersleri -4 || Python Öğren Serisi

PYTHON DERSLERİ -4

Methodlar nedir ? Python eğitimleri nedir ? Listeler nedir ? Demetler nedir ? Listeler ve demetlerin birbirinden farkları nedir ? Karakter dizileri nedir ? Bu ve benzeri sorulara cevap aradığımız bu yazımızda python derslerine devam ediyoruz.

PYTHON ÖĞREN SERİSİ -4

Method : Nesnelerin nitekliklerini değiştirme , sorgulama ve bu nesnelere yeni özellikler katmaya yarayan araçlardır.

Karakter dizisini doğrudan biz tanımlayabiliriz ya da kullanıcıdan isteyebiliriz.

>>>For karakter in nesne :

>>>Print (karakter)  komutları ile de dizinin öğelerine tek tek erişebiliriz.

Ya da  print (*nesne , sep=’\n’) komutları ile de erişebiliriz.

Bu şekilde karakter dizilerinin tamamına erişebiliyoruz ve eğer lokal olarak erişim istersek yani dizinin 1. Elemanı ya da 3. Elemanı gibi düşünürseniz o zaman karakter dizisini atadığımız sabitin yanına [] kullanılır.Köşeli parantezlerin içine de hangi öğeye erişmek istiyorsak o yazılır.

Örnek :

>>>nesne = “123456789”

>>>int (nesne[1]*2)

Çıktısı : 4 (1 nolu eleman = 2 , ve bunu iki ile çarptık , sonuç : 4)

Not: Pythonda öğe sıralaması ‘0’ dan başlar.

Tersten öğelere erişmek içinse de ; [-2] gibi örneğin , yazılabilir.Burada sondan ikinci öğenin değeri bize verilecektir.

Tek tek elle sayı girmek yerine ise ;

For i in range(7):

Print(derstagram[i]) şeklinde bir yapı da kullanılabilir.

Eğer uzunluğunu bilmiyorsak ise ;

For karakter in range (len(derstagram)):

Print (derstagram[karakter])   şeklinde kullanabilirsiniz.

Kullanıcıdan bir isim alıp sonra sırası ile harfleri yazdırmak istiyorsunuz diyelim

İsim = input(“isminiz : ”)

For i in range (len(isim)):

Print (“isminizin {}. Harfi :{}”.format(i,isim[i]) şeklinde bir kod bloğu yazabilirsiniz.

Burada isminizin 0. Harfi die bir ifade ile karşılaşacaksınız.Bunu yadırganmaması adına 1. Harfi olarak yapmak içinse .format(i+1, isim[i]) şeklinde bir işlem yapabilirsiniz.

Karakter dizileri için -> [0 : 10] , [3 :5] , [1 : 28] gibi işlemler aslında bu aralıkları al ve göster demek anlamına gelir.Mesela a = mustafa olsun.Daha sonra a[0 : 5] dediğimizde program bize musta kısmını gösterecektir sadece.

Mantık : karakter_dizisi[alınacak_ilk_öğenin_sırası : alınacak_son_öğenin_sırasının bir fazlası]

Peki şöyle bir ifade yazsaydık -> a [3:] ;  şimdide 3.karakter sonrasını ekrana basacaktır.

Karakter dizisini tersten yazdırmak mı istiyorsunuz ? –> a [: : -1] şeklinde bir komutla bu işi çözebilirsiniz.

Ya da karakter dizisi içerisinde sadece bir bölümü tersine çevirmek istiyorsanız -> a [0:3:-1] şeklinde bir komutla bu işi çözebilirsiniz.

Ya da bir karakter dizisi içerisinde çift haneli olanları ekrana basabiliriz. a[0:7:2] gibi.

Not : Ek olarak reversed() fonksiyonu ile de tersine çevirme işlemi yapabilirsiniz.Mantığı ise ;

For i in reversed (“mustafa”) :

Print (i, end=” ”) şeklinde kullanabilirsiniz.

Karakter Dizilerini Alfabe Sırasına Dizmek  :

Burada sorted() adlı bir fonksiyondan yararlanacağız.

Örnek : sorted (“mustafa”)

[‘a’, ‘a’, ‘f’, ‘m’, ‘s’, ‘t’, ‘u’] şeklinde bir çıktı verdi bizlere program.

Diğer bir yöntem ; print (*sorted(“mustafa”), sep = “ ”) veya

For i in sorted (“mustafa”) :

Print (i , end=” ”) şeklinde kullanılabilir.

Not : Bu fonksiyondaki en büyük eksiklik Türkçe karakterleri düzgün sıralamadığıdır.

Bu sorun çözümü adına ise ;

>>>import locale

>>>locale.setlocale(locale.LC_ALL, “Turkish_Turkey.1254”) #Windows için

>>>sorted (“çicek”, key=locale.strxfrm) şeklinde işlemlere devam edilir.

Burada locale adlı bir modülden yararlandık.SetLocale ile aslında dil ayarlarını düzgün şekilde yapabilme imkanına kavuşmuş olduk.

Yeniden düzenleyelim = >>>sorted (“çiçek” , key=locale.strxfrm)

Not : I ve İ harflerini sıralama esnasında , ı harfinin i harfinden önce geldiğini göreceksiniz.

Ne yapabiliriz sorusunun cevabı ise ;

>>>harfler = “adlasdalşsdadaıidasd”

>>>çevrim = {i : harfler.index(i) for i in harfler}

>>>sorted (“dasdadaiidasd” , key=çevrim.get)

Buradaki mantık ise ; her harfin bir sayı karşılığı vardır ve pythona sayı karşılıklarına göre sırala dedik aslında.

Karakter Dizileri üzerinde değişiklik yapmak ;

Burada karakter dizilerine ekleme,  çıkarma , dilimleme vb. yapabileceğimizi görmüştük fakat bunlar kalıcı olmayan değişikliklerdir.Bu sebeple de bir çalıştırmanın ardından silineceklerdir.

İki tip veri tipi bulunmaktadır Python’da : Değiştirilebilir ve değiştirilemez.

Python’da bir karakter dizisini bir kez tanımladıktan sonra bu karakter dizisi üzerinde artık değişiklik yapılamaz.

Önemli Birkaç Fonksiyon :

Dir () : Bir nesnenin özellikleri hakkında bilgi edinme fırsatı verir.

Mesela dir(str) yazarsanız , karakter dizilerinin hangi methodları bize sunduğunu burada bize gösterecektir.Diğerleri içinde geçerlidir.Dir(int) , dir (float) vb.

Enumerate () : Programda numaralandırmaya ilişkin işlemler için kullanılır.

For i in enumerate (“mustafa”):

Print (i) diyecek olursak ; çıktısı ->

(0, ‘m’)

(1, ‘u’)

(2, ‘s’)

(3, ‘t’)

(4, ‘a’)

(5, ‘f’)

(6, ‘a’) şeklinde olacaktır.

Sıralamaya nerden başlayacağını belirlemek içinse  ;

for sıra , harf in enumerate (“mustafa”,1):

print (sıra , harf) denilerek istediğiniz sonucu elde edebilirsiniz.

Help () : Program içerisinde yardıma ihtiyacınız olduğu zamanlarda

Örnek help> dir yazdığınızda dir ile ilgili tüm bilgileri bize gösterecektir.Bu ve benzeri kullanımlarla takıldığınız yerde help fonksiyonundan yararlanabilirsiniz.Ya da help ()  parantez içerisine yazarak aradığınız sonuca ulaşabilirsiniz.

Methodları incelemeye başlayalım :

Replace() Methodu :

Değiştirmek , yerine koymak anlamına gelir replace.

Formül :  karakter_dizisi.metot(parametre)

Metotlar ise karakter dizilerinden nokta ile ayırılır ve bu yönteme pythonda noktalı gösterim denir.

Replace methodu iki parametre alır.

Karakter_dizisi.replace (eski_karakter_dizisi , yeni_karakter_dizisi)

İlk parametre değiştirilecek olan , ikincisi ise ilkinin yerine geçecek olan parametredir.

Karakter dizisi içerisinde bir harfi silmek istediğimizde de ;

Örnek :

>>>a = “mustafa”

>>>a.replace (“u” , “ ” , 1) denilerek çıktı : mstafa şeklinde olacaktır.

Split () , rsplit() , splitlines() Methodları :

Split karakter dizilerini bölmek için kullanılır.

Rsplit methodu hemen hemen split() methodu ile aynıdır ve çok kullanılmamaktadır.

Splitlines() methodu ise ; bir karakter dizisini satır satır ayırmak için kullanılır.

Lower () Methodu :

Bütün harfleri küçük harfe çevirir , hepsi küçük harf ise herhangi bir şey yapmaz bu komut.

Upper () Methodu :

Bu methodda tüm küçük harfleri büyük harfe çevirir.

İslower() ve İsupper() Methodları :

Sorgulama methodlarıdır.Lower() küçük harfe çeviriyordu ve islower ise dizinin küçük harften oluşup oluşmadığını kontrol ediyor.

Tamamen küçükse True , değilse false çıktısını veriyor.

İsupperda aynı şekilde büyük harften oluşup oluşmadığını sorguluyor.

Endswith() Methodu :

Bu method ile karakter dizisinin hangi karakter dizisi ile bittiğini sorgulayabiliyoruz.

Endswith(“a”) denilerek karakter  dizisinin a ile bitip bitmediğini kontrol edebiliyoruz.

Startswith() Methodu :

Hangi karakter veya karakterlerle başladığını kontrol etmeye yarayan methoddur.

Capitalize () Methodu :

Değiştirici methodlardan birisidir.Karakter dizilerinin yalnızca ilk harfini büyütür.

Title() Methodu :

Aynı şekilde karakter dizilerinin ilk harfini büyütür ve bu yönüyle de capitalize methoduna benzer ancak tek fark ; her kelimenin ilk harfini büyütmesidir.

Swapcase () Methodu :

Büyük-Küçük harfle ilgili bir methodtur.Büyük harfler bu methodla küçüğe , küçük harflerde büyük harfe dönüşür.

Casefold () Methodu :

Lower() methoduna çok benzer ve hiçbir farkı yoktur.Bazı farklı diller için farklı sonuçlar üretir.

Strip() , Istrip() , rstrip() Methodları :

Strip methodu parametresiz olarak kullanıldığında , bir karakter dizisinin sağında ve solunda bulunan belli başlı karakterleri kırpar.

Eğer parantez içerisine bir parametre verirsekte , o harfi kırparak çıktı verir.

Istrip methodu ise , yine kırpma işlemi yapar ancak,

Kazak kelimesindeki k harfini kırpacağımızı düşünün.Burada sol taraftaki k harfini kırpma işlemini yapar sadece.

Sağ taraftaki  k harfini kesmek içinse ; rstrip() methodunu kullanmalısınız.

Join() methodu :

Not : Bir veri tipine ait metotlar doğal olarak yalnızca o veri tipi üzerinde kullanılabilir.Join methodu bölünmüş karakter dizilerini birleştirmek için kullanılır.

Count() Methodu :

Bu methodun görevi ise bir karakter dizisi içinde belli bir karakterin kaç kez geçtiğini sorgulamasıdır.

İndex() , rindex() Methodu :

Karakterlerin bir karakter dizisi içerisinde hangi sırada bulunduğunu öğrenmek için index() adlı bir methoddan yararlanırız.

Eğer index methoduna bir parametre daha eklersek yani ; index (“a “, 3) dersek , 3. Sıradan itibaren aramaya başlayacaktır.

Rindex() methodunda ise sağdan sola doğru arama işlemi yapılır.

Find() ve rfind() Methodları  :

Bu methodların görevide bir karakter dizisi içerisindeki karakterin konumunu sorgular.

Rfind ile sağdan sola doğru sorgular.

İndex() methodları karakter dizisi içindeki karakteri sorgularken , eğer o karakteri bulamazsa ValueError hatası verir.

Fakat find() ve rfind() metotları böyle bir durumda -1 çıktısı verir.

Center() Methodu :

Orta, merkez anlamlarına gelmektedir.Karakter dizilerini ortalamak için kullanılır.Yani ‘ ’ çift tırnak arasında genişliğe göre sağa ve sola doğru boşluklar bırakarak çıktı verir.

Mesela  ; a = “python” için ;

a.center(1) -> ‘python’  , a.center(10) -> ‘     python      ‘ şeklindedir.

Rjust() , Ijust() Methodları :

Diğer methodlar gibi karakter dizilerini hizalama vazifesi görür.Rjust() methodu bir karakter dizisini sağa yaslarken , Ijust methodu karakter dizisini sola yaslar.

Zfill() Methodu :

Bu method ile karakter dizilerinin sol tarafına istediğimiz sayıda sıfır ekleyebiliriz.

Partition() , Rpartition () Methodları :

Bir karakter dizisini belli bir ölçüte göre üçe bölüyoruz.Bu method parantez içinde verilen ölçüt karaktere göre bölme işlemi yapar.

Eğer verilen ölçüt karakter dizisi içerisinde yoksa  ;

Örnek :

>>>a = “istanbul”

>>>a.partition(“h”)

Çıktısı : (‘istanbul’ , ‘ ’, ‘ ’) şeklindedir.

Rpartition ise sağdan sola doğru okuma işlemi yapar.

Encode () methodu :

Bu method yardımı ile karakter dizilerini istediğimiz kodlama sistemine göre kodlayabiliriz.

Python 3.x’te varsayılan karakter kodlaması utf-8’dir.

Expandtabs() Methodu :

Bir karakter dizisi içerisindeki sekme boşluklarını genişletebilirsiniz bu şekilde.

Birer boşluk yerine expandtabs(5) diyerek 5 er boşluk bırakabilirsiniz.

Str.maketrans() , translate() methodları :

Kimi zaman Türkçe karakterleri kullanamayabiliyorsunuz ve elinizdeki metinleri Türkçe karakterlerden ayırmak istiyorsunuz.İşte tam olarak bu durumlarda str.maketrans() ve translate() methodlarından yararlanabilirsiniz.

İsalpha () methodu :

Bu method sayesinde bir karakter dizisinin ‘alfabetik’ olup olmadığını denetleme işlemi yapılır.İçerisinde (a,b,c ….) vb. varsa o dizi alfabetiktir ancak farklı bir karakter , rakam vs. varsa alfabetik değildir diyebiliriz.

Örnek : mustafa -> alfabetik // m7sta3£a -> alfabetik değil

İsdigit () methodu :

Bu şekilde bir karakter dizisinin sayısal olup olmadığını kontrol edebilirsiniz.

Örnek : 123456 -> sayısal // 12a75q5 -> sayısal değildir

İsalnum () methodu :

Bir karakter dizisinin ‘alfanümerik’ olup olmadığını kontrol eder.Sayı ve karakterlerden oluşan karakter dizilerine denir alfanümerik karakter dizisi ifadesi.

Örnek : 123absd4 gibi.

İsdecimal () methodu :

Bir karakter dizisinin ondalık sayı cinsinden olup olmadığını denetliyoruz burada.

Örnek : 123456 -> ondalık sayı // 1234.34 -> ondalık sayı değil

İsidentifier() Methodu :

Tanımlayıcı anlamına gelir.Python’da değişkenler , fonksiyon ve modül adlarına ‘tanımlayıcı’ denir.Burada da ifade edilen isidentifier() metodu, neyin tanımlayıcı olup neyin tanımlayıcı olamayacağını denetlememizi sağlar.

Mesela 1a değişken adı olamaz çünkü sayı ile başlar.”1a”.isidentifier() denilerek bunun değişken adı olup olamayacağını kontrol edebilirsiniz ve aldığınız çıktı -> false olacaktır.

İsnumeric() Methodu :

Bu method bir karakter dizisinin nümerik olup olmadığını denetler.Bu metot yardımıyla bir karakter dizisinin sayı değerli olup olmadığını kontrol edebilirsiniz.

Örnek : “12”.isnumeric() -> çıktısı : True

İsspace () Methodu :

Bir karakter dizisinin tamamen boşluklardan oluşup oluşmadığını denetleyebilirsiniz.Eğer karakter dizisi boşluklardan oluşuyorsa bu metot True çıktısını verecektir.Aksi durumda ise False çıktısını verecektir.

Örnek :

>>>a  = “      ”

>>>a.isspace()

Çıktısı : True

İsprintable () Metodu :

\n gibi karakterler çıktı sonucu ekranda görünmez ve bu gibi karakterlere basılmayan karakterler  (non-printing characters) denir.

‘b’ , ‘c’ , ‘z’ , ‘x’, ‘=’ , ‘?’ , ‘!’ ve benzeri karakterler basılabilen karakterler(printable characters) olarak adlandırılırlar.

İsprintable metoduda bir karakterin basılabilen olup olmadığının cevabını verir bizlere.

% İşareti ile Biçimlendirme (Eski Yöntem)

>>>print (“%s ve %s iyi bir ikilidir ! ” %(“python”,”django”))

Pythonda %s yapısı karakter dizisi içerisinde bir yer tutma vazifesi görür.

% -> sabit ve s ise değişkendir.S ise string yani karakter dizisinin kısaltmasıdır.

D harfi ise sayıları temsil eder.(%d)

İ harfi ise tamsayıları ifade eder.D harfinden kullanım ve işlev olarak  farkı yoktur.

O harfi ise octal(sekizlik) kelimesinin kısaltması olup 8’li düzendeki sayıları temsil eder.

X harfi ise hexadecimal yani onaltılı düzeni  ifade eder.x harfi küçük kullanıldığında sayılar küçük harfle gösterilecektir.X büyük olarak kullanıldığında ise sayılar büyük harfle gösterilecektir.

F harfi ise karakter dizilerini biçimlendirirken s harfinden sonra en çok kullanılan harftir.Float yani kayan noktalı sayı kelimesinin kısaltmasıdır.

>>>print(“dolar %f TL olmuş…” %1.4710) ve çıktı hep 6 adet sıfıra sahip olacaktır.

Çıktısı -> 1.471000 tl olmuş vb. eğer %.2f dersek 2 haneli olarak çıktıyı alabiliriz.

C harfi yine pythonda önemli bir karakter dizisi biçimlendiricisidir.Bu harf tek bir karakteri temsil eder.

>>>print(“%c” , %”a”) gibi.eğer a yerine daha uzun bir dizi kullanırsanız hata alırsınız.C harfi sadece tek bir karakteri kabul etmektedir.

Format() metodu ile biçimlendirme (Yeni yöntem)

% işaretini kullanarak işlem yapmak biraz eski bir metot olarak kalmıştır.Eski yöntemdeki % yerine yeni methotda {} işaretini kullanıyoruz.

Basit bir örnek :

İsim=input (“isminiz : ”)

Print(“merhaba {}. Nasılsın?”.format(isim))

Format methodunda 3 farklı işaretten yararlanırız ;

  1. > : sağa yaslama
  2. < : sola yaslama
  3. ^ : ortalama

Format methodunu şu harflerle kullanabiliriz ;

S  harfi karakter dizilerini temsil eder.

>>>print (“{:s}”.format(“karakter dizisi”))

C harfi ile 0 ila 256 arası sayıların ASCII tablosundaki karşılıklarını temsil eder.

Print(“{:c}”.format(65)) -> çıktı : A

D harfi sayıları temsil etmek için kullanılır.

O harfi sayıları 8’li düzene çevirmek için kullanılır.

x harfi sayıların 16’lı düzende ki karşılıklarını verir.

Küçük x harfleri küçük yazdırır (8,9,a,b,c,d…) , büyük X harfleri büyük yazdırır.(8,9,A,B,C,D..)

B harfi onlu düzendeki sayıları ikili düzendeki karşılıklarına çevirir.

F harfi virgülden sonraki basamakları sınırlandırmak için kullanılır.

, (virgül) ile : (iki nokta üst üste) işaretini kullanarak , sayıları basamaklarına ayırabilirsiniz.

Listeler ve Demetler

Listeler :

Pythondaki veri tiplerinden biridir.Liste tanımlamak için örnek ;

>>>liste = [“öge1”.”öge2”.“öge3“] gibi.

Farklı öğeleri bir araya getirip bunları köşeli parantezler içine alırsak , liste adlı bir veri tipi oluşturmuş oluyoruz.

Boş bir liste ise -> liste = []

Listelerin öğesine ise liste tanımlandıktan sonra değişken_adı [ buraya kaçıncı elemana erişmek istiyorsanız] yazarak erişebilirsiniz.Örnek derstagram[5] gibi.

Listeler ise değiştirilebilen veri tipleridir.Doğrudan üzerinde değişiklik yapılabilir.

Listelere yeni öğeler eklenebilir.’+’ işaretini kullanarak yeni bir eleman diziye eklenebilir.

İki listeyi birbirine bağlayabilir , birleştirebilirsiniz.

Listeden öğe silmek için ‘del’ adlı ifadeden yararlanılır.

Listeleri tamamen silmekte mümkündür ve del ifadesinden yararlanılır.

Listeleri kopyalamak mümkündür.liste1 adlı listenizi liste2=liste1 diyerek liste2’ye kopyalayabilirsiniz.

Liste Üreteçleri (List Comprehensions)

Örnek :

>>>liste = [i for i in range(1000)] diyerek 1 den 1000’e kadar olan sayıları bir liste içerisinde oluşturduk.

Demetler

Listelere çok benzeyen bir veri tipidir.Ayırt edici özellikleri normal parantez işaretleridir.

Örnek : demet = (“a”,”b”,23,35) şeklinde tanımlanırlar.

Diğer bir tanımlama yolu da ; demet = “a” , “b” , 23 , 35 -> () parantezler kullanılmadan da olur.

Demetlerin öğelerine de aynı şekilde demet[0] gibi ulaşılabilir.

Listelerden farkı ise ; listeler değiştirilebilirdir fakat demetler değiştirilemez.

Demetlerin kullanım alanı ise ;

Özellikle programların ayar dosyalarında bu veri tipi sıklıkla kullanılır.

Listelerin Methodları :

Append() Methodu ;

Append kelimesi İngilizcede ‘eklemek,ilave etmek,iliştirmek’ gibi anlamlara gelir.liste.append(“a”) denildiğinde liste adlı listeye a öğesini ekler.

Yine öğe ekleme işlemini + işareti ile de yapabiliriz.

Append() metodu biraz daha pratiktir.

Fakat append() methodunda birden fazla eleman eklenemez.Append(“a”,”b”,”c”..) eklenmeye çalışıldığında hata alınır.

Extend() Methodu

Genişletmek , yaymak anlamlarına gelir bu method.Listeler bu şekilde geliştirilebilir.

Append methodunda tek bir öğe eklerken bu methodla ilgili liste içerisindeki kodların tamamı diğer listeye eklenebilir.

İnsert() Methodu

İnsert kelime anlamı olarakta “yerleştirmek , sokmak”tır.Listelerin istenilen yerlerine bir öğe eklemek için kullanılır.

İlk parametresi yerleştirilecek öğenin nereye yerleştirileceği , ikincisi ise yerleştirilecek öğenin ne olduğunu gösterir.

Bir dosya içerisinde herhangi bir satıra birtakım bilgiler eklemek çıkarmak isteyebilirsiniz.Bu durumlarda kullanabileceğiniz etkin bir methotdur.

Remove() Methodu :

Liste içerisinden öğe silme işlemlerinde kullanılır.

Reverse() Methodu  :

Liste öğelerini ters çevirmek adına dilimleme methodunu kullanabileceğimizi öğrenmiştik.Ek olarak isterseniz bu iş için reversed() methodunu da kullanabilirsiniz.

Bu komutu bir liste üzerinde kullandığınız da “list_reverseiterator” adlı bir nesne elde edersiniz.Bu nesnenin içeriğini görmek içinse ;

>>>print(*reversed(meyveler)) işlemleri gerçekleştirilir.

Pop() Methodu :

Bu metot da bir liste içerisinden öğe silmemizi sağlar.

Farkı ise ; pop() methodunu kullanarak bir öğe sildiğinizde , silinen öğe ekrana basılacaktır.Ek olarak parametresiz olarak kullanırsanız , kullandığınız listenin son öğesini listeden atar.

Sort() Metodu :

Bu metot bir listenin öğelerini belli bir ölçüte göre sıraya dizmemizi sağlar.

Elimizde bir sınıf listesi var diyelim.Alfabe sırasına dizmek için sort() methodunu kullanabilirsiniz.Ya da sayıları sıralamak içinde kullanılabilir.

Tersten sıralama yapmak içinse ; sort(reverse=True) yani sort parametresi içerisinde reverse kullanmalısınız.

İndex () Metodu :

Veri tipi ve karakter dizilerinin de index() metodu olarak aynı işi yapan bir yöntemdir ve liste içerisindeki öğenin bize konumunu söyler.

Count() Metodu :

Ortak metodlardan birisidir.Karakter dizilerindeki gibi , listelerin count() metodu da bir öğenin o veri tipi içerisinde kaç kez geçtiğini söyler bizlere.

Copy() Metodu :

Listeleri kopyalama işlemleri için kullanılır.Örnek kullanımı ise ;

>>>liste2=liste1.copy()

Clear() Metodu :

Listelerle alakalı bir metotdur.Görevi ise listenin içeriğini silmektir.

Clear() metodu ile listenin içi silinebilir.

>>>liste.clear()

>>>liste

Çıktısı : []

Demetlerin Metotları

Listeler ve demetler birbirine benzer.En önemli fark ise daha öncede ifade ettiğimiz gibi listeler değiştirilebilir veri tipi iken , metotlar değiştirilemezlerdir.

Demetlerin metotlarını görmek için ;

>>>dir(tuple)

İndex() ve count() metotları

İndex() metodu Demet öğesinin demet içerisindeki konumunu bize bildirir.

Count() methodu ise demet öğesinin o demet içerisinde kaç defa geçtiğini bize söyler.

PYTHON DERSLERİ -4 SONUÇ  :

Bugünki yazımızda Python Dersleri -4 adlı yazımızı sizlerle paylaştık.İlgili yazıların Mindbookları en kısa sürede tarafınıza sunulacaktır.En kısa süre içerisinde de python derslerine dair ilgili paylaşımlarımıza devam edeceğiz.

İyi Çalışmalar.

 

 

Python Dersleri -3 || Python Öğren Serisi

Python Dersleri -3

Python nedir ? Python nasıl kullanılır ? Pythonda işlemler nedir ? Pythonda aritmetik işlemler , hata yakalama nedir ? Bu ve benzeri sorulara cevap aradığımız bu yazımızda incelemelerimize devam ediyoruz.

Pyton Derslerine Devam

Sys.stdout’u Kalıcı Olarak Değiştirme :

>>>import sys (Bu kod ile sys adlı özel bir modülü programa dahil ettik)

Import etmek derken ?

>>>import. os

>>>os.getcwd () (os adlı bir modül içerisinde getcwd kullanılarak hangi dizinde bulunduğumuzu öğrendik)

Diğer bir örnek ;

>>>import keyword

>>>keyword.kwlist (burada da keyword adlı diğer bir modül içerisinde kwlist adlı değişkeni kullanarak hangi kelimelerin kullanıp kullanılmayacağını öğrenmiştik)

Şu anda ek olarak ‘sys’ adlı bir modülden sizlere söz ediyoruz.

>>>import sys

>>>sys.stdout (buradan değişken değerine ulaşabiliriz)

Çıktısı ise -> <_io.TextIOWrapper name=’<stdout>’ mode=’w’ encoding = ‘cp1254’> şeklinde olacaktır.

Program çıkmak için : >>>import sys; sys.exit() kullanılabilir.

Pekala exit()’da sys modülü içerisinde bulunur.

Sys modülü içerisindeki değişkenlere bir örnek stdout ; fonksiyona örnek ise -> exit()’dır.

Kaçış Dizileri :

Python’da özel anlam taşıyan işaret veya karakterleri, sahip oldukları bu özel anlam dışında bir amaçla kullanmamızı sağlayan birtakım araçlardır.

Ters Taksim (\)

>>>print(‘İstanbul\’un 5 günlük hava durumu tahmini’)

’\’ bu tarz işaretlere Python’da kaçış dizisi denir.Karakter dizisi tanımlanırken bu işaretler oluşabilecek hatalardan kaçınmayı sağlar.

‘\’ python bu işareti gördüğünde okumaya devam eder yani burayı atlar.Buradaki tek tırnak hata vermesine sebep olacakken hatayı önlemiş olur.

Satır Başı (\n)

Satır başı karakteri ya da yeni satır karakteri.

>>>print(“birinci satır\nikinci satır\nüçüncü satır”)

Çıktı :

Birinci satır

İkinci satır

Üçüncü satır

‘\n’ bir kaçış dizisi olup yeni bir satıra geçmeyi sağlar.

Sekme (\t)

>>>print(“abc\tdef”)

Çıktı : abc  def

Tab tuşu gibi bir işlem görür ve sonraki ifadeyi sağa doğru iter.

Zil Sesi (\a)

!bip! sesi benzeri bir zil sesi üretilmesini sağlayabilir.

>>>print(“\a”)

Çıktı :  !bip!

Aynı Satır Başı (\r)

Bir karakter dizisinde aynı satırın en başına dönülmesini sağlar.

>>>print(“Merhaba\rZalimDünya!”)

Çıktı : Zalim Dünya

\r’ın bulunduğu konumdan itibaren sağında kalanlar en baştan itibaren yazdırılır.

Düşey Sekme (\v)

Eğer \v kullanırsak düşey sekme elde edilir.

>>>print(“düşey\vsekme”)

Çıktı :

Düşey

Sekme

İmleç Kaydırma (\b)

İmleci o anki konumundan sola kaydırır.Peki nasıl ?

>>>print(“yahoo.com\b”)

Çıktı : yahoo.co

Burada bir sola kaydırıldığı için ‘m’ harfi silinmiştir.

Küçük Unicode (\u)

Unicode ; karakterlerin , harflerin , sayıların ve bilgisayar ekranında gördüğümüz öteki bütün işaretlerin her biri için tek ve benzersiz bir numaranın tanımlandığı bir sistemdir.

Kod konumu denilen özel bir gösterim şekli vardır.

Örnek olarak ;

‘a’ harfi sistemde şu kod konumu ile görünür ; u+0061

Python programlama dilinde ise bu durum ; \\u0131 şeklindedir.

Python her bir kod konumunu gösterebilmek adına \u şeklinde bir kaçış dizisi tanımlar.

Eğer \u kaçış dizisinin ardından doğru bir kod konumu belirtmezsek , Python bize hata verecektir.

Büyük Unicode (\U)

\u gibi \U da aynı şekilde Unicode kod konumları için kullanılır.Ancak biraz daha uzundur.

\u için ‘ı’ : ‘\u0131’dir. \U için ‘ı’ : ‘\U00000131’dir.

Uzun Ad (\N)

Unicode ile ilgilidir.Unicode sisteminde her karakterin tek ve benzersiz bir kod konumu ve tek,benzersiz bir de uzun adı vardır.

‘a’ harfinin UNICODE sistemindeki uzun adı şudur ;

  • LATIN SMALL LETTER A

Bir karakterin Unicode sistemindeki uzun adını öğrenmek için unicodedata adlı bir modülden faydalanılabilir.

>>>import unicodedata

>>>unicodedata.name(‘a’)

Onaltılık Karakter (\x)

Bir kaçış dizisi meydana getirir.

Bunu kullanarak onaltılı (hexadecimal) sayma sistemindeki bir sayının karakter karşılığını gösterebiliriz.

>>>”\x41”   çıktısı : ‘A’

Bu işlem aslında ASCII tablosunu kullanır.Mesela ‘4E’ sayısı ‘N’ harfine denk gelir.

Etkisizleştirme(r)

Bir kaçış dizesidir.Karakter dizisinin başına getirdiğimizde r kaçış dizisi , karakter dizisi içerisinde geçen kaçış dizelerinin işlevlerini yerine getirmesine engel olarak , istediğimiz çıktıyı elde etmemizi sağlıyor.

>>>print(r”Kaçış dizileri: \, \n , \t , \a , \\ , r”)

‘\r’ kaçış dizisi ile karıştırmayınız.

Sayfa Başı (\f)

Eski tip yazıcılarda bir sayfanın sona erip yeni bir sayfanın başladığını göstermektir.

Örnek bir program :

Aylık yol masrafını hesaplayan bir program ;

Masraf = gün sayısı x (gidiş ücreti + dönüş ücreti)

gün=22

gidiş_ücreti=1.5

dönüş_ücreti=1.4

masraf=gün * (gidiş_ücreti+dönüş_ücreti)

print(“-” * 30)

print(“çalışılan gün sayısı\t:” , gün)

print (“işe gidiş ücreti\t:”,gidiş_ücreti)

print(“işten dönüş ücreti\t:”,dönüş_ücreti)

print(“-”*30)

print (“AYLIK YOL MASRAFI\t:”,masraf)

Pythonda Yorum İşareti :

‘#’ işareti yorum işaretidir.Eğer bir yere yorum bırakmak isterseniz , o ifadelerin başına ‘#’ işaretini koymalısınız.

Kullanıcıdan Bilgi Almak :

Input () Fonksiyonu :

Type(),len(),print() gibi bir fonksiyondur.

Örnek:

>>>isim=  input (“isminiz nedir”)

>>>print(“Merhaba”,isim, end=”\n”)

Örnek :

Çap = input(“dairenin çapı:   ”)

Yarıçap = int (çap) /2

Pi = 3.14159

Alan = pi * (yarıçap * yarıçap)

Print(“Çapı” , çap , “cm olan dairenin alanı: ”  ,alan , “cm2’dir”)

Tip Dönüşümleri

Kullanıcının girdiği verinin sayı , karakter vb. değişmesi durumunda hata almamak için ;

>>>sayı = input (“herhangi bir veri girin : ”)

>>>tip = type (sayı)

>>>print(“Girdiğiniz verinin tipi : ”, tip)

Şeklinde veriyi bir değişkene atayarak , ardından da bunu yazdırabiliriz bu şekilde.

Karakter dizileri ile aritmetik işlemler yapılamaz veya tam tersi durumda da.

İnt ()

İnput() fonksiyonundan gelen veri her zaman bir karakter dizisidir.Aritmetik işlem yapabilme için bu veriyi dönüştürmemiz gerekmektedir.

Bunun için kullanılması gereken dönüştürücü int()’dir.

Örnek :

>>>karakter_dizisi=”23”

>>>sayı = int (karakter_dizisi)

>>>print(sayı)

Çıktı : 23

Fakat 23 yerine armut yazsa idiniz program hata verecekti.İnt ifadeye çevireceğiniz herşey sayı değerli olmalıdır.

Str ()

Karakter dizisi olmayan verileri karakter dizisine dönüştürmek amaçlı kullanılır.

Float ()

Noktalı sayılar için kullanılır.Bir tamsayıyı ya da sayı değerli bir karakter dizisini kayan noktalı sayıya dönüştürmek isterseniz , float() kullanmalısınız.

Complex ()

Karmaşık sayıları ifade eder aslında.15+0j gibi.Eğer bir ifadeyi karmaşık bir sayıya çevirmek istersek , complex fonksiyonundan faydalanmalıyız.

NOT : Bir ifadenin türünü bilmiyor ve öğrenmek istiyorsak ; type() fonksiyonunu kullanmalıyız.

Eval() ve exec() Fonksiyonları

Eval() : Çok güçlü bir fonksiyondur ve dehşet güçleri vardır.

Örnek :

>>>print(“ bla bla ”)

>>>veri= input(“işleminiz : ”)

>>>hesap=eval(veri)

>>>print(hesap)

Eval -> evaluate (değerlendirmeye tabi tutmak , işleme sokmak) kelimesinden gelir.

Eval() fonksiyonu ile kullanıcının girdiği verileri değerlendirmeye sokuyor ve komutları işleme sokuyoruz.

Mesela 10 ile 26 sayısını çarpıyor olalım.Eval fonksiyonu olmazsa , alacağı cevap dümdüz bir 10*26 çıktısı olacaktır.Eval fonksiyonu ise her bir Python komutunu algılar ve veriyi işleme sokar.Ekrana doğrudan yazdırmak yerine de işlem sonucu olan 260 sayısını bize verir.

Şimdi buradaki tehlikeli durum ise şudur ;

>>>open(“deneme.txt” , “w”) ile kendi bilgisayarınızda bir dosya oluşturulur.Ve bu şekilde aslında program kontrolden çıkmış olur.Çünkü , siz bir hesap makinası yazmıştınız ama bir başkası geldi ve

>>>__import__(“os”).system(“dir”) diyerek mevcut dizindeki tüm dosyalarınıza erişebilir.

Bu şekilde tüm verilerinizi kaybedebilirsiniz.Bu sebeple eval fonksiyonunun dehşet hatta şeytani bir tarafı bulunmaktadır.

Burada diğer bir örnek ;

SQL Injection kavramı : SQL injection tarzı saldırılar ile hacker ya da crackerlar web sitesini programlayan kişinin kullanıcıya verdiği rastgele SQL komutu işleme yetkisini kullanarak gizli ve özel bilgilerini ele geçiriyorlar.

Eval() fonksiyonuda aynı şekilde kullanıcılara rasgele kullanma yetkisi verdiği için kötü niyetli kişilerin programınıza sızma ihtimalini doğurur.

Engellemek adına ise ;

Veri -> KONTROL -> Eval() -> Çıktı şeklinde bir kontrol mekanizması oluşturmalısınız.

Bu komuta benzer diğer bir komutta exec() komutudur.

Eval ile şu işlemi yapamazsınız : >>>eval (“a=45”)

Exec ile yapabilirsiniz ama : >>>exec(“a=45”) // print (a) -> çıktı : 45

Exec ile yaptığımız işleri eval ile de yapabiliriz ama exec fonksiyonunda da güvenlik açıkları mevcuttur.

Bu sebeple bu komutlara çok dikkat edilmelidir.

Format() Methodu

Googleda bir site bulunamadı hatası illaki almışsınızdır.

Buradaki kullanım mantığı ise ;

>>>url = input(“Lütfen bir site adresi gir : ”)

>>>print(“Hata!  Google chrome” , url , “sitesini bulamadı”)

Format aracının kullanım mantığı :

>>>url = input (“Lütfen bir site adresi gir :”)

>>>print(“Hata! Google chrome {} sitesini bulamadı”.format(url))

Format() methodu nasıl çalışır?

>>>print(“{} ve {} iyi bir ikilidir.”format(“Python”,”Django”))

Çıktı : Python ve Django iyi bir ikilidir.

Yada şu şekilde kullanılabilirdi  ;

>>>metin = “{} ve {} iyi bir ikilidir”

>>>metin.format(“A”,”B”)

Burada da format() methoduna parametre vermeden önce bir değişkene atama işlemi yapılır.

Koşul Deyimleri

İf Deyimi :

If , Elif , Else :

İşaretler ->

  • > : Büyüktür
  • < : Küçüktür
  • >= : Büyük eşittir
  • <= : Küçük eşittir
  • == : eşittir
  • != : eşit değildir

If : Eğer anlamına gelir.Eğer büyükse , küçükse , eşitse gibi kullanılır

>>> if n> 20 :

>>>       print(“sayı 20’den büyüktür”)

Girinti koymak başa , python dilinde çok büyük önem taşır.Genel olarak 4 boşlukluk bir girintileme işlemi uygun olmaktadır.

Örnek :

>>>sayı = int(input(“Bir sayı gir : ”))

>>>if sayı > 10:

Print (“Girilen sayı 10’dan büyüktür!”)

>>>if sayı < 10:

Print(“Girdiginiz sayı 10’dan küçüktür!”)

>>>if sayı ==10 :

Print(“Girilen sayı 10’dur”)

Elif :

If ile arasındaki fark aslında çok büyüktür.

Mesela ‘-’ değerlikli bir sayıyı girdiğimizi düşünelim.

İf yapısında birden fazla sıfırdan küçüktür işleminde hepsi birden çalışacakken (if yas<18 ve if yas<100 gibi) elif yapısında sadece doğru olan ilk sonucu verip diğerlerini çalıştırmayacaktır.

Fakat ilk olarak ‘elif’ asla kullanılmaz.Bu sebeple ilk olarak ‘if’ kullanmak önemlidir.Her zaman if ile başlamalısınız.

Else :

Diyoruz ki burada ;

Falanca ise çıktıyı ver değilse (else) şu çıktıyı ver.

Eğer else öncesinde doğru bir ifade varsa else çalışmadan o komut çalışır ve çıktıyı verir.

İŞLEÇLER

Operatörler yani işleçler , sağında ve solunda bulunan değerler arasında bir ilişki kuran işaretlere  denir.

Altı başlık altında incelenebilirler ;

Aritmetik işleçleri :

toplama (+) , çıkarma(-) , çarpma (*) , bölme(/) , kuvvet(**), modülüs(%)|mod alma gibi davranır|, taban bölme(//)|kesirli bölmez , taban bölme işlemi yapar|

Round ise ; yuvarlama işlemi yapar.

>>>round(2.55) -> çıktı :3

>>>round(2.55 , 1) : çıktı : 2.5 (burada 1 sayısı virgülden sonraki hassasiyeti belirler.)

Pow() ise (**) gibi kuvvet alma işaretidir.

Örnek : >>>pow(25 , 2)  -> Çıktısı : 625

Pow üç parametre alabilir.>>>pow(25,2,5) -> çıktısı : 0

Anlamı ise >>>(25 ** 2) %5’tir.

Karşılaştırma işleçleri :

== (eşittir) , != (eşit değildir) , > (büyüktür) , < (küçüktür) , >= (büyük eşittir) , <= (küçük eşittir)

Bool işleçleri ( 1 ve 0 yani True ya da False’tır)

Ek olarak ; 0 değeri ve boş veri tipleri False’tur.Bunlar dışında kalan herşey True’dur.

>>>bool(3) : True //bool(“  ”) : True //bool(“adasda”) : True //bool(0) : false

Not : 0’ın bir sayı , “0”ın ise bir karakter dizisi olduğunu unutmayınız.Sayı olan 0’ın bool değeri False’tur.Karakter dizisi olan “0”ın değeri True’dur.

Bool işleçleri ise ; and , or ve not

And (Ve) : Örnek : if kullanıcı_adı == “derstagram” and parola = “123456”

Or (Veya) : True olması için önermelerden en az birinin doğru olması gerekmektedir.

Not (Değil) : Burada true olan ifadeyi false veya tam tersi durumlarını gerçekleştirebiliriz.

Örnek :

>>>a = “ ”

>>>not  a

Çıktı : True (Normalde False’tur)

Değer atama işleçleri

+= İşleci :

A = 23 iken 28 yapmak için a= a+5 işlemi kullanılır ancak a += 5 denilerek daha hızlı toplama işlemi yapılır.

-= İşleci

A -=5 işlemi ile de A içerisindeki değerden 5 çıkarılır.

/= İşleci

A /= 3 ile a içerisindeki değeri 3 e böler.A/3 ile aynıdır.

*= İşleci

A *=2 A içerisindeki değeri 2 ile çarpar.

%= İşleci

A %=3 a içerisindeki değerden bölme işleminden kalan sayıyı aynı değişkene atar.

**= İşleci

A **= 2 ile a içerisindeki değerin kuvvetini hesaplar.

//= İşleci

A //= 2 ile a içerisindeki değerin taban bölme işlemini yapar.

Aitlik işleçleri

Bu işlecin adı ‘in’ işlecidir.

>>> a = “abcd”

>>>”a” in a

Çıktısı : True

Burada in ilgeci veri tipi içerisinde kod içerisinde verilen ifadenin olup olmadığını kontrol ediyor.Varsa true yoksa false döndürüyor.

Kimlik işleçleri

Python’da herşeyin kimliği vardır.Bu sebeple bize id() diye bir fonksiyon sunulur.(identity kısaltması)

>>>a = 100

>>>id(a)

Çıktısı : 137990748’dir. Bu ifade a içerisindeki 100 sayısının kimlik numarasını gösterir.

Her nesne eşsiz ve benzersizdir.

Burada ‘is’ adlı kimlik işlecini kullanabiliriz ;

>>> a is 1000     False

>>>b is 1000      False

Görünüşte aynı olan iki nesne aslında birbirinin aynısı olmayabiliyor.

İs işleci ile == aynı işleve sahip değildirler.

>>> a is 1000    false

>>> a == 1000 True

Buradaki kritik konu ;

Python dili -5 ile 257 arası sayıları ufak , diğerlerini ise büyük olarak kabul ediyor ve bu aralık dışındaki sayılar için her defasında ayrı bir nesne oluşturuyor.

Pythonda Sürümler:

Eğer programın sürümünü öğrenmek ve sürüme göre çalıştırmak istiyorsanız ;

>>>import sys

>>>_2x_metni = u“ ” ” Python 2.x sürümlerinden birini kullanıyorsunuz.Programı çalıştırabilmek için sistemimizde Python’ın 3.x sürümlerinden birisi kurulu olmalı”””

>>>_3x_metni =”Programa hoşgeldiniz” (Pythonda değişken sayı ile başlamaz)

>>>if sys.versiyon_info.major < 3 :

>>> Print (_2x_metni)

>>>else:

>>>print(_3x_Metni)

_2x_metni için u ekleyerek bu karakter dizisini Unicode olarak tanımladık.Çünkü python 2.x ASCII , Python 3.x’in ise UTF-8’dir.

Not : Eğer Windows kullanıyorsanız ve hala Türkçe karakterleri düzgün görüntüleyemiyorsanız ;

MS-Dos komut satırının başlık çubuğuna sağ tıklayıp özellikler diyerek yazı tipini ‘Lucida Console’ olarak değiştirmelisiniz.

Ardındanda vermeniz gereken komut : >>>chcp 1254’tür.

Python sürümü için pratik yol : version_info  komutudur.

Yukarda ise minör ve major parametrelerini kullanmış olduk.

Döngüler (Loops) :

Bir sürecin tekrar tekrar devam etmesi için kullanılması için kullanılır.Programları döngü içerisine nasıl sokarız ?

While ve For bunun içindir.

While : Türkçede iken , olduğu sürece anlamlarına gelir.

Örnek :

>>>a= 1

>>>while a ==1:

>>>      print(“all right”)

Burada programı sonsuz bir döngüye sokmuş olduk (infinite loop).Ve program sınırsız bir şekilde ekrana all right yazacaktır hiç durmadan.

Fakat şunu yazsaydık

>>>while a <10 : deseydik yine sonsuz bir döngüye girmiş olacaktı ama neden ?

Çünkü a değeri hep 1 olduğu için hiçbir zaman 10 değerine ulaşamayacaktır.

Ancak biz a += 1 der isek o zaman sorunu çözmüş oluyor muyuz  ? Evet.

>>>A = 1

>>>while a < 10 :

>>> a +=1

>>>print (“all right”)

Not: break kelimesi (kırmak , koparmak , bozmak ) anlamlarına gelir ve döngüyü kırar geldiğinde.

Örnek :

>>> if soru == “q”:

>>>print (“çıkılıyor …. ”)

>>>break

For Döngüsü :

For döngüsü çok yaygın bir döngüdür.Tıpkı while gibi bir döngüdür.

Yapısı :

For değişken_adı in değişken :

Yapılacak_işlem

Örnek :

>>>tr_harfler = “adasgsfafa”

>>>for harf in tr_harfler:

>>>print(harf)

Not : Karakter dizileri üzerinden döngü kurulabilir ancak sayılar üzerinde kurulamaz (sayılar = 12345678 -> for sayı in sayılar ) gibi.Hata verir program.

Döngülerle İlgili Araçlar :

Range Fonksiyonu : Aralık anlamındadır.Belli bir aralıktaki bulunan sayıları göstermek için kullanılırlar.

>>>for i in range (0 , 10):

>>>print (i)

Ek olarak range (0 , 10 , 3 ) gibi bir ifade de son rakam kaçar kaçar rakamların ilerleyeceğini bizlere gösterir.

Peki sayıları tersten almak isteseydik ? O zaman yapmamız gereken küçük hamleye beraber bakalım ;

>>> for i in range (10 , 0 , -1) : Sayıları tersten alacağımız için ilk parametre 10 oldu ,son parametrede -1.3 er 3 er alsın isteseydik , o zaman -3 yazmamız gerekirdi.

Pass Deyimi : Pass kelimesi , pas geçmek , geçmek anlamlarında kullanılır.Pythonda da görmezden gel , es geç anlamlarında kullanılır.

Örnek olarak :

İf …. :

Böyle yap

Elif ….. :

Şöyle yap

Else :

Pass (en son else gelirse hiçbirşey yapmadan pas geçerek program ilerlemeye devam edecektir.)

Break Deyimi :

Özel bir deyim olup , devam eden bir süreci kesintiye uğratabilirsiniz.

Break genelde programın sonlarında kullanılıyor olup programdan çıkmak adına kullanılır.

Görevide aynı şekilde döngüyü sonlandırmaktır ve her break bir döngü içerisinde olmalıdır.

Eğer değilse ; Python bize şu şekilde bir çıktı verecektir ;

SyntaxError : ‘break’ outside loop (Sözdizimihatası : ‘’break’’ döngü dışında…)

Continue Deyimi :

Eğer şart gerçekleşirse kendisinden sonra gelen herşeyi atlayıp döngünün başa dönmesini sağlar.

 

Örnek :

>>>if len(s) <=3:

>>>continue (Burada continue kullanımına dikkat ediniz.)

>>>print(“ …”)

>>>if s == “iptal” :

>>>break

Hata Yakalama :

Bir hesaplama işlemi yapan program yazdığınızda vb. kullanıcı sayı girdiği takdirde program çalışacaktır.Fakat kullanıcı bunun yerine başka bir veri girecek olursa , ya da içerisinde bir harf barındıran bir veri girecek olursa ne olur ?

Python bize hata gösterecektir.

Programlar illaki hata vereceklerdir fakat kullanıcıya hatanın neden olduğunu göstermek önemli olandır.

Hata Türleri

Programcı Hataları (Error) : Doğrudan programı yazan kişilerin hatasıdır.

Program Kusurları (Bug) : Özellikle matematiksel işlemlerde bug oluşur.Program düzgün çalışıyor gibidir ancak gizliden bir bug barındırıyor olabilir.

İstisnalar (Exception) : Bölme işlemi yapıyor olduğunuz bir programda kullanıcı veri tipi olarak harf girerse ve bu veri tipini int() türüne dönüştürme işlemine girerse burada bir hata meydana gelecektir.Ya da bir sayıyı 0’a ay da harfe bölmeye çalışacaktır ve program bize hata verecektir.

Try… Except…

Pythonda hata yakalama işlemleri için try.. except.. bloklarından yararlanılır.

Örnek:

>>>ilk_sayı = input (“ilk sayı :  ”)

>>>ikinci_sayı = input (“ikinci sayı : ”)

>>>try:

>>>sayı1= int(ilk_sayı)

>>>sayı2=int(ikinci_sayı)

>>>print(sayı1, “/”,sayı2 , “=” , sayı1/sayı2)

>>>except ValueError :

>>>print(“Lütfen sadece sayı giriniz : ”)

Mantık ;

Try :

Hata verebileceğini bildiğimiz kodlar

Except HataAdı :

Hata durumunda yapılacak işlem

Try .. Except .. As

Pythonda ortaya çıkan hata ve türü :

ValueError -> invalid literal for int() with base 10 : ‘f’ şeklindedir.

Burada ValueError hata türü adı , invalid … ‘f’ ise hata açıklaması kısmıdır.

Örnek :

Try :

………..

Except ValueError as hata :

Print (hata)

Burada Except falancaHata as Filanca yapısı kullanılarak falancaHata’yı filanca olarak isimlendiriyor ve daha sonra bu isi dilediğiniz gibi kullanabilirsiniz.

Try .. Except .. Else..

Yapı Örneği :

Try :

……..

Except ValueError :

Print (…..)

Else :

Try:

Print(….)

Except ZeroDivisionError :

Print(..)

Not : Buradaki kullanımın mantığı da try.. except.. bloğu içerisinde oluşacak sıkışıklık giderilmiş oluyor.Bu yapı mantığı güzel görünsede sürekli ya da bol bol kullanım sonucu programın dağılmasına ve kodlar üzerinde denetiminizi kaybetmenize sebep olabilir.

Try … Except… Finally….

Try :

…bir takım bilgiler

Except birHata :

….hata alınınca yapılacak işlemler

Finally :

…. Hata olsa da olmasa da yapılması gerekenler..

Not : En önemli özellik , hata gerçekleşsede gerçekleşmesede işletilecektir.Bu sebeple program içerisinde eğer mutlaka işletilmesi gereken bir kısım varsa  o kısmı finally … bloğu içerisinde yazabilirsiniz.

Örnek :

Try:

Dosya = open (“dosyaadı” , “r”)

….burada dosyayla bazı işlemler yapıyoruz…

…ve birden hata oluştu varsayalım..

Except IOError :

Print (“hata olustu”)

Finally :

Dosya.close

Finally içerisinde yazıldığından hata durumunda dosya güvenle kapatılacaktır.

Raise

Bazı durumlarda kullanıcının yaptığı bir işlem normal şartlar altında hata vermeyecek olsa bile biz ona ‘Python Tarzı’ bir hata mesajı göstermek istenilebilir.

Pythonın bize sunduğu deyimde : Raise’dir.

Bölünen = int (input(“bölünecek sayı : ”))

İf bölünen ==23 :

raise Exception (“Tekrar 23 sayısı girmeyin !!”)

bölen int(input(“bölen sayı: ”))

print (bölünen / bölen)

Not : Exception yerine her istenen ifade yazılamaz.Kullanılabilir örnek ifadeler , NameError , TypeError , ZeroDivisionError , IOError vb.

Bütün Hataları Yakalamak

Olası bütün hataları yakalamak adına da ;

Try:

…..birtakım işler….

Except:

…..hata mesajı…..

Python Dersleri -3 Sonuç :

Bugünki yazımızda Python Dersleri -3 adlı yazımızı sizlerle paylaştık.Bu yazımızla aslında pythona dair incelemelerimizi sürdürüyoruz.Birçok farklı alanda pythona dair bilgi bulabilirsiniz.Bizimkiside faydalı olması amacıyla bilgilerin incelenmesi üzerinedir.

İyi çalışmalar.