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
