• Sonuç bulunamadı

Python’daki en önemli komutlardan biri olan print‘i ö˘grendi˘gimize göre, bundan sonraki konuları daha rahat anlayabilmemiz için bazı kavramlardan söz etmemiz faydalı olabilir. Bu bölümde “karakter dizisi” diye bir ¸seyden söz edece˘giz. Yabancılar buna string adı veriyor...

Aslında biz karakter dizisinin ne oldu˘gunu biliyoruz. Yukarıda print komutunu i¸slerken bu karakter dizilerini zaten kullandık. Oradaki örneklerden de görece˘giniz gibi, karakter dizileri, tırnak içinde gösterilen herhangi bir “¸sey”dir. Tanımından da anla¸sılaca˘gı gibi, tırnak içinde gösterebildi˘gimiz her ¸sey bir karakter dizisi olabilir. Mesela ¸su örnekler birer karakter dizisidir:

"Python"

"Perl"

"Ruby"

"23"

"35"

"@falanca"

"c"

Karakter dizilerinin ayırt edici özelli˘gi, tırnak i¸sareti ta¸sımalarıdır. E˘ger yukarıdaki örnekleri tırnak i¸saretsiz olarak kullanırsak, artık bu ö˘geler birer karakter dizisi olmayacaktır...

Yukarıdaki örneklerden de gördü˘gümüz gibi, bir karakter dizisinin ne kadar uzun veya ne kadar kısa oldu˘gunun hiçbir önemi yok. Bir karakter dizisi tek bir karakterden olu¸sabilece˘gi gibi, birden fazla karakterden de olu¸sabilir. Bu nedenle “c” de bir karakter dizisidir,

“@falanca” da...

Python’da karakter dizilerini ekrana yazdırabilmek için print komutundan yararlanabilece˘gimizi biliyorsunuz. Mesela:

>>> print "k"

k

>>> print "456"

456

>>> print "Ruby"

Ruby

>>> print "˙Istanbul’un 5 günlük hava tahmini"

˙Istanbul’un 5 günlük hava tahmini

Etkile¸simli kabukta çalı¸sırken, istersek yukarıdaki örnekleri print komutunu kullanmadan da ekrana yazdırabiliriz:

>>> "Python"

’Python’

>>> "Perl"

’Perl’

>>> "Ruby"

’Ruby’

>>> "4243"

’4243’

Ancak bu durum sadece etkile¸simli kabuk için geçerlidir. Yani ilerde kodlarımızı bir dosyaya kaydetti˘gimiz zaman, yukarıdaki kodların çıktı vermedi˘gini, herhangi bir ¸seyi ekrana

yazdırabilmek için mutlaka print komutundan yararlanmamız gerekti˘gini görece˘giz.

¸

Su örne˘ge bir bakalım:

>>> print "Python programlama dili"

Python yukarıdaki gibi bir komutla kar¸sıla¸stı˘gında iki basamaklı bir i¸slem gerçekle¸stirir. Önce

“Python programlama dili” adlı karakter dizisini okur, ardından da print komutunun etkisiyle bu karakter dizisini ekrana basıp kullanıcıya gösterir. Yani ¸söyle bir çıktı verir:

Python programlama dili

Etkile¸simli kabukta bir karakter dizisini print komutu olmadan kullandı˘gımızda Python yalnızca birinci basama˘gı gerçekle¸stirmi¸s olur. Böyle bir durumda yaptı˘gı tek ¸sey bu karakter dizisini okumaktır. print komutunu kullanarak bu karakter dizisini kullanıcıya göstermedi˘gimiz için ikinci basamak gerçekle¸smez. Dolayısıyla elde etti˘gimiz çıktı, söz konusu karakter dizisini kullanıcının de˘gil, Python’ın ne ¸sekilde gördü˘günü gösterir. Yani Python bize ¸söyle bir ¸sey söylemi¸s olur:

“Sen ¸simdi etkile¸simli kabu˘ga bir ¸seyler yazdın. Ben de bunu algıladım. Yazdı˘gın ¸seyi

algıladı˘gımı göstermek için de, çıktıyı sana tek tırnak i¸saretleri içinde gösterdim. Ancak print gibi bir komut yardımıyla ekrana herhangi bir ¸sey basmamı¸s olman da dikkatimden kaçmadı de˘gil!

Basit bir örnek verelim:

>>> "dünya"

’d\xc3\xbcnya’

Gördü˘günüz gibi, “dünya” kelimesi içindeki Türkçe karakter (“ü”) çıktıda düzgün görünmüyor.

Demek ki Python bizim girdi˘gimiz “dünya” adlı karakter dizisini “d\xc3\xbcnya” ¸seklinde görüyormu¸s... (Buradaki “\xc3\xbc” kısmı kullandı˘gınız i¸sletim sistemine göre farklılık gösterebilir.) Biz bu karakter dizisini kullanıcıya gösterebilmek için ¸söyle yazaca˘gız:

>>> print "dünya"

dünya

Yazdı˘gımız Python programlarını dosyaya kaydedip çalı¸stırdı˘gımızda yukarıda anlattıklarımızın ne demek oldu˘gunu çok daha net bir ¸sekilde anlayaca˘gız. O yüzden, e˘ger yukarıdaki

açıklamalar size kafa karı¸stırıcı geldiyse hiç endi¸se etmenize gerek yok. Okumaya devam edebilirsiniz.

Karakter dizilerini göstermek için tırnak i¸saretlerinden yararlanıyoruz demi¸stik. Python’da karakter dizilerini göstermek için farklı tırnak tiplerini kullanabilirsiniz. Örne˘gin çift tırnak kullanabilirsiniz:

>>> print "Python güçlü bir programlama dilidir."

veya tek tırnak:

>>> print ’Python güçlü bir programlama dilidir.’

Bu tırnak tiplerini önceki örneklerimizde görmü¸stük. Ama Python bize bunların dı¸sında bir tırnak alternatifi daha sunar. Üç tırnak:

>>> print """Python güçlü bir programlama dilidir."""

Gördü˘günüz gibi, karakter dizileriyle birlikte üç farklı tırnak çe¸sidi kullanabiliyoruz. Hangi tırnak çe¸sidini kullandı˘gınızın çok fazla bir önemi yok. Önemli olan, karakter dizisini hangi tırnakla açtıysanız o tırnakla kapatmanızdır.

Bu tırnak tipleri içinde en yaygın kullanılan çift tırnaktır. Tabii siz istedi˘giniz tırnak biçimini kullanmakta özgürsünüz. Yalnız önceki bölümde, duruma göre kullanılan tırnak tipinin önem kazandı˘gını gösteren ¸söyle bir örnek verdi˘gimizi biliyorsunuz:

>>> print "˙Istanbul’un 5 günlük hava tahmini"

Burada “˙Istanbul’un 5 günlük hava tahmini” bir karakter dizisidir. Bu karakter dizisini

göstermek için çift tırnaklardan yararlandık. ˙Istersek elbette bu karakter dizisini tek tırnak ile de gösterebiliriz. Ancak ˙Istanbul’un kelimesi içinde geçen kesme i¸saretinden ötürü,

kullanılan tırnakların birbirine karı¸sması gibi bir tehlike söz konusu. Yani, daha önce de gördü˘gümüz gibi, ¸söyle bir kullanım Python’ın kafasının karı¸smasına yol açacaktır:

>>> print ’˙Istanbul’un 5 günlük hava tahmini’

Bu kullanımda, Python karakter dizisini kapatan tırna˘gın hangisi oldu˘gunu anlayamayacak, o yüzden de ¸söyle bir hata mesajı verecektir:

File "<stdin>", line 1

print ’˙Istanbul’un 5 günlük hava tahmini’

^ SyntaxError: invalid syntax

Dikkat ederseniz hata çıktısındaki ˙Istanbul’un kelimesinin sonunda minik bir ok i¸sareti var.

˙I¸ste bu ok, hata üreten sorunlu bölgeyi gösteriyor.

Böyle bir hata mesajı almamak için kaçı¸s dizilerinden yararlanmamız gerekti˘gini söylemi¸stik:

>>> print ’˙Istanbul\’un 5 günlük hava tahmini’

Biraz sonra kaçı¸s dizilerinden ayrıntılı olarak söz edece˘giz. O yüzden yukarıdaki kullanımın kafanızı karı¸stırmasına izin vermeyin.

E˘ger bunların hiçbiriyle u˘gra¸smak istemezseniz üç tırnaktan da yararlanabilirsiniz:

>>> print """Ahmet’in ö˘gretmeni Cem Bey, "ödevini yapmadan gelme!" dedi."""

Gördü˘günüz gibi, üç tırnak i¸sareti sayesinde karakter dizisi içinde hem tek tırnak, hem de çift tırnak kullanabildik. Zira yukarıdaki karakter dizisine tek tırnakla ba¸slasakAhmet’in kelimesi içindeki kesme i¸sareti, çift tırnakla ba¸slasak“ödevini yapmadan gelme!” ifadesi içindeki çift tırnak i¸saretleri bize sorun yaratacak... Bu engellere takılmadan, kodumuzu düzgün bir

¸

sekilde ekrana yazdırabilmek için üç tırnak i¸saretlerini kullanmayı tercih ettik.

Üç tırnak i¸saretinin marifetleri yukarıdakilerle sınırlı de˘gildir. Bu tırnak tipi, kimi durumlarda i¸simizi bir hayli kolayla¸stırır. Mesela kullanıcılarımıza ¸söyle bir çıktı göstermemiz gerekti˘gini varsayalım:

Böyle bir çıktı vermenin en kolay yolu üç tırnak i¸saretlerinden yararlanmaktır:

>>> print """

... Günün mönüsü ... ---... Makarna .... 6 TL ... Çorba... 3 TL

... Tatlı... 2 TL ... """

Burada ilk üç tırnak i¸saretini koyduktan sonraENTER tu¸suna bastık. Alt satıra geçildi˘ginde

>>>saretinin ... i¸saretine döndü˘güne dikkat edin. Bu i¸saret Python’ın bizden komut girmeye devam etmemizi bekledi˘gini gösteriyor. Biz de bu beklentiye uyarak, “Günün mönüsü” satırını yazıyoruz. TekrarENTER tu¸suna bastı˘gımızda yine ... i¸saretini görüyoruz ve hemen “———-”

satırını yazıyoruz. Yazaca˘gımız kodlar bitene kadar böyle devam ediyoruz. ˙I¸simiz bitti˘ginde de kapanı¸s tırnaklarını koyupENTER tu¸suna basarak çıktıyı alıyoruz:

Günün mönüsü ---Makarna .... 6 TL Çorba... 3 TL Tatlı... 2 TL

Normalde, tek tırnak veya çift tırnak ile ba¸sladı˘gımız bir karakter dizisinde kapanı¸s tırna˘gını koymadanENTER tu¸suna basarsak hata alırız:

>>> print "Günün Mönüsü

File "<stdin>", line 1 print "Günün Mönüsü

^

SyntaxError: EOL while scanning string literal

Burada “Günün Mönüsü” karakter dizisine çift tırnakla ba¸sladık, ama tırna˘gı kapatmadan ENTER tu¸suna bastı˘gımız için Python bize bir hata mesajı gösterdi. Aynı ¸sey tek tırnak için de geçerlidir. Ama yukarıda da gördü˘günüz gibi üç tırnak farklıdır:

>>> print """Günün Mönüsü

...

Üç tırnak i¸sareti, karakter dizileri içinde geçen farklı tipte tırnakları atlatmamızı sa˘glamanın yanısıra, bize karakter dizilerimizi birden fazla satıra bölme imkanı da tanıyor. Aynı ¸seyi tek veya çift tırnakla yapamıyoruz. ˙Ilerde bu özellikten sık sık faydalandı˘gımızı göreceksiniz.

Karakter dizilerine ili¸skin önemli bir konu da bu karakter dizilerinin birbirleriyle nasıl birle¸stirilece˘gidir. Mesela bir kimsenin adı ile soyadını birle¸stirmek istersek ne yapmalıyız?

>>> print "Fırat" + "Özgül"

FıratÖzgül

Gördü˘günüz gibi, “+” i¸saretini kullanarak iki karakter dizisini birle¸stirebiliyoruz. Ancak burada bir sorun var. Çıktıda isim ve soyisim birbirine biti¸sik olarak görünüyor. Bu problemi çözmek için ¸söyle bir ¸sey yapabilirsiniz:

>>> print "Fırat" + " " + "Özgül"

Fırat Özgül

Burada “Fırat” ile “Özgül” karakter dizileri arasına bo¸s bir karakter dizisi yerle¸stirdik. Böylece çıktımız tam istedi˘gimiz gibi olmu¸s oldu.

Python karakter dizilerini birle¸stirebilmemiz için bize ba¸ska imkanlar da tanır. Mesela ¸su örne˘ge bir bakın:

>>> print "˙Istanbul" "Çeliktepe"

˙IstanbulÇeliktepe

Gördü˘günüz gibi, iki karakter dizisini, araya herhangi bir i¸saret koymadan da

birle¸stirebiliyoruz. Ancak burada da biraz öncekine benzer bir sorunla kar¸sı kar¸sıyayız.

Karakter dizilerimiz yine birbirine biti¸sik görünüyor. Biraz önceki yöntemi kullanarak bu karakter dizilerini ayırmamız mümkün:

>>> print "˙Istanbul" " " "Çeliktepe"

Hatta yukarıdaki gibi bir çıktı alabilmek için ¸söyle bir ¸seyler de yapabilirsiniz:

>>> print "˙Istanbul " + "Çeliktepe"

veya:

>>> print "˙Istanbul " "Çeliktepe"

Burada ayrı bir bo¸s karakter dizisi eklemek yerine, “˙Istanbul” adlı karakter dizisinin kapanı¸s tırna˘gını koymadan önce bir bo¸sluk bırakıyoruz...

Elbette Python’da çareler tükenmez. Dilerseniz yukarıdaki bütün her ¸seyi unutup ¸söyle bir ¸sey yazmayı da tercih edebilirsiniz:

>>> print "Fırat", "Özgül"

Fırat Özgül

Burada da karakter dizilerini birbirlerinden virgülle ayırmayı tercih ettik. Bu son kullanım sıklıkla kar¸sımıza çıkacak. O yüzden bu kullanımı aklımızda tutmamız gerekiyor.

Karakter dizilerinden ve bunların inceliklerinden ileride de söz etmeye devam edece˘giz. Ama isterseniz bu konuya ¸simdilik bir ara verelim ve Python’da farklı bir konuya giri¸s yapalım.