Python’da Koşula Bağlı Durumlar

Python’da en önemli konulardan biri de kuşkusuz koşula bağlı durumlardır. İsterseniz ne demek istediğimizi bir örnekle açıklayalım. Diyelim ki Gmail’den aldığınız e-posta hesabınıza gireceksiniz. Gmail’in ilk sayfasında size bir kullanıcı adı ve parola sorulur. Siz de kendinize ait kullanıcı adını ve parolayı sayfadaki kutucuklara yazarsınız. Eğer yazdığınız kullanıcı adı ve parola doğruysa hesabınıza erişebilirsiniz. Yok, eğer kullanıcı adınız ve parolanız doğru değilse, hesabınıza erişemezsiniz. Yani e.posta hesabınıza erişmeniz, kullanıcı adı ve parolayı doğru girme koşuluna bağlıdır.

Ya da şu örneği düşünelim: Diyelim ki Pardus’ta konsol ekranından güncelleme işlemi yapacaksınız. sudo pisi up komutunu verdiğiniz zaman güncellemelerin listesi size bildirilecek, bu güncellemeleri yapmak isteyip istemediğiniz size sorulacaktır. Eğer evet cevabı verirseniz güncelleme işlemi başlayacaktır. Yok, eğer hayır cevabı verirseniz güncelleme işlemi başlamayacaktır. Yani güncelleme işleminin başlaması kullanıcının evet cevabı vermesi koşuluna bağlıdır. Biz de şimdi Python’da bu tip koşullu durumların nasıl oluşturulacağını öğreneceğiz. Bu iş için kullanacağımız üç tane deyim var: if, elif ve else

Bu konu içinde ayrıca Python’da girintilerin önemine ve yazdığımız kodların içine nasıl açıklama yerleştirebileceğimize de değineceğiz.

if Deyimi

If kelimesi İngilizce’de “eğer” anlamına geliyor. Dolayısıyla, adından da anlaşılabileceği gibi, bu deyim yardımıyla Python’da koşula bağlı bir durumu belirtebiliyoruz. Cümle yapısını anlayabilmek için bir örnek verelim:

>>> if a == b:

Bunun anlamı şudur: “eğer a ile b birbirine eşit ise...

Biraz daha açarak söylemek gerekirse: “eğer a değişkeninin değeri b değişkeninin değeriyle aynı ise...

Uyarı

kod içindeki “==” (çift eşittir) işaretini birbirine bitişik olarak yazmamız gerekir. Yani bu “çift eşittir” işaretini ayrı yazmamaya özen göstermeliyiz. Aksi halde yazdığımız program hata verecektir.

Gördüğünüz gibi cümlemiz şu anda yarım. Yani belli ki bunun bir de devamı olması gerekiyor. Mesela cümlemizi şöyle tamamlayabiliriz:

>>> if a == b:
...     print "a ile b birbirine eşittir"

Yukarıda yazdığımız kod şu anlama geliyor: “Eğer a değişkeninin değeri b değişkeninin değeriyle aynı ise, ekrana ‘a ile b birbirine eşittir,’ diye bir cümle yazdır.

Cümlemiz artık tamamlanmış da olsa, tabii ki programımız hâlâ eksik. Bir defa, henüz elimizde tanımlanmış birer a ve b değişkeni yok. Zaten bu kodları bu haliyle çalıştırmaya kalkışırsanız Python size, a ve b değişkenlerinin tanımlanmadığını söyleyen bir hata mesajı gösterecektir.

Biraz sonra bu yarım yamalak kodu eksiksiz bir hale nasıl getireceğimizi göreceğiz. Ama şimdi burada bir parantez açalım ve Python’da girintileme işleminden bahsedelim kısaca. Çünkü bundan sonra girintilerle bol bol haşır neşir olacaksınız.

Dikkat ettiyseniz yukarıda yazdığımız yarım kod içinde print ile başlayan ifade, if ile başlayan ifadeye göre daha içeride. Bu durum, print ile başlayan ifadenin, if ile başlayan ifadeye ait bir alt-ifade olduğunu gösteriyor. Yani bu iki satır beraberce bir “if bloğu” oluşturuyor. Eğer metin düzenleyici olarak Kwrite kullanıyorsanız, if a == b: yazıp ENTER tuşuna bastıktan sonra Kwrite sizin için bu girintileme işlemini kendiliğinden yapacak, imleci print "a ile b birbirine eşittir" komutunu yazmanız gereken yere getirecektir. Ama eğer bu girintileme işlemini elle yapmanız gerekirse genel kural olarak klavyedeki TAB tuşuna bir kez veya SPACE tuşuna dört kez basmalısınız.

Ancak bu kuralı uygularken TAB veya SPACE tuşlarına basma seçeneklerinden yalnızca birini uygulayın. Yani bir yerde TAB tuşuna başka yerde SPACE tuşuna basıp Python’ın kafasının karışmasına yol açmayın.

Şimdi yukarıda verdiğimiz yarım programı tamamlamaya çalışalım. Hemen boş bir Kwrite belgesi açıp içine şunları yazıyoruz:

#!/usr/bin/env python
# -*- coding: utf-8 -*-

Bunlar zaten ilk etapta yazmamız gereken kodlardı. Devam ediyoruz:

#!/usr/bin/env python
# -*- coding: utf-8 -*-

alinin_yasi = 23
aysenin_yasi = 23

Yukarıda alinin_yasi ve aysenin_yasi adında iki tane değişken tanımladık. Bu iki değişkenin de değeri 23.

Programımızı yazmaya devam edelim:

#!/usr/bin/env python
# -*- coding: utf-8 -*-

alinin_yasi = 23
aysenin_yasi = 23

if alinin_yasi == aysenin_yasi:
    print "Ali ile Ayşe aynı yaştadır!"

Bu şekilde programımızı tamamlamış olduk. Bu programın pek önemli bir iş yaptığı söylenemez. Yaptığı tek şey, alinin_yasi ile aysenin_yasi değişkenlerinin değerine bakıp, eğer bunlar birbirleriyle aynıysa ekrana Ali ile Ayşe aynı yaştadır! diye bir çıktı vermektir. Ama bu program ahım şahım bir şey olmasa da, en azından bize if deyiminin nasıl kullanılacağı hakkında önemli bir fikir verdi. Artık bilgilerimizi bu programın bize sağladığı temel üzerine inşa etmeye devam edebiliriz. Her zamanki gibi boş bir Kwrite (veya Gedit ya da IDLE) belgesi açıyoruz ve içine şunları yazıyoruz:

#!/usr/bin/env python
# -*- coding: utf-8 -*-

parola = "python"
cevap = raw_input("Lütfen parolanızı giriniz: ")

if cevap == parola:
    print "Parola onaylandı! Programa hoş geldiniz!"

Gördüğünüz gibi, burada öncelikle parola adlı bir değişken oluşturduk. (Bu arada değişkenlere ad verirken Türkçe karakter kullanmamalısınız.) Bu parola adlı değişkenin değeri, kullanıcının girmesi gereken parolanın kendisi oluyor. Ardından cevap adlı başka bir değişken daha tanımlayıp raw_input() fonksiyonunu bu değişkene atadık. Daha sonra da if deyimi yardımıyla, “Eğer cevap değişkeninin değeri parola değişkeninin değeriyle aynı ise ekrana ‘Parola onaylandı! Programa hoş geldiniz!’ yazdır,” dedik. Bu programı çalıştırdığımızda, eğer kullanıcının girdiği kelime “python” ise parola onaylanacaktır. Yok, eğer kullanıcı başka bir kelime yazarsa, program derhal kapanacaktır. Aynı programı şu şekilde kısaltarak da yazabiliriz:

#!/usr/bin/env python
# -*- coding: utf-8 -*-

parola = raw_input("Lütfen parolanızı giriniz: ")

if parola == "python":
    print "Parola onaylandı! Programa hoş geldiniz!"

Burada raw_input() fonksiyonunun değerini doğrudan parola adlı değişkene atıyoruz. Hemen alttaki satırda ise girilmesi gereken parolanın ne olduğunu şu şekilde ifade ediyoruz: “Eğer parola python ise ekrana ‘Parola onaylandı! Programa hoş geldiniz!’ yazdır.

elif Deyimi

Bazen kullanıcıdan bir veri alırken, kullanıcının verebileceği farklı cevaplara göre programımızın farklı tepkiler vermesini isteyebiliriz. Mesela şu örneğe bakın:

#!/usr/bin/env python
# -*- coding: utf-8 -*-

meyve = raw_input("Bir meyve adı yazınız: ")

if meyve == "elma":
    print "elma bir meyvedir"

elif meyve == "armut":
    print "armut bir meyvedir"

elif meyve == "kiraz":
    print "kiraz bir meyvedir"

elif meyve == "kabak":
    print "kabak bir meyve değildir"

Burada şu Türkçe ifadeyi Python’caya çevirdik: “Kullanıcıya, bir meyve ismi yazmasını söyle. Eğer kullanıcının yazdığı isim elma ise, ekrana ‘elma bir meyvedir’ çıktısı verilsin. Yok, eğer kullanıcının yazdığı isim elma değil, ama armut ise ekrana ‘armut bir meyvedir’ çıktısı verilsin. Yok, eğer kullanıcının yazdığı isim elma veya armut değil, ama kiraz ise ekrana ‘kiraz bir meyvedir’ çıktısı verilsin. Yok, eğer kullanıcının yazdığı isim elma, armut veya kiraz değil, ama kabak ise ekrana ‘kabak bir meyve değildir’ çıktısı verilsin.

Gördüğünüz gibi, eğer birden fazla koşullu durumla karşı karşıyaysak elif deyimini kullanıyoruz. Burada en başa bir adet if deyimi koyduğumuza, bundan sonra da üç tane elif deyimi kullandığımıza dikkat edin.

Elbette bu tür durumlar için birden fazla if deyimini art arda da kullanabiliriz:

#!/usr/bin/env python
# -*- coding: utf-8 -*-

meyve = raw_input("Bir meyve adı yazınız: ")

if meyve == "elma":
    print "elma bir meyvedir"

if meyve == "armut":
    print "armut bir meyvedir"

if meyve == "kiraz":
    print "kiraz bir meyvedir"

if meyve == "kabak":
    print "kabak bir meyve değildir"

Bu örneklerde pek belli olmuyor, ama aslında if ile elif arasında çok önemli bir fark vardır. Mesela şu örneğe bakalım:

#!/usr/bin/env python
# -*- coding: utf-8 -*-

sayi = 100

if sayi == 100:
    print "sayi 100'dür"

if sayi <= 150:
    print "sayi 150'den küçüktür"

if sayi > 50:
    print "sayi 50'den büyüktür"

if sayi <= 100:
    print "sayi 100'den küçüktür veya 100'e eşittir"

Bu program çalıştırıldığında bütün olası sonuçlar listelenecektir. Yani çıktımız şöyle olacaktır:

sayi 100'dür
sayi 150'den küçüktür
sayi 50'den büyüktür
sayi 100'den küçüktür veya 100'e eşittir

Eğer bu programı elif deyimlerinden de yararlanarak yazarsak sonuç şu olacaktır:

Öncelikle kodumuzu görelim:

#!/usr/bin/env python
# -*- coding: utf-8 -*-

sayi = 100

if sayi == 100:
    print "sayi 100'dür"

elif sayi <= 150:
    print "sayi 150'den küçüktür"

elif sayi > 50:
    print "sayi 50'den büyüktür"

elif sayi <= 100:
    print "sayi 100'den küçüktür veya 100'e eşittir"

Bu kodların çıktısı ise şöyle olacaktır:

sayı 100'dür

Gördüğünüz gibi programımızı elif deyimini kullanarak yazarsak Python belirtilen koşulu karşılayan ilk sonucu ekrana yazdıracak ve orada duracaktır. if deyimi ise olası bütün sonuçları ekrana basacaktır.

Buraya kadar Python’da pek çok şey öğrenmiş olduk. Şimdiye dek öğrendiklerimizi kullanarak artık çok basit bir hesap makinesi yazabiliriz:

#!/usr/bin/env python
# -*- coding:utf-8 -*-

from __future__ import division

secenek1 = "(1) toplama"
secenek2 = "(2) çıkarma"
secenek3 = "(3) çarpma"
secenek4 = "(4) bölme"

print secenek1
print secenek2
print secenek3
print secenek4

soru = raw_input("Yapılacak işlemin numarasını girin: ")

if soru == "1":
    sayi1 = input("Toplama için ilk sayıyı girin: ")
    print sayi1
    sayi2 = input("Toplama için ikinci sayıyı girin: ")
    print sayi1, "+", sayi2, ":", sayi1 + sayi2

if soru == "2":
    sayi3 = input("Çıkarma için ilk sayıyı girin: ")
    print sayi3
    sayi4 = input("Çıkarma için ikinci sayıyı girin: ")
    print sayi3, "-", sayi4, ":", sayi3 - sayi4

if soru == "3":
    sayi5 = input("Çarpma için ilk sayıyı girin: ")
    print sayi5
    sayi6 = input("Çarpma için ikinci sayıyı girin: ")
    print sayi5, "x", sayi6, ":", sayi5 * sayi6

if soru == "4":
    sayi7 = input("Bölme için ilk sayıyı girin: ")
    print sayi7
    sayi8 = input("Bölme için ikinci sayıyı girin: ")
    print sayi7, "/", sayi8, ":", sayi7 / sayi8

Bu örnek programı inceleyip, programın nasıl çalıştığını anlamaya uğraşır, eksik yanlarını tespit eder ve bu eksikleri giderme yolları üzerinde kafa yorarsanız, verdiğimiz bu basit örnek amacına ulaşmış demektir.

else Deyimi

else deyimi kısaca, if ve elif deyimleriyle tanımlanan koşullu durumlar dışında kalan bütün durumları göstermek için kullanılır. Küçük bir örnek verelim:

#!/usr/bin/env python
# -*- coding: utf-8 -*-

isim = raw_input("Senin ismin ne?")

if isim == "Ferhat":
    print "Ne güzel bir isim bu!"

elif isim == "Serhat":
    print "Hmm.. Fena isim değil..."

else:
    print isim, "adını pek sevmem!"

Burada yaptığımız şey şu: Öncelikle kullanıcıya, “Senin ismin ne?” diye soruyoruz. Bu soruyu, isim adı verdiğimiz bir değişkene atadık. Daha sonra şu cümleyi Pythoncaya çevirdik: “Eğer isim değişkeninin değeri Ferhat ise, ekrana ‘Ne güzel bir isim bu!’ cümlesini yazdır. Yok, eğer isim değişkeninin değeri Ferhat değil, ama Serhat ise ekrana ‘Hmm.. Fena isim değil...’ cümlesini yazdır. Eğer isim değişkeninin değeri bunların hiçbiri değil, ama başka herhangi bir şeyse, ekrana isim değişkeninin değerini ve ‘adını pek sevmem!’ cümlesini yazdır.

Bu öğrendiğimiz else deyimi sayesinde artık kullanıcı yanlış parola girdiğinde uyarı mesajı gösterebileceğiz:

#!/usr/bin/env python
# -*- coding: utf-8 -*-

parola = raw_input("Lütfen parolanızı giriniz: ")

if parola == "python":
    print "Parola onaylandı! Programa hoşgeldiniz!"

else:
    print "Ne yazık ki, yanlış parola girdiniz!"

İsterseniz daha önce gördüğümüz bir örneğe de uygulayalım bu else deyimini:

#!/usr/bin/env python
# -*- coding: utf-8 -*-

meyve = raw_input("Bir meyve adı yazınız: ")

if meyve == "elma":
    print "elma bir meyvedir"

elif meyve == "armut":
    print "armut bir meyvedir"

elif meyve == "kiraz":
    print "kiraz bir meyvedir"

elif meyve == "kabak":
    print "kabak bir meyve değildir"

else:
    print "%s dediğiniz şeyin ne olduğunu bilmiyorum!" %meyve

Böylece özel olarak tanımladığımız durumlar dışında kalan her şey için kullanıcıya gösterecek bir cümlemiz var artık...

Python’da Girintileme Sistemi

Pek çok programlama dilinde girintileme bir tercih meselesidir. Bu dillerde yazdığınız kodlar girintilenmiş de olsa girintilenmemiş de olsa düzgün bir şekilde çalışacaktır. Mesela aşağıdaki C koduna bakalım:

#include <stdio.h>

int main()
{
    int a = 1;
    if (a == 1)
    {
        printf("Elveda Zalim Dünya!\n");
        return 0;
    }
}

Eğer istersek yukarıdaki kodları şöyle de yazabiliriz:

#include <stdio.h>
int main(){int a = 1;if (a == 1){printf("Elveda Zalim Dünya!\n");return 0;}}

Bu kodları daha sonra okuyacak kişilerin nefretini kazanmak dışında, kodları bu şekilde yazmamız herhangi bir soruna neden olmaz. Yani yukarıda gösterilen her iki kod da derleyiciler (compiler) tarafından aynı şekilde okunup, başarıyla derlenecektir. Eğer yazdığınız kodların okunaklı olmasını istiyorsanız, yukarıda gösterilen ilk kodlama biçimini tercih etmeniz gerekir. Ama dediğim gibi, ikinci kodlama biçimini kullanmanız da programınızın çalışmasını etkilemez.

Ancak Python’la ilgilenen herkesin çok iyi bildiği gibi, Python programlama dilinde girintileme basit bir üslup meselesi değildir.

Yani yukarıdaki C kodlarının yaptığı işi Python’la yerine getirmek istersek şöyle bir kod yazmamız gerekir:

a = 1
if a == 1:
    print "Elveda Zalim Dünya"

Bu kodların sahip olduğu girintileme yapısı Python açısından büyük önem taşır. Örneğin yukarıdaki kodları şu şekilde yazamayız:

a = 1
if a == 1:
print "Elveda Zalim Dünya"

Bu kodlar çalışma sırasında hata verecektir.

Aslında Python’daki girintileme mevzuu bundan biraz daha karışıktır. Yukarıdaki örneklerde görüldüğü gibi girinti verilmesi gereken yerde girinti verilmemesinin hataya yol açması dışında, programın yazılması esnasında bazı yerlerde SPACE tuşuna basılarak, bazı yerlerde ise TAB (Sekme) tuşuna basılarak girinti verilmesi de hatalara yol açabilir. Dolayısıyla yazdığınız programlarda girintileme açısından mutlaka tutarlı olmanız gerekir. Boşluk ve sekme tuşlarını karışık bir şekilde kullanmanız, kimi zaman yazdığınız kodların düzgün çalışmasını engellemese bile, farklı metin düzenleyicilerde farklı kod görünümlerinin ortaya çıkmasına sebep olabilir. Yani mesela herhangi bir metin düzenleyici kullanarak yazdığınız bir programı başka bir metin düzenleyici ile açtığınızda girintilerin birbirine girdiğini görebilirsiniz.

Girintilemelerin düzgün görünmesini sağlamak ve hatalı çalışan veya hiç çalışmayan programlar ortaya çıkmasına sebep olmamak için, kullandığınız metin düzenleyicide de birtakım ayarlamalar yapmanız gerekir. Bir defa kullandığınız metin düzenleyicinin, mutlaka sekmelerin kaç boşluktan oluşacağını belirleyen bir ayarının olması gerekir. Örneğin Gnome’deki Gedit, KDE’deki Kate ve Kwrite, Windows’taki Notepad++ ve Notepad2 adlı metin düzenleyiciler size böyle bir ayar yapma şansı tanır. Herhangi bir program yazmaya başlamadan önce mutlaka sekme ayarlarını yapmanız veya bu ayarların doğru olup olmadığını kontrol etmeniz gerekir. Mesela Gedit programı üzerinden bir örnek verelim.

Gedit’i ilk açtığınızda düzen/yeğlenenler/düzenleyici yolunu takip ederek sekmeler başlığı altındaki ayarları kontrol etmelisiniz. Python programlarımızın girinti yapısının düzgün olabilmesi için orada “sekme genişliği”ni “4” olarak ayarlamanız, “Sekme yerine boşluk ekle” seçeneğinin yanındaki kutucuğu da işaretli hale getirmeniz gerekir. Buna benzer ayarlar bütün iyi metin düzenleyicilerde bulunur. Örneğin Geany adlı metin düzenleyiciyi kullanıyorsanız, düzenle/tercihler/düzenleyici/girinti yolunu takip ederek şu ayarlamaları yapabilirsiniz:

genişlik => 4

Tür => Boşluklar

sekme genişliği => 4

Not

Eğer IDLE üzerinde çalışıyorsanız herhangi bir ayar yapmanıza gerek yok. IDLE’da bu söylediğimiz ayarlar zaten yapılmıştır...

Öte yandan, bu işin bir de sizin pek elinizde olmayan bir boyutu vardır. Eğer yazdığınız kodlar birden fazla kişi tarafından düzenleniyorsa, sekme ayarları düzgün yapılmamış bir metin düzenleyici kullanan kişiler kodunuzun girinti yapısını allak bullak edebilir. Bu yüzden, ortak proje geliştiren kişilerin de sekme ayarları konusunda belli bir kuralı benimsemesi ve bu konuda da tutarlı olması gerekir. İngilizce bilenler için, bu girintileme konusuyla ilgili http://wiki.python.org/moin/HowToEditPythonCode adresinde güzel bir makale var. Bu makaleyi okumanızı tavsiye ederim.

Python Kodlarına Yorum Eklemek

Program yazanların genellikle ihmal ettiği, ancak aslında son derece önemle bir konudan söz edeceğiz: Yazdığınız programlara yorum/açıklama eklemek.

Diyelim ki, içerisinde satırlar dolusu kod barındıran bir program yazdık ve bu programımızı başkalarının da kullanabilmesi için internet üzerinden dağıtacağız. Bizim yazdığımız programı kullanacak kişiler, kullanmadan önce kodları incelemek istiyor olabilirler. İşte bizim de, kodlarımızı incelemek isteyen kişilere yardımcı olmak maksadıyla, programımızın içine neyin ne işe yaradığını açıklayan bazı notlar eklememiz en azından nezaket gereğidir. Başkalarını bir kenara bırakalım, bu açıklayıcı notlar sizin de işinize yarayabilir. Aylar önce yazmaya başladığınız bir programa aylar sonra geri dönmek istediğinizde, “Acaba ben burada ne yapmaya çalışmışım?” demenizi de engelleyebilir bu açıklayıcı notlar.

Peki, programımıza bu açıklayıcı notları nasıl ekleyeceğiz?

Kuralımız şu: Python’da kod içine açıklayıcı notlar eklemek için “#” işaretini kullanıyoruz.

Hemen bir örnek verelim:

print "deneme 1, 2, 3" #deneme yapıyoruz...

Yorumlarımızı Python kodları içinde hemen hemen her yere yerleştirebiliriz. Mesela:

#!/usr/bin/env python
# -*-  coding: utf-8 -*-

#Program adı: HTMLYap
#Yazarı     : Orçun Kunek
#Tarih      : 19 Nisan 2010
#Amacı      : HTML belgesi üretmek
#Platform   : GNU/Linux, Windows

#HTML belgesinin <title> imine gelecek karakter dizisi
baslik = "Örnek bir HTML Dosyası"

#HTML belgesinin gövde metni
metin = "Merhaba HTML!"

#Burada standart bir HTML şablonu içine, Python'daki
#%s işaretlerini kullanarak bir başlık ve gövde
#metni gömüyoruz.
print """
<html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>%s</title>
</head>
<body>
<p><b>%s</b></p>
</body>
</html>
""" %(baslik, metin) #başlık ve metin değişkenleri...

Kodlarımız içine yorum eklerken göz önünde bulundurmamız gereken önemli bir nokta da ne çok az ne de haddinden fazla yorum girmektir. Özellikle gereğinden fazla yorumlanmış programları okumak çok zor olabilir.

Yukarıda verdiğimiz örneği dikkatli incelerseniz, program içine eklediğimiz yorumların birbirlerinden farklı amaçlara hizmet ettiğini görürsünüz. Mesela şu kısmın görevi geri kalan yorumlarınkinden farklıdır:

#Program adı: HTMLYap
#Yazarı     : Orçun Kunek
#Tarih      : 19 Nisan 2010
#Amacı      : HTML belgesi üretmek
#Platform   : GNU/Linux, Windows

Burada kodlarımız hakkında açıklayıcı bir yorum yapmak yerine, programımız hakkında genel bir bilgi veriyoruz. Buradan da anlayabileceğiniz gibi, yorumlar bir program içinde çok farklı amaçlara hizmet edebilir. Hatta yorumlardan süsleme amacıyla da yararlanabilirsiniz:

#######################################################
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
#                    FALANCA v.1                      #
#                Yazan: Keramet Su                    #
#                  Lisans: GPL v2                     #
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
#######################################################

Python’daki yorumların başka kullanım alanları da vardır. Örneğin, yazdığımız programa bir özellik eklemeyi düşünüyoruz, ama henüz bu özelliği yeni sürüme eklemek istemiyoruz. O zaman şöyle bir şey yapabiliriz:

# -*- coding: utf-8 -*-

sistem = raw_input("Hangi işletim sistemini kullanıyorsunuz? ")

if sistem == "Windows":
    print "Merhaba Windows kullanıcısı!"

elif sistem == "GNU/Linux":
    print "Merhaba GNU/Linux kullanıcısı!"

#elif sistem == "MacOsX":
#    print "Merhaba MacOsX kullanıcısı!"

else:
    print "Kullandığınız işletim sistemi tanıdık gelmedi..."

Burada elif sistem == "MacOsX": kısmını yorum içine alarak şimdilik bu kısmı iptal ediyoruz (İngilizce’de bu “yorum içine alma” işlemine “comment out” deniyor). Python yorum içinde bir kod bile yer alsa o kodları çalıştırmayacaktır. Çünkü Python “#” işareti ile başlayan satırların içeriğini görmez (#!/usr/bin/env python satırı hariç).

Peki eklemek istemediğimiz özelliği yorum içine almaktansa doğrudan silsek olmaz mı? Elbette olur. Ama programın daha sonraki bir sürümüne ilave edeceğimiz bir özelliği yorum içine almak yerine silecek olursak, vakti geldiğinde o özelliği nasıl yaptığımızı hatırlamakta zorlanabiliriz! Hatta bir süre sonra programımıza hangi özelliği ekleyeceğimizi dahi unutmuş olabiliriz. “Hayır, ben hafızama güveniyorum!” diyorsanız karar sizin!

Yorum içine alarak iptal ettiğiniz bu kodları programa ekleme vakti geldiğinde yapacağınız tek şey, kodların başındaki “#” işaretlerini kaldırmak olacaktır. Hatta bazı metin düzenleyiciler bu işlemi tek bir tuşa basarak da gerçekleştirme yeteneğine sahiptir. Örneğin IDLE ile çalışıyorsanız, yorum içine almak istediğiniz kodları fare ile seçtikten sonra ALT+3 tuşlarına basarak ilgili kodları yorum içine alabilirsiniz. Bu kodları yorumdan kurtarmak için ise ilgili alanı seçtikten sonra ALT+4 tuşlarına basmanız yeterli olacaktır (“yorumdan kurtarma” işlemine İngilizce’de “uncomment” diyorlar).

Bölüm Soruları

1. Çocuklara hayvanların çıkardığı sesleri öğreten basit bir program yazın.

2. Kullanıcının girdiği şehir veya semt bilgisine göre kira fiyat aralıklarını gösteren bir program yazın.

3. Haftanın 5 günü için farklı bir yemek menüsü oluşturun. Örnek bir menü biçimi şöyle olmalı:

Gün         :
Müşteri Adı :

Çorba çeşidi:
Ana yemek   :
Tatlı       :

Daha sonra müşterinize hangi güne ait menüyü görmek istediğini sorun ve cevaba göre menüyü gösterin.

4. Bir önceki soruda müşterinin yediği yemekler için ayrıntılı hesap dökümü çıkarın ve müşteriyi bilgilendirin.