str Sınıfı ve İşlemleri - 3
9799
String’lerin Karşılaştırılması
İki string >, >=, <, <=, == ve != opertörleriyle
karşılaştırılabilir. Karşılaştırma leksikografik olarak yapılmaktadır. Yani
sözlükteki sıraya göre karşılaştırma yapılır. Karşılaştırma karşılıklı
karakterler aynı olduğu sürece ilerlenir. Farklı olunca da UNICODE sıra
numaralarına bakılır. Hangi numara büyükse o karakter diğerinden büyüktür.
Elbette genelde eşitlik veya değillik kısmına bakıyoruz, küçük ve büyük kısmını
pek kullanmayız.
Örnek:
password = 'maviay'
s = input('Enter password:')
result = s == password
print(result)
Karşılaştırma UNICODE numaralara bakılarak yapıldığı için Türkçe’de bulunan ç, ü, ö, ı, ğ, ş karakteleri ve bunların büyük harf karşılıkları, I hariç, UNICODE tabloda tüm İngilizce karakterlerden daha ileride bulunmaktakdır.
>>> 'ayça' < 'aysel'
False
Normalde bunun True olmasını bekleriz bizim sözlüğümüze göre.
Eğer bir yazı diğerini kapsıyorsa uzun olan yazı daha büyük olur.
>>> 'aliye' > 'ali'
True
9845
UNICODE tabloda önce büyük harfler sonra küçük harfler gelir. Zaten UNICODE tablonun ilk 128 karakteri ASCII tablosu ile aynıdır, ASCII tablosunda da durum böyledir zaten. Sonraki 128 karakter ise ASCII Latin-1 Code Page ile aynıdır.
ord() Fonksiyonu
ord() built-in fonksiyonu ile bir karakterin UNICODE tablodaki sıra numarasını
öğrenebilir.
>>> ord('a')
97
>>> ord('ş')
351
>>> ord('aş')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: ord() expected a character, but string of length 2 found
Eğer birden fazla karakteri olan str geçersek TypeError exception alırız.
Not
Hoca’nın yorumu şu: TypeError biraz doğru değil, zaten char yok. Onun
yerine ValueError verilmeliydi.
C, C++, Java ve C# gibi dillerde bir karakteri '' içerisine alınca zaten o
ifade ilgili karakterin tablodaki sıra numarasını belirti. Bu dillerde zaten
char türleri vardır. Dillerde char türleri aritmetik işlemlere de
sokulabilmektedir. Bu dillerde ord() fonksiyonu bulunmaktadır.
chr() Fonksiyonu
ord() fonksiyonunun tersidir. Bizden bir int değer alır, tek karakterli
bir str nesnesi verir.
>>> chr(65)
'A'
9911