Python Programlama – 2

Posted on Updated on

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… 1a Ö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; 2a
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.
yni
Çıktısı;
snc

“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;
çiz
İ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ı;
çıktıÇizim

Ş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()

Programın örnek çıktısı; çıktı_


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
Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s