Python Programlama – 2
Python programlama yazı serisinin ikinci kısmını içerecek bu yazıda; örneklerle döngüler, fonksiyonlar ve nesne-sınıf yaplarını anlatmaya çalışacağım. Bu yazı serisinin ilk kısmına buradan erişebilirsiniz.
Döngüler
‘While’ Döngüsü
Bilindiği üzere “while” komutu algoritmik notasyonlarda ‘.. olduğu sürece’ anlamına gelmektedir. Örneğin ;
yaz = 0 while count < 7: #7'den küçük olduğu sürece... print yaz yaz += 1 # yaz değerini 1 arttır</code> # Çıktısı: 0,1,2,3,4,5,6,7
Bir sayı tahmin oyunumuz olsun. Bilgisayarın 1 ile 100 arasında üreteceği rastgele bir sayıyı bulmaya çalışalım. Bunun için öncelikle pyhton’un hazır fonksiyonu olan random fonksiyonunu kullanmamız gerekecek. Terminal yardımıyla nano editörünü kullanarak başlayalım yazmaya… Önceki örneklerden farklı olarak ascii karakterler kullandığımız için aşağıdaki ifadeyi eklememiz gerekli,aksi halde çalıştırılırken “run time” hatası alacaktır.
#-*- coding: utf-8 -*-
Programın çıktısına bakacak olursak;
Pek bir farkı olmasa da oyunun iki kişilik versiyonunu yapalım;
Bir sayaç tutup tek ve çift olma durumuna göre oyuncu sırasını da tutsun.
Çıktısı;
“For” Döngüsü
Verilen bir dizi de veya sayılarda dolaşmak için kullanılır.
liste= [1,3,5,7] for liste in liste: print liste #Çıktı: (Aşağıya doğru) 1 3 5 7
Algoritmik ‘for’ da kullandığımız gibi belirli sayı aralıkları girerek de döngüyü sağlayabiliriz. Bunu “range” veya “xrange” fonksiyonları ile sağlayabiliriz. Bunlar arasında ki fark; python’un sürüm farkı.
#Default olarak 0'dan başlar for x in xrange(5): print x #Çıktı: 0 1 2 3 4 #İstenilen aralıklarda yazdırır for x in xrange(3,6): print x #Çıktı: 3 4 5
“break” & “continue” Kullanımı
‘break’ ; döngüden dışarı çıkmak için kullanılır, ‘continue’ ise; bulunduğumuz kod bloğundan(scope) atlamak için kullanılır.
sayac = 0 while True: print sayac sayac += 1 if sayac >= 5: break #Çıktı: 0 1 2 3 4 for a in xrange(10): #0'dan 10'a kadar bir aralık belirliyoruz if a % 2 == 0: #Çift sayı kontrolü continue #Atla... print a #Çıktı: 1 3 5 7 9
Fonksiyonlar
Fonksiyonlar bilindiği üzere programda kullandığımız sürekli tekrar eden komutların kullanımını kolaylaştırmak için oluşturduğumuz yapılardır. Python da bu yapıların kullanımı;
blok_başlangıcı: 1. blok satırı 2. blok satırı ...
Örnek bir fonksiyon;
def selamDunya(): print "Selamlar!"
Fonksiyonu çağırırken aşağıdaki yapıyı kullanıyoruz ;
selamDunya()
Fonksiyonlara parametre atarken;
def yeniFonksiyon(isim, soyisim): print "Adı:, %s , Soyadı: %s"%(isim, soyisim)
Fonksiyonlarda “return” değerini kullanıp bize belli bir değer dönmesini sağlamak için;
def toplama(a, b): return a + b
Fonksiyonun sonucunu bir değişkende tutabiliriz;
a= toplama (12, 23)
Bir örnek yapalım. Kullanıcı girişi ile bir dikdörtgen çizdirelim fonksiyon yardımı ile;
İki fonksiyon tanımlıyoruz çizim için. Daha sonra klavyeden yapılan girişleri fonksiyonlara parametre olarak atıyoruz. Oluşan örnek program çıktısı;
Şimdi fonksiyonları kullanarak özel hesap makinesi yapalım;
#!/usr/bin/env python # -*- coding: utf-8 -*- def menu(): global faktoriyel, permutasyon, kombin print "_"*10,"Menu","_"*10 #Şekilli yazdırmak için... print "1) Faktoriyel Hesaplama\n" print "2) Permutasyon Hesaplama\n" print "3) Kombinasyon Hesaplama\n" secim=raw_input("İşlem Seçin(1-2-3): ") print "\n" if secim not in ["1","2","3"]: #Girilen değer verilen dizide değilse print "Geçersiz Seçim" menu() #Menuye yonlendir if secim=="1": e=int(raw_input("Faktoriyel Hesaplaması için sayı girin: ")) fakt_fonks(e) #İnput edilen değeri fonskiyona gönder print "\n" print "Sonuc: \n" print str(e)+"! = ",faktoriyel #Fonksiyon sonucunu yazdır print "\n" menu() if secim=="2": f=int(raw_input("İlk Sayıyı Girin: ")) c=int(raw_input("İkinci Sayıyı Girin: ")) if f>c: perm_fonks(f,c) # Fonksiyona parametre yolla print "\n" print "Sonuc: \n" print "P("+str(f)+","+str(c)+") = ",permutasyon print "\n" menu() else: print "Geçersiz İşlem." print "\n" menu() if secim=="3": a1=int(raw_input("Birinci Sayıyı Girin: ")) a2=int(raw_input("İkinci Sayıyı Girin: ")) if a1>a2: kombin_fonks(a1, a2) print "\n" print "Sonuc: \n" print "C("+str(a1)+","+str(a2)+") = ",kombin print "\n" menu() else: print "Geçersiz İşlem." print "\n" menu() def fakt_fonks(i): #Faktoriyel hesabını yapan fonksiyon global faktoriyel a=1 k=1 while a<i: k=a*k a=a+1 if a==i: faktoriyel=a*k def perm_fonks(l,n): #Permutasyon hesabını yapan fonksiyon global faktoriyel, permutasyon lfakt=0 nfakt=0 fakt_fonks(l) lfakt=faktoriyel faktoriyel=1 fakt_fonks(l-n) nfakt=faktoriyel permutasyon=lfakt/nfakt def kombin_fonks(y,z): #Kombinasyon hesabını yapan fonksiyon global permutasyon, kombin, faktoriyel perm_fonks(y,z) fakt_fonks(z) kombin=permutasyon/faktoriyel print "\n"*2 menu()
Sınıf ve Nesne Yapısı
Python’un nesneye dayalı bir dil olduğuna daha önce değinmiştik. Java’da veya C#’da olduğu gibi sınıf ve nesnelerden oluşabilmektedir. Örnek bir sınıf yapısı;
class denemeSınıfı: variable = "değersiz" def function(self): print "Sınıf içinde yer alan bir mesajdır bu"
Örnek bir sınıf yazacak olursak;
class Ev: isim = "Uceka'nın Malikanesi" tur = "Kiralık" sehir = "Ankara" bina_yasi = 5
‘Ev’ adında bir sınıf oluşturup bu sınıfa yeni elemanlar kazandırdık . Bu objelere aşağıdaki şekilde erişmek mümkün;
print Ev.isim #Çıktı: Uceka'nın Malikanesi
Örnek bir sınıf uygulaması;
class BankAccount(object): def __init__(self, initial_balance=0): self.balance = initial_balance def deposit(self, amount): self.balance += amount def withdraw(self, amount): self.balance -= amount def overdrawn(self): return self.balance < 0 my_account = BankAccount(25) my_account.withdraw(5) print my_account.balance # Çıktı : 20