- Karakter dizilerini birleştirmek, tekrarlamak ve uzunluğunu bulmak
- İndeks ve dilimlerle dizinin parçalarını almak
- Karakter dizisi metotlarını kullanmak
- f-string'lerle metne değer yerleştirmek ve sayıları biçimlendirmek
Mesajlar, isimler, şifreler, haber başlıkları... Programların işlediği verilerin büyük kısmı metindir. Sınıf arkadaşların için otomatik doğum günü kartları hazırladığını düşün: “Doğum günün kutlu olsun Elvin! Bugün 13 yaşına giriyorsun.” Karttan karta yalnızca isim ve yaş değişir. Bu derste metinlerle çalışmayı ve bu tür şablonları tek satırda kurmayı öğreneceksin.
Karakter dizileri
Karakter dizisi (str), tırnak içinde yazılmış karakterlerden oluşan bir dizidir: harfler, rakamlar, boşluklar ve işaretler. Karakter dizilerini + ile birleştirebilir, * ile tekrarlayabilir, uzunluklarını da len() fonksiyonuyla bulabilirsin.
greeting = 'Hello'
name = 'Aysel'
message = greeting + ', ' + name + '!'
print(message)
print(len(message))
print('Ha' * 3)▸ Beklenen çıktı
Hello, Aysel! 13 HaHaHa
len() boşlukları ve noktalama işaretlerini de sayar; bu yüzden 'Hello, Aysel!' dizisinin uzunluğu 13'tür. Bazı karakterler özel bir şekilde yazılır: dizinin içindeki \n yeni satıra geçer. Metninde kesme işareti varsa diziyi çift tırnağa al; böylece Python kesme işaretini dizinin sonu sanmaz.
print('First line\nSecond line')
print("It's easy!")▸ Beklenen çıktı
First line Second line It's easy!
İndeksler ve dilimler
Karakter dizisindeki her karakterin kendi numarası, yani indeksi vardır. Python'da sayma 0'dan başlar: ilk karakter [0], ikincisi [1] ve bu böyle devam eder. Negatif indeksler sondan sayar: [-1] son karakterdir.
| Karakter | P | y | t | h | o | n |
|---|---|---|---|---|---|---|
| İndeks | 0 | 1 | 2 | 3 | 4 | 5 |
| Negatif indeks | -6 | -5 | -4 | -3 | -2 | -1 |
'Python' dizisindeki indekslerDilim, karakter dizisinin bir parçasını alır: word[start:end]. Başlangıç indeksi dahildir, bitiş indeksi ise dahil değildir. Sayılardan birini yazmazsan Python en baştan ya da en sona kadar alır.
word = 'Python'
print(word[0])
print(word[5])
print(word[-1])
print(word[0:2])
print(word[2:])
print(word[:4])▸ Beklenen çıktı
P n n Py thon Pyth
Karakter dizisi metotları
Metot, belirli bir türe ait bir fonksiyondur ve değerden sonra nokta ile çağrılır: name.upper(). Metotlar asıl diziyi değiştirmez, yeni bir dizi döndürür. En kullanışlıları şunlardır:
| Metot | Ne yapar | Örnek |
|---|---|---|
upper(), lower() | tüm harfleri büyük ya da küçük yapar | 'Baku'.upper() → 'BAKU' |
title() | her kelimenin ilk harfini büyük yapar | 'leyla mammadova'.title() → 'Leyla Mammadova' |
strip() | baştaki ve sondaki boşlukları siler | ' hi '.strip() → 'hi' |
replace(a, b) | a'yı b ile değiştirir | 'tea'.replace('t', 'p') → 'pea' |
count(x) | x'in kaç kez geçtiğini sayar | 'banana'.count('a') → 3 |
startswith(x) | dizinin x ile başlayıp başlamadığını kontrol eder | 'Python'.startswith('Py') → True |
city = ' baku '
clean = city.strip()
print(clean.title())
print(clean.upper())
text = 'I like tea. Tea is tasty.'
print(text.lower().count('tea'))
print(text.replace('tea', 'coffee'))
print('tea' in text)
print(text.startswith('I'))▸ Beklenen çıktı
Baku BAKU 2 I like coffee. Tea is tasty. True True
Dikkat: replace büyük-küçük harfe duyarlıdır; bu yüzden yalnızca küçük harfli tea değiştirildi. count için önce tüm metni lower() ile küçük harfe çevirdik; metotlar bu şekilde zincirleme çağrılabilir. in işleci, bir dizinin diğerinin içinde geçip geçmediğini kontrol eder ve True ya da False verir.
f-string'ler: şablonlar
Bir metne değer yerleştirmenin en kolay yolu f-string'lerdir. Açılış tırnağından önce f harfini yaz, değişkeni ya da herhangi bir ifadeyi süslü parantez {} içine koy. Python her parantez çiftinin yerine değerini yazar.
name = 'Elvin'
age = 13
print(f'Happy birthday, {name}! You are {age} today.')
print(f'Next year you will be {age + 1}.')
price = 7.5
print(f'Price: {price:.2f} AZN')▸ Beklenen çıktı
Happy birthday, Elvin! You are 13 today. Next year you will be 14. Price: 7.50 AZN
{price:.2f} yazımı sayıyı ondalık kısmında tam 2 basamakla gösterir; para tutarları için ideal bir biçimdir. Bunun neden önemli olduğunu gerçek bir fiş örneğinde gör:
item = 'Notebook'
qty = 3
unit_price = 2.35
total = qty * unit_price
print(total)
print(f'{item}: {qty} x {unit_price} = {total:.2f} AZN')▸ Beklenen çıktı
7.050000000000001 Notebook: 3 x 2.35 = 7.05 AZN
İlk satırdaki tuhaf 7.050000000000001, bilgisayarın ondalıklı sayıları ikilik sistemde saklamasından kaynaklanır. Biçimlendirme bu küçük “kuyruğu” gizler.
Bir kullanıcı adını özensizce yazmış: ' aYSEL '. Üç satır yazdır: 1) boşlukları silinmiş ve yalnızca ilk harfi büyük olan ad (Aysel), 2) addaki harf sayısı, 3) adın ilk üç harfi büyük harflerle.
raw = ' aYSEL '
# 1) name = raw without spaces, in title case
# 2) print name, its length and its first 3 letters in capitals▸ Beklenen çıktı
Aysel 5 AYS
Bir fişin tek satırını f-string ile oluştur: ürün adı büyük harflerle, fiyat ve toplam ise noktadan sonra tam iki basamakla (:.2f) gösterilsin. Sonuç NOTEBOOK: 4 x 1.35 = 5.40 AZN olmalı. Toplamı qty * unit_price olarak hesapla.
item = 'Notebook'
qty = 4
unit_price = 1.35
# total = ...
# print the receipt line with an f-string▸ Beklenen çıktı
NOTEBOOK: 4 x 1.35 = 5.40 AZN
Önemli noktalar
- Karakter dizisi tırnak içindeki karakterlerden oluşur:
+birleştirir,*tekrarlar,len()uzunluğu verir. - İndeksler 0'dan başlar,
[-1]ise son karakterdir. [start:end]diliminde bitiş indeksi dahil değildir.- Metotlar (
upper,strip,replacevb.) yeni bir dizi döndürür, eskisini değiştirmez. - f-string'de
{}içindeki ifade hesaplanıp metne eklenir;{x:.2f}ondalık kısımda 2 basamak gösterir.
Kendini test et
10 soru. Her doğru cevap XP kazandırır.
s = 'Python' ise s[1] nedir?