python programlama dili eğitimi

Download Python Programlama Dili Eğitimi

If you can't read please download the document

Upload: enes-ates

Post on 23-Jun-2015

6.540 views

Category:

Documents


1 download

DESCRIPTION

Tepekule – İyte Sürekli Eğitim Merkezi‘nde vermiş olduğum Python Programlama Dili Eğitimi sunumu.

TRANSCRIPT

  • 1. Python Programlama DiliEitimi Ege GNU/Linux ve zgr Yazlm alma Grubuwww.ozgurpenguen.org Enes Ate [email protected] - Sem, zmir, 2013

2. erik Merhaba Python! Kontrol Yaplar Veri Yaplar Modller Dosya leme Hata Yakalama Snflar Pokemon OyunuKonu ieriklerine erimek iin konu balklarna tklayabilirsiniz. 3. Merhaba Python! Python Nedir? Nerelerde Bulunur? Nasl Kullanabilirim? >>> Deikenler Kullancyla letiim .py Vim 4. Python Nedir? zgr yazlm Monty Pythons Flying Circus - Guido van Rossum Basit ve k sz dizilimli: Girintileri sever, ssl parantezlerden kanr. Okunabilirlik nemlidir. Yksek seviyeli Yorumlanan (interpreted) programlama dili Fonksiyonel, prosedrel ve nesneye dayal programlama paradigmalarkapsamnda 5. Python Nedir? Dinamik tip tanml Gl veri yaps destei Birimsel (modler) Piller dahil (fazla sayda modl ieren standart ktphane) Betiklerden (script) byk projelere Sistem, kullanc arabirimi, a, veritaban programlama vb. oklu platform destei (GNU/Linux, Windows, Mac OS vb.) 6. Nerelerde Bulunur? Blender, GIMP, Inkscape Ubuntu, Fedora, Gentoo, Pisi GNU/Linux Django Web Framework Apache, BitTorrent, Google, Yahoo, Facebook CERN, NASA ou GNU/Linux datmnda ntanml bileen 7. Nasl Kullanabilirim? GNU/Linux datmlarnda: Ubirim (terminal) zerinden python komutuyla Windows ortamnda: www.python.org/download uygun srm indirilir. Python YOLa (PATH) kurulu olduu dizin deeriyle eklenir. tinyurl.com/pythonyol Komut satrndan python komutuyla kullanlabilir. Eitim ieriinde Python 2.x srm referans alnmtr (2.7.3) 8. >>>>>> 2 + 24>>> (50 5 * 6) / 4 # Bu bir yorum satrdr.5>>> 7 / 3 # Tam saylarn blmnn sonucu aaya (floor) yuvarlanr.2>>> 7.0 / 23.5>>> 5 ** 3 # 5in 3. kuvvetini alr.125 9. >>>>>> x = y = z = 0>>> x0>>> y0>>> z0>>> a # tanmlanmam deikene erimeye almakNameError: name a is not defined 10. >>>>>> genislik = 22.4 ; yukseklik = 5.3 * 9.7 # ; karakteri satrlar tek satrda birletirir>>> genislik * yukseklik1151.5839999999998>>> alan = _# en son retilen deeri alr.>>> alan1151.5839999999998>>> round(alan, 2) # hassasiyeti ayarlar.1151.58 11. >>>>>> ozgur yazilim # karakter dizileri iin tek ya da ift trnak kullanlabilir.ozgur yazilim>>> ozgur yazilimozgur yazilim>>> Asimovun Vakf dizisi # karakter dizisinde trnak iareti kullanmakSyntaxError: invalid syntax # szdizim hatas>>> Asimovun Vakf dizisi # farkl tipte trnak iareti kullanmak gerekir>>> Asimovun Vakf dizisi # ka karakterlerinden ters bl de kullanlabilir. 12. >>>>>> il = izmir>>> ilce = bornova>>> adres = il + / + ilce # karakter dizileri + operatr ile birletirilebilir (concatenation).>>> adresizmir/bornova>>> print adres # karakter dizisi yazdrmak iin print fonksiyonu kullanlabilir.izmir/bornova>>> print Yasadigi il = %s nYasadigi ilce = %s %(il, ilce) # formatl kt 13. >>>>>> en_uzun_kelime =#karakteri ubirimde alrken alt satra gemeyi salar.. . . muvaffakiyetsizlestiricilestiriveremeyebileceklerimizdenmissinizcesine>>> uzunluk = len(en_uzun_kelime)>>> print En uzun kelimenin uzunlugu =, uzunluk # , ile karakter dizileri pepee yazdrlabilir.En uzun kelimenin uzunlugu = 70>>> sonsuz = float(inf) # float(inf) ile sonsuz deeri elde edilebilir.>>> 5 < sonsuz# en kk sayy bulma gibi algoritmalarda kolaylk salar.True>>> 3 > sonsuzFalse 14. Deikenler Deiken tanmlarken tip belirtmeye gerek yoktur.>>> x = 5>>> type(x)# deikenlerin tipi bilinmek isteniyorsa type fonksiyonuyla grlebilir.>>> y = 5>>> type(y)>>> z = int(y) # tip dnm>>> type(z) 15. Kullancyla letiim Dardan girdi almak iin:>>> e_posta = raw_input(E-posta adresinizi giriniz:n)E-posta adresinizi giriniz: # burada kullancdan girdi deeri alnr.>>> print [email protected]>>> type(e_posta) 16. Kullancyla letiim>>> yas = raw_input(Yasinizi giriniz:n)Yasinizi giriniz:>>> type(yas)>>> yas = int(raw_input(Yasinizi giriniz:n))Yasinizi giriniz:>>> type(yas) 17. .py Python programlama diline zg dosya uzantsdr. Yazlan kodlar saklamak iin Vim, Geany, PyDev gibi metin dzenleyicileri vegelitirme ortamlarndamodl_ad.pyeklinde dosyalar (modller) oluturulur. Kod paralarnn bulunduu bu dosyalar altrmak iin ubirimde (terminal)aadaki komut verilir.>>> python modl_ad.py Trke karakter sorununu zmek iin dosyann en stne aadaki satrlareklenmelidir. GNU/Linux iin: # -*- coding: utf-8 -*- Windows iin: # -*- coding: cp1254 -*- 18. Vim Ubirimde alabilen, zgr bir metin dzenleyicisidir. vim dosya_ad.py komutu dosya_ad.py dosyasn aar, yoksaoluturur. Dosya aldnda grntleme modunda alm olur. i tuu ile yazma moduna geilir. a tuu imleten bir sonraki konumdan itibaren yazmaya balamay salar. o tuu bir alt satrdan itibaren yazmaya balamay salar. Esc ile yazma modundan klr ve dosya grntleme moduna dnlr. h, j, k, l ya da ok tular dosyada yukar, aa, saa, sola dolamay salar. 19. Vim Dosya grntleme modunda; d (sil) dd (satr sil) 7dd (7 satr sil) y (kopyala) yy (satr kopya) 4yy (4 satr kopyala) p (yaptr) u (geri al) Ctrl + r (ileri al) 20. Vim Dosya grntleme modunda; :w (dosyay kaydet) :q (vimden k) :q! (kaydetmeden k) :wq (kaydet ve k) :set number (satr numaralarn gster) :10 (10. satra git) /kelime (dosyada girilen kelimeyi ara) n (kelime birden fazla konumda bulunduysa aralarnda dolamay salar) 21. Kontrol Yaplarif - elif - else while forfor - range() break - continue - elseFonksiyonlarFonksiyonlara Deer Geirme 22. if - elif - elseyas = int(raw_input(Yanz giriniz: ))if yas >> range(10) # 0dan verilen sayya kadar (say dahil deil) tam say dizisi oluturur.[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]>>> range(5, 10) # balang ve biti deeri alan ekli[5, 6, 7, 8, 9]>>> range(0, 10, 3) # balang ve biti deerinin yannda art miktarn da alr.[0, 3, 6, 9]for i in range(1, 100, 4): # 1den 100e kadar drder artarak tm saylar dolar. if i % 5 == 0:# 5in kat olan saylar yazdrr. print i, 26. break - continue - else Asal saylar bulan algoritma:for n in range(2, 15):for x in range(2, n):if n % x == 0: # kontrol edilen saynn tam bleni var m kontrol print n, =, x, *, n/x break# saynn tam bleni varsa asal say deildir ve dng sonlanr.else:# hibir tam bleni bulunmadysa say asaldr.print n, bir asal saydr. break deyimi dng ileyiini tamamen sonlandrr. else deyimi for dngs ile kullanlabilir. for dngsnden bir hatafrlatlmadysa (break deyimine denk gelmek gibi) else koulu alr. 27. break - continue - else ift saylar bulan algoritma:for sayi in range(2, 10):if sayi % 2 == 0: # say ift mi diye kontrol edilir. print Sradaki say ifttir:, sayi continue # sradaki say ifttir ve dngdeki mevcut adm sona erer.print Sradaki say:, sayi continue deyimi dngnn tamamn deil, mevcut adm sonlandrr.Dng kalan satrlar altrmadan bir sonraki adma atlar. 28. Fonksiyonlar Fibonacci Serileri:def fib(n): # fonksiyon tanma, b = 0, 1while a < n: print a, a, b = b, a + bfib(2000) # fonksiyon arm def etiketi, fonksiyon ad ve gerekli parametrelerle fonksiyon tanmlanr. Fonksiyon ad ve argmanlarla birlikte fonksiyon arm yaplr. 29. Fonksiyonlardef yas_kontrolu(alt_limit = 0, ust_limit = 100): # varsaylan parametre deerleri yas = int(raw_input(Yanz giriniz:n)) if alt_limit < yas < ust_limit: return yas else: print Aralk d deer girdiniz!kullanici_yasi = yas_kontrolu(ust_limit = 60) # varsaylan parametrelere yeni deer atanabilirif kullanici_yasi: print Yasiniz:, kullanici_yasi # dnen deer None deilse Fonksiyon parametrelerine varsaylan deer atanabilir. return etiketiyle deer dndrlebilir. Varsaylan olarak None deeridner. 30. Fonksiyonlara = 10def fonk(): global a# fonksiyonun dnda bulunan a deikenini kullanmak iin a = 5 return aprint Fonksiyon dnda a =, aprint Fonksiyon iinde a =, fonk()print Fonksiyon dnda a =, a # fonksiyon ierisinde global deiken ann deerideimitirdef fonk(a): # fonksiyonun ieriini daha sonra yazmak istediimizde hata almamak iin pass # bir ey yapmadan ge anlamna gelen pass etiketini kullanrz 31. Fonksiyonlara Deer Geirme Fonksiyonlara deikenlerin kopyalar geer/aktarlr.>>> x = 5>>> def degistir(a): # yollanan argmann ieriini deitiriyoruz.... a=6>>> degistir(x)>>> print x5# deikenin kopyas gittiinden ierii deimedi. 32. Fonksiyonlara Deer Geirme Fonksiyonlara liste gibi yaplarn referanslar geer/aktarlr.>>> def sirala(liste):# verilen listeyi sralar....liste.sort()>>> sayilar = [4, 2, 1, 10, 6]>>> sirala(sayilar) # saylar listesinin referansn yolladk.>>> sayilar[1, 2, 4, 6, 10]# listenin referans gittiinden dolay ierii deiti. 33. Fonksiyonlara Deer Geirme Fonksiyonlara listelerin kopyalarn geirme:>>> def sirala(liste):...liste.sort()>>> sayilar = [4, 2, 1, 10, 6]>>> sirala( list(sayilar) )# listenin bir kopyasn oluturup onu yolluyoruz.>>> sayilar[4, 2, 1, 10, 6] # listenin kopyas gittiinden ierii deimedi. 34. Veri YaplarListeler (Lists) Ytlar (Stacks) Kuyruklar (Queues)filter(), map(), reduce()Demetler (Tuples) Kmeler (Sets)Szlkler (Dictionaries) 35. Listeler (Lists) Dier dillerdeki dizilere benzetebiliriz. Elemanlar farkl tiplerde (tam say, karakter dizisi, liste vb.) olabilir.>>> dagitim = [Trisquel, Fedora, Ubuntu, Mint, Gentoo]>>> dagitim# listeyi yazar.[Trisquel, Fedora, Ubuntu, Mint, Gentoo]>>> print dagitim[1] # listelerde elemanlarn sras 0dan balar.Fedora# listenin 2. eleman>>> len(dagitim) # listenin boyutu/uzunluu5 36. Listeler (Lists)>>> dagitim.append(Debian) # listeye eleman ekler[Trisquel, Fedora, Ubuntu, Mint, Gentoo, Debian]>>> dagitim.insert(5, Ubuntu)# listenin girilen srasna eleman ekler[Trisquel, Fedora, Ubuntu, Mint, Gentoo, Ubuntu, Debian]>>> dagitim.remove(Ubuntu)# listeden ilk Ubuntu deerini siler[Trisquel, Fedora, Mint, Gentoo, Ubuntu, Debian]>>> dagitim.pop(4)# listeden verilen sradaki eleman silip, deerini dndrrUbuntu 37. Listeler (Lists)>>> sayilar = [ ] # bo liste[]>>> sayilar.append(42)[42]>>> sayilar.insert(0, 54.9)[54.9, 42]>>> dagitim.extend(sayilar) ya da dagitim += sayilar # sayilar listesini dagitim listesine ekler.[Trisquel, Fedora, Mint, Gentoo, Debian, 54.9, 42] 38. Listeler (Lists)>>> dagitim.index(Gentoo) # Gentoo deerinin srasn dndrr3>>> dagitim[3:6]# listenin 3 ile 6. sralar arasndaki elemanlarn dndrr[Gentoo, Debian, 54.9]>>> dagitim.sort() # listedeki elemanlar alfabetik olarak sralar[42, 54.9, Debian, Fedora, Gentoo, Mint, Trisquel]>>> dagitim.reverse()# listedeki elemanlarn srasn ters evirir[Trisquel, Mint, Gentoo, Fedora, Debian, 54.9, 42] 39. Listeler (Lists)>>> dagitim.append(Mint)[Trisquel, Fedora, Mint, Gentoo, Debian, 54.9, 42, Mint]>>> print dagitim.count(Mint), dagitim.count(Fedora), dagitim.count(Ubuntu)2, 1, 0 # Mint, Fedora ve Ubuntu deerlerinin listede kaar kez getiini bulur>>> Trisquel in dagitim# Verilen deerin listede bulunup bulunmadna bakarTrue>>> Ubuntu in dagitimFalse 40. Listeler (Lists)>>> kare = [ ]>>> for x in range(10):. . . kare.append(x ** 2)# x saysnn karesini kare listesine ekler.[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]>>> kare = [x ** 2 for x in range(10)] # stteki algoritmann farkl ekilde yazl[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]>>> del kare[3:5] # kare listesindeki 3. elemandan 5. elemana kadar tm elemanlar siler.[0, 1, 4, 25, 36, 49, 64, 81] 41. Listeler (Lists)>>> matrix = [[1, 2, 3, 4],# 3 x 4lk matris (i ie dizi)... [5, 6, 7, 8],... [9, 10, 11, 12], ]>>> transpoze = []>>> for i in range(4): # matrisin transpozesini alma yntemi.... transpoze.append([row[i] for row in matrix])[[1, 5, 9], [2, 6, 10], [3, 7, 11], [4, 8, 12]] 42. Ytlar (Stacks) Ytlar, son giren ilk kar (last-in, first-out) mantyla davranan listelerdir. Eklenecek eleman sona eklenir: append() karlacak eleman sondan karlr: pop()>>> yigit = [3, 2, 8]>>> yigit.append(6); yigit.append(9)[3, 2, 8, 6, 9]>>> yigit.pop()9>>> yigit[3, 2, 8, 6] 43. Kuyruklar (Queues) Kuyruklar, ilk giren ilk kar (first-in, first-out) mantyla davrananlistelerdir. Banka kuyruklarna benzetebiliriz. Etkin almas iin collections.deque kulanrz.>>> from collections import deque>>> kuyruk = deque([Kemal, Ali, Merve])>>> kuyruk.append(Zeytin) # Zeytin kuyrua girer.>>> kuyruk.popleft()# lk sradaki kii kuyruktan kar.Kemal>>> kuyrukdeque([Ali, Merve, Zeytin]) 44. filter(), map(), reduce()>>> def f(x): return x%2 != 0 and x%3 != 0 # say 2 ve 3e blnmyorsa True deeri dner.>>> filter(f, range(2, 25))# f fonksiyonuna 2den 25e kadar tm tam saylar srayla yollar.[5, 7, 11, 13, 17, 19, 23] # f fonksiyonunun sonucunu True yapan tm saylarn listesi dner.>>> def kup(x): return x*x*x# saynn kpn dndrr.>>> map(kup, range(1, 11))# kup fonksiyonuna 1den 11e kadar tm tam saylar srayla yollar.[1, 8, 27, 64, 125, 216, 343, 512, 729, 1000] # yollanan saylarn kplerinin listesi elde edilir.>>> def ekle(x, y): return x+y # saylar birbirine ekler.>>> reduce(ekle, range(1, 11)# ekle fonksiyonuna 1den 11e kadar tm tam saylar srayla yollar.55 # ekle fonksiyonunun parametreleri yollanan say ve bir nceki fonksiyonun sonucudur. 45. Demetler (Tuples) Listelere benzer. Listelerdeki gibi elemanlar zerinde deiiklik yapamayz. Deiiklie izin vermedii iin listelerden daha gvenilirdir. Kazara deitirmek istemediimiz verileri ieren liste kullanmak istiyorsak kullanabiliriz. Listelere gre daha hzl alrlar. Uygulama ierisinde sonradan deitirmeyeceimiz verileri gruplamak iin kullanabiliriz.>>> demet = () # bo demet>>> demet = GNU, Linux, 60, 70 ya da>>> demet = (GNU, Linux, 60, 70) 46. Demetler (Tuples)>>> demet = (GNU,)# tek elemanl demette elemann yanna , koymamz gerekir.>>> demet2 = (GNU) # , koymazsak girdiyi karakter dizisi olarak alglar.>>> print type(demet), type(demet2) Demet oluturma ilemine demetleme (packing), tersine demet zme(unpacking) denir.>>> aile = Anne, Baba, Kardes# demetleme (packing)>>> a, b, c = aile# demet zme(unpacking)>>> print a, b, cAnne Baba Kardes 47. Kmeler (Sets) Matematikteki kmelere benzer: Her eleman benzersizdir (tekil). Sra nemsizdir, sadece elemanlar bir arada toplanmtr. Kesiim, birleim, fark gibi ilemlerden geirilebilir. yelik kontrollerinde ve veri tekrarn nleme ilemlerinde kullanlabilir.>>> sepet = [elma, portakal, elma, armut, portakal, muz] # sepet listesi>>> meyve = set(sepet) # listeden kme oluturma>>> meyveset([elma, armut, portakal, muz]) # tekrar eden elemanlar teke inmitir. 48. Kmeler (Sets)>>> armut in meyve # armut meyve kmesinin eleman m kontrolTrue>>> lahana in meyveFalse>>> kume = set(adana) # adana karakter dizisinin kmesi>>> for i in kume:...print i,a d n# tekrar eden a karakteri teke inmitir. 49. Kmeler (Sets)>>> yedek = meyve.copy() # meyve kmesinin tm ieriini yedek kmesine kopyalar.>>> meyve.add(kiraz)# meyve kmesine kiraz elemann ekler.set([elma, kiraz, armut, portakal, muz])>>> meyve.discard(armut)# meyve kmesinden armut elemann karr.set([elma, kiraz, portakal, muz])>>> meyve.remove(elma)# kmeden elma elemann karr, eleman yoksa hata verir.set([kiraz, portakal, muz])>>> meyve.clear() # meyve kmesinin tm ieriini temizler.set([ ]) 50. Kmeler (Sets)>>> k1 = set([1, 2, 3]); k2 = set([3, 10, 2, 1])>>> k2 | k1# birleimset([1, 2, 3, 10])>>> k2 & k1# kesiimset([1, 2, 3])>>> k2 - k1# farkset([10])>>> k2 >= k1 # kapsamaTrue 51. Szlkler (Dictionaries) Anahtar:Deer ikililerinden oluan veri yapsdr.>>> telefon = {Samet: 2390, Can: 5123, Nalan: 8273}>>> telefon[Ayla] = 4732 # szle (telefon rehberi) Ayla anahtarn ve 4732 deerini ekler.>>> telefon{Nalan: 8273, Ayla: 4732, Can: 5123, Samet: 2390}>>> telefon[Can]# Cann telefon numarasn bulur.5123>>> telefon[Nalan] = 3182 # Nalann telefon numarasn deitirir. 52. Szlkler (Dictionaries)>>> telefon.keys() # szlkteki anahtarlar listeler.[Nalan, Ayla, Can]>>> telefon.values() # szlkteki deerleri listeler.[3182, 4732, 5123]>>> Ayla in telefon # szlkte Aylin anahtar var m diye kontrol eder.True>>> del telefon[Samet] # Samet anahtarn szlkten deeriyle birlikte siler.{Nalan: 3182, Ayla: 4732, Can: 5123}>>> telefon.clear()# szln ieriini tamamen temizler.{} 53. Modller Modl Nedir?Modlleri e Aktarmak os Modl math Modlrandom Modldatetime Modl urllib2 Modl 54. Modl Nedir? erisinde Karakter dizileri, saylar Deikenler Listeler, szlkler, demetler Fonksiyonlargibi kod paracklar bulunan dosyalardr. .py uzantsna sahiptir. Betik (script) olarak da bilinir. Ksaca yazlan Python uygulamalar birer modldr. python modl_ad.py eklinde arlabilir. 55. Modlleri e Aktarmak hesap_makinesi.py adnda bir modl yaratalm:def carp(liste): a=1 for i in liste:a = a * i print a>>> import hesap_makinesi# hesap_makinesi modln ie aktardk (import ettik).>>> sayilar = [45, 66, 76, 12]>>> hesap_makinesi.carp(sayilar)2708640# hesap_makinesi modlnn carp fonksiyonuna saylar listemiziyolladk. 56. Modlleri e Aktarmak hesap_makinesi modlmz deitirelim:def carp(liste): a=1 for i in liste:a = a * i return a>>> reload(hesap_makinesi)# deien modl tekrar ie aktarma>>> sonuc = hesap_makinesi.carp(sayilar)>>> print sonuc2708640 57. Modlleri e Aktarmak import modl_ad: Bir modl tm ieriiyle birlikte ie aktarr. from modl_ad import * Modldeki _ ile balayanlar hari tm ierii ie aktarr. from modl_ad import fonksiyon_ad, deiken_ad, ... Modldeki istediimiz fonksiyonlar ve deikenleri (referans deil kopyas) ie aktarr. import modl_ad as yeni_ad Modln adn deitirerek kullanmamz salar. Uzun modl adlarn ksaltabiliriz. Modl farkl dizindeyse adresini vermek ya da yola (PATH) eklemekgerekir.>>> dir(modl_ad)# modl iindeki fonksiyon ve nitelikleri (deiken vb.) listeler. 58. Modlleri e Aktarmak>>> import hesap_makinesi>>> hesap_makinesi.carp(sayilar)>>> import hesap_makinesi as hsp>>> hsp.carp(sayilar)>>> from hesap_makinesi import *>>> carp(sayilar) # modl adn belirtmediimizden ayn isimde farkl bir fonksiyonyazmamalyz.>>> from hesap_makinesi import carp>>> carp(sayilar) 59. os Modl Kullanlan iletim sistemiyle ilgili ilemler yapma olana sunar. Uygulamalarn farkl iletim sistemleri zerinde almasn kolaylatrr.>>> import os# os modln ie aktarr.>>> for icerik in dir(os): # os modlnn tm ieriini (fonksiyon, deiken vs.) listeler.. . . print icerik, makedirs minor mkdir mkfifo mknod name nice open openpty pardir path pathconfpathconf_names pathsep pipe popen popen2 popen3 popen4 putenv read readlink removeremovedirs rename renames rmdir 60. os Modl name nitelii: letim sistemi hakknda bilgi verir. Uygulamann iletim sistemine gre ilem yapmas salanabilir.>>> os.nameposix # GNU/Linux: posix;Windows: nt, dos, ce; Macintosh: mac getcwd fonksiyonu: O anda hangi dizin iinde bulunduumuzu gsterir.>>> os.getcwd()home/enes 61. os Modl listdir fonksiyonu: Dizin ierisindeki dosya ve dizinleri listeler.>>> dosya_dizin = os.listdir(/home/enes)>>> for a in dosya_dizin: print a, .gnash Public Pictures .gimp-2.6 Downloads Music Desktop .gconf Documents chdir fonksiyonu: Bulunduumuz dizini deitirir.>>> os.chdir(os.pardir) # pardir (parent directory) ile bir st dizini elde ederiz.>>> print os.getcwd() # mevcut dizin/home 62. os Modl mkdir ve makedirs fonksiyonlar: Dizin veya dizinler olutururlar.>>> os.mkdir(test) # dizin oluturur.>>> os.makedirs(python_kodlar/moduller/os_modulu) # i ie dizinler oluturur. rmdir ve removedirs fonksiyonlar: i bo dizin veya dizinleri siler.>>> os.rmdir(test) # dizini siler.>>> os.removedirs(python_kodlar/moduller/os_modulu) # i ie dizinleri siler. 63. os Modl remove fonksiyonuyla mevcut bir dosya silinebilir:>>> os.remove(deneme.txt) system fonksiyonuyla sistem fonksiyonlar altrlabilir:>>> os.system(ls) # sistemdeki ls komutunu altrr, dizinin ieriini listeler.Documents hesap_makinesi.py Music Public Videos deneme.pyc Desktop Downloadshesap_makinesi.pyc Pictures Templates workspace>>> os.system(cat hesap_makinesi.py) # dosya ieriini listeler.def carp(liste): 64. math Modl>>> import math>>> dir(math) # math modlnn ierisindeki tm zellikleri listeler.... log, log10, log1p, modf, pi, pow, radians, sin, sinh, sqrt, ...>>> math.log(1024, 2) # 1024n 2 tabanna gre logaritmas10.0>>> math.sqrt(81) # 81in karekk9 65. random Modl>>> import random ; dir(random) # random modln ie aktarp ieriini listeledik.>>> random.random()# 0.0, 1.0 aralnda ondalkl say seer.0.060059391318312616>>> random.uniform(1, 10) # 1.0, 10.0 (dahil deil) aralnda ondalkl say seer.5.0059275809358095>>> random.randint(1, 10)# 1, 10 aralnda (snr deerler dahil) bir tam say seer.6 66. random Modl>>> random.choice([elma, armut, zeytin]) # listeden geliigzel bir eleman seer.zeytin>>> sayilar = [1, 2, 3, 4, 5, 6, 7]>>> random.shuffle(sayilar) # listedeki elemanlarn srasn kartrr.>>> sayilar[2, 5, 7, 6, 4, 1, 3]>>> random.sample([1, 2, 3, 4, 5], 3) # listeden geliigzel 3 eleman seer.[4, 3, 5] 67. datetime Modl>>> from datetime import date# datetime modlnden date fonksiyonunu ie aktarr.>>> bugun = date.today() # bugnn tarih bilgisini alr.>>> bugun.strftime(%d-%m-%y) # dzgn ekilde grntlemek iin23-03-13>>> dogum_gunu = date(1967, 3, 29) # tarih bilgisi elle verilebilir.>>> yas = bugun - dogum_gunu # iki tarih arasndaki fark>>> yas.days16796 68. urllib2 Modl nternet ile veri iletiimi salar.>>> import urllib2>>> cevap = urllib2.urlopen(http://python.org/) # web adresine balanma>>> html = cevap.read() # HTML kaynan dosya okur gibi okuma>>> print html 69. Dosya lemeDosya Ama ve OluturmaDosyaya YazmaDosyadan OkumaDosya Konum Belirteci Dosyaya Deiken Yazma Dosya SilmeBelirli Konuma Satr Ekleme 70. Dosya Ama ve Oluturma Bir dosyay farkl modlarda aabiliriz. r (read): Dosyay okuma modunda aar. Dosya yoksa hata verir. w (write): Dosyay yazma modunda aar. Dosya yoksa oluturur, varsa eski tm ierii siler. a (append): Dosyay yazma modunda aar. Dosya yoksa oluturur, varsa eski ierie ekleme yapar. 71. Dosyaya Yazma>>> dosya = open(deneme.txt, w)# dosyay yazma modunda atk.>>> dosya.write(Python zgr bir yazlmdr.) # dosyaya karakter dizisini yazdrdk.>>> dosya.close() # dosyay kapattk.>>> dosya = open(deneme.txt, a) # dosyay ekleme modunda atk.>>> dosya.write(nAdn Monty Pythons Flying Circus adl komedi dizisinden almtr.)>>> dosya.writelines([nBasit sz dizilimlidir., nGirintileri sever., nOkunabilirlie nem verir.])# bir listenin ieriini (karakter dizilerinden oluan) dosyaya yazdrdk.>>> dosya.close() 72. Dosyadan Okuma>>> dosya = open(deneme.txt, r) # dosyay okuma modunda atk>>> dosya.read()# dosyay ham (Trke karaktersiz, n gibi ktlarla) haliyle okuduk."Python xc3xb6zgxc3xbcr bir yazxc4xb1lxc4xb1mdxc4xb1r. ...>>> print dosya.read() # dosyay dzgn bir ktyla okuduk.Python zgr bir yazlmdr. >>> print dosya.readline() # dosyadan tek satr okuduk.>>> print dosya.readlines() # ktnn bir liste olaca ekilde dosyadan tm satrlar okuduk. 73. Dosya Konum Belirteci Dosya konum belirteci zamanla farkl konumlara (dosya sonu vb.) tanr. Tekrar okuma ya da yazma yapacamz zaman konum belirteciniistediimiz noktaya tayabiliriz.>>> dosya.seek(0)# dosya konum belirtecini dosya bana tar.>>> dosya.seek(10) # dosya konum belirtecini 10. karakterin bana getirir.>>> dosya.seek(5, 0) # belirteci dosya bandan itibaren 5 birim kaydrr.>>> dosya.seek(5, 1) # belirteci bulunulan konumdan itibaren 5 birim kaydrr.>>> dosya.seek(-5, 2) # belirteci dosyann sonundan baa doru 5 birim kaydrr.>>> dosya.tell() # belirtecin konumunu verir. 74. Dosyaya Deiken Yazma>>> x = 50>>> dosya = open(deneme.txt, a)>>> dosya.write(x) # dosyaya deiken yazabiliriz. TypeError # karakter dizisi tipinde olmayan bir deiken yazdrmak tip hatas verir.>>> dosya. write(str(x)) # yazacamz deikeni karakter dizisine evirerek yazdrrz.>>> dosya.close() 75. Dosya Silme>>> import os>>> os.remove(deneme.txt) 76. Belirli Konuma Satr Ekleme>>> kaynak = open(deneme.txt) # dosyay okumak iin atk.>>> hedef = open(test.txt, w)# hedef bir dosya oluturduk.>>> oku = kaynak.readlines()# kaynak dosyadan tm satrlar okuduk.>>> for satirlar in oku[:2]:... hedef.write(satirlar) # kaynak dosyadaki ilk 2 satr hedef dosyaya yazdk.>>> hedef.write(Guido van Rossum tarafndan gelitirilmeye balanmtr.n) # yeni satr>>> for satirlar in oku[2:]: hedef.write(satrlar) # kalan satrlar hedef dosyaya yazdk.>>> kaynak.close(); hedef.close() 77. Hata Yakalamatry - except 78. try - except try , except etiketleri ile olas hatalar kontrol altna alnabilir: try:bolunen = int(raw_input("Blme ilemi iin blnecek sayy girin: "))bolen= int(raw_input("imdi de blecek sayy girin: "))bolum= float(bolunen) / bolenprint bolum except ZeroDivisionError: # kullanc blen say iin 0 deeri girerse blmede hata frlayacaktr.print Ltfen sayy 0a blmeye almayn! # hata frladnda dzgn hata mesaj verilebilir. except ValueError: # kullancnn uygun deer girmemesi hatas da yakalanabilir.print Ltfen harf deil, say girin! except (ZeroDivisionError, ValueError):pass # Hata varsa hibir ey yapma 79. SnflarSnf TanmlamaNesne Nedir? Nesne Yaratma Nesne zellii (Attribute) self Kaltm (Miras Alma)Bo Snf ve zel (Private) Deiken 80. Snf Tanmlama Pythonda snf yaps class etiketi ve snfn ad ile tanmlanr. Snfn iinde snfa zg deikenler, fonksiyonlar vb. zellikler bulunur. Penguen adnda, isim ve memleket zellikleri bulunan basit bir snf:class Penguen:def __init__(self, penguen_ismi, yasadigi_yer): # varsaylan deerlerle snf oluturur.self.isim = penguen_ismiself.memleket = yasadigi_yerself.ruh_hali = ok a 81. Nesne Nedir? Bir snftan yaratlm elemandr. zellikler (deikenler vb.) ve yeteneklerden (fonksiyonlar) oluur. Pythonda her ey nesnedir.>>> dir(5)>>> x = deneme>>> dir(x)>>> x.upper()DENEME 82. Nesne Yaratma penguen.py adnda bir modl oluturup ierisine snfmz ekleyelim:class Penguen:def __init__(self, penguen_ismi, yasadigi_yer):self.isim = penguen_ismi#*coding:utf8*self.memleket = yasadigi_yerself.ruh_hali = ok a>>> import penguen# penguen modln ie aktardk.>>> pingu = penguen.Penguen(Pingu, Kuzey Kutbu)# penguen modlnn Penguen snfndan pingu isminde nesne yaratm olduk. 83. Nesne zellii (Attribute)>>> print pingu.ruh_hali# pingu nesnesinin ruh_hali zelliine eritik.ok a>>> print pingu.isim, -, pingu.memleketPingu Kuzey Kutbu>>> del pingu.ruh_hali # pingu nesnesinin ruh_hali zelliini yok ettik.>>> pingu.ruh_hali # pingu nesnesinin olmayan bir zelliine erimeye alyoruz.pingu instance has no attribute ruh_hali 84. Nesne zellii (Attribute) penguen.py modlmz gncelleyelim:class Penguen(object):# Yeni tip snf tanmlama (object snfn miras alm)def __init__(self, penguen_ismi, yasadigi_yer): #*coding:utf8 self.isim = penguen_ismi * self.memleket = yasadigi_yer self.ruh_hali = ok a self.balik_deposu = 40# Penguen snfna balik_deposu zellii ekledik.def karnini_doyur(self):# Penguen snfna karnn_doyur fonksiyonu/zellii ekledik. self.ruh_hali = karn tok self.balik_deposu -= 30def balik_tut(self):# Penguen snfna balk_tut fonksiyonu/zellii ekledik. self.balik_deposu += 80 85. self Fonksiyonlardaki global ifadesine benzer. Snf genelinde geerli olacak/snfa zg deiken iin, deikene bu snfn bir zelliidir anlamn ykler. pingu rnei iin, self ifadesini pingu nesnesinin yerini tutan bir kelimeolarak zihnimizde canlandrabiliriz. Bir snftaki tm fonksiyonlarn ilk parametresi self olmaldr. 86. Kaltm (Miras Alma) mparator Penguen snf yaratmak istersek: Bu snf Penguen snfyla benzer olacaktr. Sonuta bir penguenle, imparator penguenin ortak birok zellii vardr. mparator Penguen snf iin Penguen snfndaki kodlarn tamamn tekraryazmamz gerekmez. Pythondaki kaltm zelliini kullanarak mparator Penguen snfnPenguen snfndan tretebiliriz. 87. Kaltm (Miras Alma) penguen.py modlmze ekleme yapalm:class ImparatorPenguen(Penguen): # Penguen snfndan miras aldk.def __init__(self, penguen_ismi, yasadigi_yer): #*coding:utf8 Penguen.__init__(self, penguen_ismi, yasadigi_yer) # Penguendeki initi kopyalar. * del self.ruh_hali# Her zaman tok olduundan ruh hali zelliine gerek yok. self.balik_deposu = 600 # balik_deposu zelliini imparator iin gncelliyor.def balik_tut(self):# balik_tut fonksiyonunu imparator iin gncelliyor. self.balik_deposu += 210 Penguen snfndan deiiklie urayacak zelliklerin stne yazlabilir. Artk gerek olmayan zelliklere ise del etiketi ile eriim engellenebilir. 88. Bo Snf ve zel (Private) Deiken pass etiketiyle ieriini daha sonra dolduracamz snf oluturabiliyoruz:>>> class Kitap(object): pass# bo bir snf oluturduk.>>> vakif = Kitap()# vakif adnda bir Kitap nesnesi oluturduk.>>> type(vakif)# vakif nesnesinin tipine baktk.>>> vakif.isim = Vakf # vakif nesnesine zellikler ekleyip, deerlerini atayabiliyoruz.>>> vakif.yazar = Isaac Asimov Snfn zelliklerine snf dndan eriimi kstlamak iin __ etiketinikullanabiliriz:>>> vakif.__fiyat = 23 # vakif nesnesine ait fiyat zelliini __ etiketiyle zel yaptk. 89. Pokemon Oyunu#-*-coding:utf-8-*- pokemon.pyimport randomclass Pokemon(object): def __init__(self, isim, can, sahip):self.isim = isimself.can = canself.seviye = 1self.sahip = sahip def saldir(self,hedef):hedef.can -= random.randint(1,10) # hedefin cann 1,10 arasnda bir deer kadar azaltr. def evril(self):self.seviye += 1 90. Pokemon Oyunu#-*-coding:utf-8-*- elektrik_pokemonu.pyfrom pokemon import *import su_pokemonu as suclass ElektrikPokemonu(Pokemon): def __init__(self, isim, can, sahip):Pokemon.__init__(self, isim, can, sahip)self.ustun = [su.SuPokemonu] def carp(self, hedef):if type(hedef) in self.ustun: # hedeften stn myz?hedef.can -= random.randint(10,30)else:self.saldir(hedef)# hedeften stn deilsek normal saldr yapabiliyoruz. 91. Pokemon Oyunu#-*-coding:utf-8-*-su_pokemonu.pyfrom pokemon import *import ates_pokemonu as atesclass SuPokemonu(Pokemon): def __init__(self, isim, can, sahip):Pokemon.__init__(self, isim, can, sahip)self.ustun = [ates.AtesPokemonu] def puskurt(self, hedef):if type(hedef) in self.ustun: # hedeften stn myz?hedef.can -= random.randint(10,30)else:self.saldir(hedef)# hedeften stn deilsek normal saldr yapabiliyoruz. 92. Pokemon Oyunu#-*-coding:utf-8-*- ates_pokemonu.pyfrom pokemon import *import elektrik_pokemonu as elkclass AtesPokemonu(Pokemon): def __init__(self, isim, can, sahip):Pokemon.__init__(self, isim, can, sahip)self.ustun = [elk.ElektrikPokemonu] def yak(self, hedef):if type(hedef) in self.ustun: # hedeften stn myz?hedef.can -= random.randint(10,30)else:self.saldir(hedef)# hedeften stn deilsek normal saldr yapabiliyoruz. 93. Pokemon Oyunu#-*-coding:utf-8-*- gotta_catch_em_all.pyimport elektrik_pokemonu as elk, su_pokemonu as su, ates_pokemonu as atespikachu = elk.ElektrikPokemonu(Pikachu, 100, Ash) # Ashin Pikachusu can 100 olarak yaratld.staryu = su.SuPokemonu(Staryu, 80, Misty) # Mistynin Staryusu can 80 olarak yaratld.vulpix = ates.AtesPokemonu(Vulpix, 85, Brock) # Brockun Vulpixi can 85 olarak yaratld.print pikachu.isim,-> , staryu.isim, : Pika Pikapikachu.saldir(staryu)print Pikachu: , pikachu.can, nStaryu:, staryu.canprint n, staryu.sahip, : Seni setim , staryu.isimstaryu.puskurt(pikachu)print Pikachu: , pikachu.can, nStaryu:, staryu.canprint n, vulpix.sahip, : Seni setim , vulpix.isim,durdur onlar, giiit!!vulpix.yak(pikachu)vulpix.yak(staryu)print Pikachu: , pikachu.can, nStaryu: , staryu.can, nVulpix: , vulpix.can 94. Kaynaklar [1] http://docs.python.org/2/tutorial/index.html [2] http://www.istihza.com/py2/icindekiler_python.html [3] http://yzgrafik.ege.edu.tr/~tekrei/dersler/bbgd_p/ [4] http://kodveus.blogspot.com/search?q=python [5] http://en.wikipedia.org/wiki/Python_%28programming_language%29 [6] http://tr.wikipedia.org/wiki/Python_%28programlama_dili%29 [7] http://www.tuncercolak.net/blog/vim-vi-improved-editoru/ [8] http://www.python.org/community/logos/ [9] http://www.gnu.org/graphics/babies/BabyGnuAlpha.png [10] http://tux.crystalxp.net/en.id.1871-rap-tux.html 95. DNLEDNZN TEEKKRLER...