Ders 7'nin üç bölümü var; A, B, C. İstediğiniz sırayla devam edebilirsiniz.
Şu ana kadar stringleri (str
tipindeki nesneler) sadece basit yollardan kullandık. Bu derste stringlere müdahale etmeyi öğreneceğiz: onları nasıl parçalara ayırabiliriz, ayrı stringleri nasıl birleştirebiliriz, stringleri oluşturan karakterleri tek tek nasıl görüntüleyebiliriz.
String nedir?
Bir bilgisayardaki tüm bilgiler en temelde 0 ve 1 'ler den oluşan diziler hâlinde saklanır. Buna metinler, dijital kitaplar, resimler, müzikler, videolar ve oyun veya uygulamalar gibi "çalıştırılabilir dosyalar" da dâhildir. String, bir metin verisi örneğidir ve şu şekilde depolanır:
- string bir karakterler dizisidir (mesela, "Hello, World!" stringinde "H", "e" harfleri ile boşluk ve noktalama işaretleri de " ", "!" dâhil olmak üzere 13 karakter vardır.
- her karakter bir rakamla temsil edilir (mesela, "H" 40 rakamı ile temsil edilir; bu onun ASCII/Unicode değeridir.)
(Sayılar da iç sistemde 0-1 binary formatında depolanır.)
Karakter dizisi olan stringlerde değişiklik yapmak: S[]
Bir stringde değişiklik yapmak istersek, stringi oluşturan karakterleri hedef almamız gerekir. Bunu Python'da şöyle yaparız: S
bir string ve index
bir tamsayıdır;
S[index]notasyonu
index
noktasındaki S
karakterini getirir. Teamüllere göre stringin birinci indeksi 0'dır: yani S[0]
ilk karakteri, S[1]
ikinci karakteri, vd. gösterir. "Hello, World!" stringindeki karakterler:
Index: 0 1 2 3 4 5 6 7 8 9 10 11 12 Char.: H e l l o , W o r l d !İndeks 6'daki karakterin boşluk olduğunu hatırlatalım.
Pek çok diğer programlama dilinde, karakterler için ayrı bir tip vardır. Python'da ise karakterler, string uzunluğu -1 stringle aynı şeydir, yani bunun tipi str . |
Bir stringdeki karakter sayısını bulmak: len
Bir stingdeki karakter sayısını bulmak için Python fonksiyonlarından biri olan len
(length- uzunluk- kelimesinin ilk kısmı) kullanılır. Mesela, len("Hello, World!")
13'tür.
S
stringindeki son karakteri görmek için hangi ifadeyi yazabiliriz?len(S)
bize stirngin içindeki toplam karakter sayısını veriyorsa da, birinci index 0
'dan başladığı için son karakterin indeksi len(S)-1
oluyor.Şimdi öğrendiğimiz len
ve []
, araçlarıyla bir alıştırma yapalım.
Stringleri kesmek: S[:]
Bir stringi parçalara ayırmakla substring elde ederiz. Mesela "kal" ve "balık" stringleri, "kalabalık" stringinin substringleridir. Python'da bir substring oluşturmak için
S[firstIndex:tailIndex]sözdizimini kulllanırız; başlangıç noktamız ilk indeks firstIndex ve bitiş noktamız son indekstir tailIndex-1. Bu kodu çalıştırmadan önce sonucu tahmin etmeyi deneyin.
Substring alırken ilk indeks (firstIndex) dâhil, son indeks (tailIndex) hariçtir. Buna dikkat edilmezse sık hata yapılır. Ama bunun da iyi tarafı var. Mesela, bu kural sebebiyle S[i:j] gibi bir substringin uzunluğu her zaman j-i olacaktır. Bu teamül genellikle bir cetvelle gösterilir: |
Stringleri yapıştırmak: +
Hepimiz biliyoruz ki 1+2=3. Ama stringler söz konusu ise sonuç aşağıdaki gibidir:
Gördüğünüz gibi, S+T
ile yeni bir string oluşturmuş oluyoruz, bu stringin ilk kısmında S
son kısmında da T
var. Bu string yapıştırma işlemine birbirine bağlama (concatenation) denir.
İsterseniz sayıları da birbirne bağlayabilirsiniz, ama önce onları str tipine değiştirmeniz gerekir. Yoksa kodu yazdığınız sıralamaya bağlı olarak iki hatadan biri ile karşılaşırsınız. Bu programı çalıştırarak muhtemel hataları inceleyebilirsiniz.
Buradaki doğru bir örnek: str() fonksiyonu ile nesnleri bağlamadan önce sayıyı stringe çevirdik.
|
4. derste anlattığımız gibi stringleri sayılarla çarparak çoğaltabiliriz: S * n
formülü ile S + S + ... + S
işlemini kısaltmış oluyoruz.
Karakter kodları: ord
, chr
Bu dersin girişinde belirttiğimiz gibi, tüm karakterler aslında bilgisayarda rakamlarla temsil edilir. Hangi rakam hangi karaktere tekabül eder? Bu genellikle bilgisayarınızın hangi kodlamayı (encoding) kullandığına göre değişir, ama neredeyse tüm modern bilgisayarlarda 32 ile 255 arası rakamlara karşılık gelen standart bir karakter seti vardır. Burada 32 ile 127 arası karakterleri gösteren numaraların bir listesini veriyoruz:
ord: 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 chr: ! " # $ % & ' ( ) * + , - . / ord: 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 chr: 0 1 2 3 4 5 6 7 8 9 : ; < = > ? ord: 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 chr: @ A B C D E F G H I J K L M N O ord: 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 chr: P Q R S T U V W X Y Z [ \ ] ^ _ ord: 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 chr: ` a b c d e f g h i j k l m n o ord: 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 chr: p q r s t u v w x y z { | } ~8. derste bu tabloyu oluşturacağınız bir program yazacaksınız.
Tüm tabloyu ezberlemeye çalışmanın bir gereği yok ama yine de bazı noktaları hatırda tutmak faydalı olacaktır:
- küçük harfler sırasıyla a, b, c, ..., z ardışık karakter kodlarına sahiptir
- büyük harfler sırasıyla A, B, C, ..., Z ardışık karakter kodlarına sahiptir
- rakamlar sırasıyla 0, 1, 2, ..., 9 ardışık karakter kodlarına sahiptir
32 karakteri boşluktur, 127 ise birçok özel "kontrol" karakterinden biridir. Bunlardan 9 tab, 10 ve 13 paragraf karşılığı olan bazı kullanışlı karakterlerdir.
Python'da, bir karakteri karşılığı olan nümerik koda çevirmek için ord
fonksiyonu kullanılır. chr
fonksiyonu da tam tersini yapar: input olarak aldığı rakamı, tekabül ettiği karaktere çevirir.
Bazı sistemler sadece 32 ve 127 arasındaki karakterleri yazdırmayı destekler, diğerleri 255 veya 65535'e kadar karakterleri yazdırabilirler; Unicode içerisinde yüz binlerce karakter vardır. Bunların tarihi gelişimini buradan veya buradan okuyabilirsiniz. |
Dersi bitirirken 2 alıştırma daha yapalım.
Bir sonraki derse devam!