Şimdiye kadar yazdığımız programlarda değerleri doğrudan kodun içine yazdık. Ama gerçek programlar genellikle kullanıcıdan bilgi alır: adını, yaşını, doğum yılını… Python’da bunu yapmamızı sağlayan yerleşik fonksiyon input()‘dur. Bu yazıda input() ile kullanıcıdan veri almayı ve gelen bu verinin tipini doğru şekilde dönüştürmeyi öğreneceksiniz.
input() Fonksiyonu Nedir?
input() çalıştığında program durur, kullanıcının bir şeyler yazıp Enter’a basmasını bekler ve yazılan metni geri döndürür. İsteğe bağlı olarak parantez içine bir “prompt” mesajı (kullanıcıya ne yazması gerektiğini söyleyen bir metin) verebilirsiniz:
isim = input("Adınız nedir? ")
print("Merhaba, " + isim + "!")Bu programı çalıştırdığınızda ekranda “Adınız nedir? ” yazısı belirir, siz bir isim yazıp Enter’a basarsınız ve program size “Merhaba, [isminiz]!” diye seslenir.
Önemli: input() Her Zaman str Döndürür
Bu, yeni başlayanların en sık düştüğü tuzaklardan biridir: kullanıcı ekrana 25 yazsa bile, input() bunu size her zaman bir metin (str) olarak verir, sayı olarak değil. Bunu type() ile doğrulayabilirsiniz:
yas = input("Yaşınız kaç? ")
print(type(yas)) # <class 'str'>, kullanıcı "25" yazmış olsa bileBu yüzden yas + 5 gibi bir işlem yapmaya çalışırsanız Python TypeError hatası verir; çünkü bir str ile bir int‘i doğrudan toplayamazsınız.
Tip Dönüşümü ile Sayısal Girdi Alma
Kullanıcıdan aldığınız metni sayı olarak kullanmak istiyorsanız, önceki yazılarda öğrendiğimiz int() veya float() fonksiyonlarıyla dönüştürmeniz gerekir. Bunu genellikle tek satırda, input()‘un sonucunu doğrudan sarmalayarak yaparız:
yas = int(input("Yaşınız kaç? "))
boy = float(input("Boyunuz kaç metre? "))
print(type(yas)) # <class 'int'>
print(type(boy)) # <class 'float'>
print(yas + 1) # artık hatasız toplanabilirBurada Python önce input()‘u çalıştırır (bir str elde eder), sonra bu str‘yi int() ya da float()‘a verir ve size sayısal bir değer döner.
Örnek Uygulama: Doğum Yılından Yaş Hesaplama
Öğrendiklerimizi birleştirerek kullanıcının doğum yılını soran ve yaklaşık yaşını hesaplayan küçük bir program yazalım:
simdiki_yil = 2026
dogum_yili = int(input("Doğum yılınız nedir? "))
yas = simdiki_yil - dogum_yili
print("Bu yıl içinde " + str(yas) + " yaşına giriyorsunuz.")Dikkat edin: yas bir int olduğu için, onu bir metinle birleştirmeden önce tekrar str() ile metne çevirmemiz gerekti. Bu, önceki yazılarda gördüğümüz “farklı tipleri doğrudan birleştirememe” kuralının doğal bir sonucudur.
input() ile Çalışırken Dikkat Edilmesi Gerekenler
- Kullanıcı beklenmeyen bir şey girebilir.
int(input(...))satırında kullanıcı “yirmi beş” gibi harflerden oluşan bir şey yazarsa, Python sayıya çeviremediği içinValueErrorhatası fırlatır. - Prompt mesajı isteğe bağlıdır ama önerilir.
input()boş parantezle de çalışır, fakat kullanıcıya ne yazması gerektiğini söylemek programınızı çok daha anlaşılır kılar. - Baştaki/sondaki boşluklar bazen sorun çıkarır. Kullanıcı yanlışlıkla ” 25″ gibi boşluklu bir değer girerse,
int()yine de bunu doğru işler; ancak metinsel karşılaştırmalarda (==) bu boşluklar beklenmedik sonuçlara yol açabilir.
Yaygın Hatalar ve Çözümleri
- TypeError: input() sonucunu doğrudan sayıyla toplamak —
input("Yaş: ") + 1hata verir; doğrusuint(input("Yaş: ")) + 1‘dir. - ValueError: Sayıya çevrilemeyen bir metni int()’e vermek — Kullanıcı harf ya da boş girdi yazarsa
int()çöker; gerçek uygulamalarda bu durumtry/exceptile ele alınır (bunu ileride ayrı bir yazıda işleyeceğiz). - int() ile ondalıklı girdi almaya çalışmak — Kullanıcı “1.75” yazdıysa
int("1.75")hata verir; ondalıklı değerler içinfloat()kullanılmalıdır.
Özet
Bu yazıda input() fonksiyonuyla kullanıcıdan veri almayı öğrendiniz ve bu verinin Python’da her zaman str tipinde geldiğini gördünüz. int() ve float() ile bu metni sayıya çevirmeyi, ardından doğum yılından yaş hesaplayan basit bir uygulamada bu bilgiyi birleştirmeyi uyguladınız. Bir sonraki yazıda string (metin) işlemlerini ve f-string ile biçimlendirmeyi inceleyeceğiz.
Şimdi Sen Dene
💻 Alıştırma: Basit Bir Yaş / Doğum Yılı Hesaplayıcı Yaz
Bir Python dosyası açın ve şu programı yazın:
- Kullanıcının adını
input()ile alın (isim). - Kullanıcının doğum yılını
input()ile alıpint()ile sayıya çevirin (dogum_yili). simdiki_yil = 2026değişkenini tanımlayın.- Yaşı hesaplayın:
yas = simdiki_yil - dogum_yili. - Sonucu şu şekilde ekrana yazdırın:
"Merhaba Ayşe! Bu yıl 24 yaşına giriyorsun."(kendi isim ve yaş değerlerinizle).
Zorlu ek görev: Kullanıcıdan ayrıca boyunu metre cinsinden (float olarak) alın ve “Boyun: 1.75 metre” gibi bir cümle daha ekleyin.
Kendini Test Et: Doğru mu, Yanlış mı?
Aşağıdaki ifadelerin doğru mu yoksa yanlış mı olduğunu önce kendi kendinize karar verin, sonra cevabı görmek için üzerine tıklayın.
Soru 1: input() fonksiyonu kullanıcının yazdığı veriyi otomatik olarak sayıya çevirir.
Cevap: Yanlış — input() her zaman bir str (metin) döndürür, kullanıcı sadece rakam yazmış olsa bile. Sayıya çevirmek için int() veya float() kullanmanız gerekir.
Soru 2: yas = input("Yaşınız: ") satırından sonra yas + 1 hatasız çalışır.
Cevap: Yanlış — yas bir str‘dir; bir str ile bir int‘i doğrudan toplamaya çalışmak TypeError verir. Önce int(yas) ile dönüştürmek gerekir.
Soru 3: int(input("Sayı: ")) ifadesinde kullanıcı harflerden oluşan bir şey (örneğin “abc”) girerse, program ValueError hatasıyla çöker.
Cevap: Doğru — int(), sayıya çevrilemeyen bir metin aldığında ValueError fırlatır. Gerçek uygulamalarda bu, try/except ile yakalanıp kullanıcıya nazikçe bildirilir.
Soru 4: input() fonksiyonuna bir prompt (yönlendirme) mesajı vermek zorunludur; mesajsız kullanılamaz.
Cevap: Yanlış — Prompt mesajı isteğe bağlıdır; input() parantezi boş bırakılarak da kullanılabilir. Ancak kullanıcıya ne yazması gerektiğini söylemek her zaman iyi bir pratiktir.
Soru 5: float(input()) ifadesi, kullanıcı ister “5” ister “5.5” yazsın, her ikisini de hatasız işleyebilir.
Cevap: Doğru — float() hem tam sayı görünümlü (“5”) hem ondalıklı (“5.5”) metinleri sorunsuz bir float değerine çevirebilir; sorun yalnızca sayı olmayan bir metin girildiğinde ortaya çıkar.



