İçeriğe geç
Educora
Başlangıç15 dk3 / 42

Karakter dizileri ve f-string'ler

Metinlerle çalışmayı öğren: birleştirme, indeksler, dilimler, kullanışlı metotlar ve f-string'lerle şablonlar.

Kendini test et
Bu derste öğreneceklerin
  • 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.

Python
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.

Python
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.

KarakterPython
İndeks012345
Negatif indeks-6-5-4-3-2-1
'Python' dizisindeki indeksler

Dilim, 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.

Python
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:

MetotNe 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
Python
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.

Python
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:

Python
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.

Alıştırma

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.

Alıştırma · Python
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
Alıştırma

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.

Alıştırma · Python
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, replace vb.) 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.

1 / 10
s = 'Python' ise s[1] nedir?