Programların büyük bölümü, aslında metinlerle uğraşır: kullanıcı adları, mesajlar, raporlar… Python’da metinleri temsil eden str tipini önceki yazılarda tanımıştık. Bu yazıda string’ler üzerinde yapabileceğiniz temel işlemleri ve metinleri şık biçimde biçimlendirmenin en modern yolu olan f-string‘leri öğreneceksiniz.
String Birleştirme ve Tekrarlama
İki string’i + ile birleştirebilir (buna “concatenation” denir), bir string’i * ile tekrarlayabilirsiniz:
ad = "Elif"
soyad = "Kaya"
tam_isim = ad + " " + soyad
print(tam_isim) # Elif Kaya
cizgi = "-" * 20
print(cizgi) # --------------------len() ile Uzunluk Öğrenme
len() fonksiyonu bir string’in kaç karakterden oluştuğunu (boşluklar dahil) söyler:
sifre = "python123"
print(len(sifre)) # 9Büyük/Küçük Harf Dönüşümleri
String’ler, üzerinde çeşitli işlemler yapmanızı sağlayan hazır “metotlar” ile birlikte gelir. En sık kullanılanlardan bazıları:
.upper()— Metni tamamen büyük harfe çevirir..lower()— Metni tamamen küçük harfe çevirir..title()— Her kelimenin ilk harfini büyütür..strip()— Metnin başındaki ve sonundaki boşlukları temizler.
sehir = "istanbul"
print(sehir.upper()) # ISTANBUL
print(sehir.title()) # Istanbul
kullanici_girdisi = " ayse@ornek.com "
print(kullanici_girdisi.strip()) # "ayse@ornek.com"String Dilimleme (Slicing) ve İndeksleme
Bir string’deki karakterlere, tıpkı bir listedeki elemanlar gibi, konumlarına (indekslerine) göre erişebilirsiniz. Python’da sayma 0’dan başlar:
kelime = "Python"
print(kelime[0]) # P (ilk karakter)
print(kelime[-1]) # n (son karakter)
print(kelime[0:3]) # Pyt (0'dan 3'e kadar, 3 dahil değil)
print(kelime[2:]) # thon (2. indeksten sonuna kadar)Bu teknik “slicing” (dilimleme) olarak adlandırılır ve metin[baslangic:bitis] şeklinde kullanılır; bitis indeksindeki karakter sonuca dahil edilmez.
f-string ile Modern Metin Biçimlendirme
Önceki yazılarda değişkenleri metinle birleştirmek için + ve str() kullandık; bu, değişken sayısı arttıkça oldukça yorucu hale gelir. Python 3.6 ile gelen f-string (formatted string literal) bunu çok daha okunaklı hale getirir. Bir string’in başına f harfi koyarsınız ve süslü parantez { } içine doğrudan değişken adlarını yazabilirsiniz:
isim = "Ahmet"
yas = 22
# Eski yöntem:
print("Merhaba, " + isim + "! " + str(yas) + " yaşındasın.")
# f-string ile:
print(f"Merhaba, {isim}! {yas} yaşındasın.")İki satır da aynı sonucu üretir, ama f-string ile str() çağırmanıza gerek kalmaz — Python değişkenin tipini otomatik olarak metne çevirir ve kod çok daha okunaklı görünür.
f-string İçinde İşlem Yapma
Süslü parantezlerin içine sadece değişken adı değil, doğrudan bir ifade (işlem) de yazabilirsiniz:
dogum_yili = 2003
simdiki_yil = 2026
print(f"Yaşınız: {simdiki_yil - dogum_yili}") # Yaşınız: 23
pi = 3.14159265
print(f"Pi sayısı: {pi:.2f}") # Pi sayısı: 3.14 (virgülden sonra 2 basamak)Son satırdaki :.2f kısmı bir “biçim belirteci”dir (format specifier) ve ondalıklı sayıyı virgülden sonra kaç basamak göstereceğinizi belirlemenizi sağlar.
Yaygın Hatalar ve Çözümleri
- f harfini unutmak —
"Merhaba, {isim}"yazarsanız süslü parantezler olduğu gibi ekrana basılır; string’in başına mutlakafkoymalısınız:f"Merhaba, {isim}". - String’leri doğrudan değiştirmeye çalışmak — Python’da string’ler “değiştirilemez” (immutable)’dir;
kelime[0] = "M"gibi bir atamaTypeErrorverir. Yeni bir string oluşturmanız gerekir. - Slicing sınırlarını karıştırmak —
metin[2:5]ifadesinde 5. indeksteki karakter sonuca dahil değildir; bu, yeni başlayanların sık yaptığı bir “kayma” hatasına yol açar. - upper()/lower() sonucunu değişkene atamayı unutmak —
sehir.upper()çalıştırmaksehirdeğişkenini değiştirmez, sadece yeni bir string döndürür; kalıcı olması içinsehir = sehir.upper()yazmalısınız.
Özet
Bu yazıda string birleştirme ve tekrarlama, len() ile uzunluk ölçme, .upper()/.lower()/.title()/.strip() metotları ve slicing ile string’lerden parça alma işlemlerini öğrendiniz. En önemlisi, modern ve okunaklı metin biçimlendirmenin yolu olan f-string‘i keşfettiniz. Bu, “Python Temelleri” serimizin son yazısıydı — bir sonraki bölümde veri yapıları (listeler, sözlükler) dünyasına adım atacağız.
Şimdi Sen Dene
💻 Alıştırma: f-string ile Kendi Dijital Kimlik Kartını Oluştur
Bir Python dosyası açın ve şu değişkenleri tanımlayın: ad_soyad, yas (int), bolum (üniversitede okuduğunuz bölüm, str), sehir (str).
Ardından tek bir f-string kullanarak aşağıdakine benzer, birden çok satırlı bir “kimlik kartı” yazdırın:
=== KİMLİK KARTI ===
Ad Soyad : Elif Kaya
Yaş : 20
Bölüm : Bilgisayar Mühendisliği
Şehir : İZMİRİpuçları: Çok satırlı bir string oluşturmak için üç tırnak (f"""...""") kullanabilirsiniz. Şehir ismini büyük harfle göstermek için f-string içinde {sehir.upper()} gibi bir metodu doğrudan çağırabilirsiniz.
Zorlu ek görev: Doğum yılınızı da bir değişkende tutup, yaşı elle yazmak yerine f-string içinde {2026 - dogum_yili} şeklinde anlık olarak hesaplatın.
Kendini Test Et: Çıktıyı Tahmin Et
Aşağıdaki her kod parçasının ne yazdıracağını önce tahmin edin, sonra cevabı görmek için üzerine tıklayın.
Soru 1: print("Python"[1:4]) ifadesinin çıktısı ne olur?
Cevap: yth — İndeks 1’den (y) başlar, indeks 4’e kadar (o dahil değil) gider: y-t-h.
Soru 2: ad = "veli" iken print(f"Merhaba {ad.upper()}") ifadesinin çıktısı ne olur?
Cevap: Merhaba VELI — f-string içinde bir metodu doğrudan çağırabilirsiniz; .upper() metni büyük harfe çevirir.
Soru 3: print(len("Merhaba Dünya")) ifadesinin çıktısı ne olur?
Cevap: 13 — “Merhaba Dünya” 7 + 1 (boşluk) + 5 = 13 karakterden oluşur; boşluk da bir karakter olarak sayılır.
Soru 4: x = 3.14159 iken print(f"{x:.1f}") ifadesinin çıktısı ne olur?
Cevap: 3.1 — :.1f biçim belirteci sayıyı virgülden sonra 1 basamağa yuvarlar (Python bankacı yuvarlaması kullandığı için bazı durumlarda .2 yerine .1 çıkabilir, ancak 3.14159 için sonuç 3.1’dir).
Soru 5: kelime = "Merhaba" iken kelime[0] = "m" satırını çalıştırmaya çalışırsanız ne olur?
Cevap: TypeError hatası alırsınız — String’ler Python’da değiştirilemez (immutable)’dir; tek bir karakteri bu şekilde değiştiremezsiniz. Bunun yerine yeni bir string oluşturmanız gerekir, örneğin kelime = "m" + kelime[1:].



