Python'da string işlemleri ve f-string ile metin biçimlendirme, dijital kimlik kartı örneği

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))   # 9

Bü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 mutlaka f koymalı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 atama TypeError verir. 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ırmak sehir değişkenini değiştirmez, sadece yeni bir string döndürür; kalıcı olması için sehir = 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:].

Scroll to Top