2: Fonksiyonlar

Şu ana kadar gördüğümüz bir fonksiyon oldu; print(), bir mesajı, outputu yazdıran fonksiyon. Bir fonksiyon, adı ve onu takip eden parantez içinde bir argüman (argument) yazılarak kullanılır. Argument  kelimesi temel olarak fonksiyonun girdisi (input) anlamına gelir. Fonksiyon, içerdiği argümanlara bağlı olarak işlemler yapar. Bir fonksiyonda birden fazla argüman varsa virgülle ayırırız (,). Örneğin yazılmasını istediğiniz birden fazla argüman varsa print komutunun ardından açtığınız parantezin içinde argümanları virgülle ayırırsınız. Aşağıdaki örneği inceleyelim.

Example
Üç rakam yazdıralım.
Örnek programdaki fazladan boşlukların çıktıya etkisi olmayacak. Fazladan boşlukların sonuca genelde bir etkisi yoktur. Yine de bir satırın başında fazladan bırakılmış boşluklar konusunda çok dikkatli olun; Python'da  indenting (girinti) adı verilen bu satır başı boşluklarının önemli bir işlevi vardır ve yanlış kullanıldığında (örnek için tıklayın) hataya sebep olur. Birkaç ders sonra doğru girintileme hakkında bilgiler alacaksınız.

Bir fonksiyon çıktı olarak bir değer de verebilir. Örneğin function max() (maximum'dan kısaltma) fonksiyonun mevcut argümanlarından en yüksek olanı verir; tabii bu sadece sayısal argümanlar için geçerlidir.

Example
Programı çalıştırmadan önce, vereceği çıktıyı tahmin etmeye çalışın.
 return value terimi fonksiyonun vereceği değeri ifade eder. Örneğin  max(42, 17) dediğimizde,  "max fonksiyonu 42 değerini döndürdü (return)." demiş oluyoruz.

Max fonksiyonunun benzer işlevli bir kankası vardır: min fonksiyonu sayısal argümanları içinden en küçüğünü minimum döndürür (return).

Multiple Choice Exercise: Min ve Max I
Bu programın çıktısı ne olabilir?

x = 13
y = 7
a = max(x+y, x*2)
b = min(x, y)
print(a,b)
Correct!

Fonksiyonların bir araya getirilmesi ile daha komplike ifadeler kurulabilir.

Short Answer Exercise: Min veMax II
Bu programın çıktısı ne olabilir? İpucu

x = min(max(13, 7), 9)
print(x)
Correct!

Python'da kullanabileceğiniz fonksiyonlar önceden tanımlanmış olanlarla sınırlı değil. Birkaç ders içinde siz de yeni fonksiyonlar tanımlamayı öğrenebileceksiniz!

Genel Hatalar

Eğer bir fonksiyonu yetersiz veya gereğinden fazla sayıda argümanla (input) çağırırsanız hata ile karşılaşırsınız. Örneğin  max en azından bir input gerektirir:

Example
Yetersiz argümanla çağrılan max.

Kodunuz çalışmadığında aldığınız hata mesajlarını dikkatlice okumanız çok önemli. Bu hata mesajlarında Python genellikle sorunun nerede olduğunu anlamamıza yardımcı olacak bilgi verir. Ama bazen sorunu anlayabilmek için biraz daha etraflı incelemeniz gerekir — örneğimize bakalım.

Example
Çalıştır düğmesine basarak ortaya çıkan hatayı inceleyin.

Python bize burada bir syntax hatası olduğunu söylüyor, yani ne yapmaya çalıştığımızı anlayamamış:

 Traceback (most recent call last):
   In line 2 of the code you submitted:
     daha_büyük = max(3, 4)
          ^
 SyntaxError: invalid syntax
Ama daha_büyük = max(3, 4) satırında sorun yok. Aslında problem  bir önceki satırdan kaynaklanıyor: daha_küçük = min(14, 99 yazdığımızda parantezi kapatma işaretini yazmayı unuttuk ) ve Python bir sonraki satırda  ) işaretini aramaya gitti. Bu sebeple, hata ayıklarken takılırsanız Python'un bize gösterdiği satırın öncesine ve sonrasına bakmakta fayda var.

Alıştırma

Burada min ve max fonksiyonlarını kullanacağımız iki parçalı bir alıştırmaya bakalım. Maxime ve Miniac şehirleri arasında birkaç köprüyle kurulmuş bağlantılar var. Her bir köprü üzerinden taşınabilecek ağırlık miktarı için farklı limitler konmuş.

Coding Exercise: Bir Yol
1. bölümde, iki şehir arasında tek bir yol var. Bu yolun üzerindeki üç köprünün ağırlık limitleri, aşağıdaki resimde görüldüğü gibi  abc, şeklinde:

Bu güzergâhtan geçmek için kamyonunuzun ağırlığı birinci köprü için  a, ikinci köprü için b, üçüncü köprü için c limitini geçmemeli; yoksa kamyonunuz parçalanır. Kamyonunuzun bu yoldan geçebilmek için en fazla ne kadar yük taşıyabileceğini gösteren bir program yazın. Kodunuzu ab, vec limitlerinin şu anda berlirlenmiş olduğunu varsayarak yazabilirsiniz.

Coding Exercise: İki Yol
Part #2: Şimdi size tüm hikâyeyi anlatacağız. Üzerinden iki köprüyle geçebileceğimiz bir güzergâhımız daha var. Birincisinin ağırlık limitini resimde görüldüğü gibi d, ikincinin ağırlık limitini e, değişkeninde kaydettik.

Kamyonunuz iki yoldan birini seçebilir. İki şehir arasında kamyonunuza yükleyebileceğiniz maksimum ağırlığı gösteren bir program yazın. abcd, ve e değişkenlerine hâlihazırda değer atanmış olduğunu farzedin.  İpucu İpucu 2 

Alıştırma: Kod Karıştırma

Buradaki karışmış kodları, satırları çekerek ve doğru yere bırakarak, programı yeniden düzenleyebilirsiniz.

Scramble Exercise: Tuhaflığı sırala
Kodu öyle bir ayarlayın ki x, y ve z sayılarını küçükten büyüğe doğru sıralanmış (sorted) olarak yazdırsın; önce en küçüğü, sonra ortanca, en son da en büyük.
Satırları fareyle çekerek ve doğru yere bırakarak yeniden düzenleyebilirsiniz.
  • print(max(x, y, z))
  • print(min(x, y, z))
  • print(x+y+z-min(x, y, z)-max(x, y, z))

Yukarıdaki alıştırmayı bitirince;

  • doğrudan  3. derse geçebilir, veya
  • fonksiyonlarla ilgili biraz daha alıştırma yapmak için 2X dersi'ne devam edebilirsiniz.