Bir cümlelik özet
input() fonksiyonu, programın çalışırken kullanıcıya bir soru sormasını ve klavyeden yazılan cevabı bir değişkende saklamasını sağlar.
Neden önemli?
Şimdiye kadar yazdığımız programlar hep aynı değerlerle çalıştı. Sayıları kodun içine biz yazdık, program da her seferinde aynı sonucu verdi. Ama gerçek programlar böyle değildir: bir hesap makinesi hangi sayıları toplayacağını, bir oyun oyuncunun adını, bir robot arayüzü hangi komutu vereceğini kullanıcıdan öğrenir.
Kullanıcıdan veri almayı öğrendiğimizde programımız artık bizimle konuşmaya başlar. Aynı kod, her çalıştırıldığında farklı bir cevaba göre farklı bir sonuç üretebilir. Bu, programı gerçekten işe yarar hâle getiren büyük bir adımdır.
input() ile soru sormak
Python'da kullanıcıdan bilgi istemek için input() fonksiyonunu kullanırız. Parantezin içine bir soru veya açıklama yazarız; bu metin ekranda görünür ve kullanıcıyı yönlendirir.
isim = input("Adın ne? ")
print("Merhaba " + isim)
Program çalışınca ekranda Adın ne? yazısı belirir ve durup bekler. Kullanıcı bir şey yazıp Enter'a bastığında, yazdığı metin isim değişkenine konur. Sonraki satır da onu selamlar.
Burada input() iki iş yapar: önce parantezteki mesajı gösterir, sonra kullanıcının cevabını bize geri verir. Bu cevabı bir değişkende saklamazsak kaybolur, o yüzden her zaman isim = input(...) gibi bir kutuya koyarız.
input() her zaman metin döndürür
Burada çok önemli bir kural var: input() sana ne yazılırsa yazılsın, cevabı her zaman metin (string) olarak verir. Kullanıcı 5 yazsa bile Python bunu 5 sayısı olarak değil, "5" metni olarak alır.
Bu neden önemli? Çünkü metinlerle sayı işlemi yapamayız. Şu koda bakalım:
sayi = input("Bir sayı gir: ")
print(sayi + 1) # HATA
Kullanıcı 5 yazsa bile bu satır çalışmaz ve hata verir. Çünkü sayi aslında "5" metnidir; Python bir metne 1 sayısını nasıl ekleyeceğini bilemez. Metin ile sayıyı toplamaya çalışmak, "elma + 1" demeye benzer.
Metni sayıya çevirmek
Kullanıcının girdiği metni sayıya dönüştürmek için int() fonksiyonunu kullanırız. int, İngilizce "integer" yani "tam sayı" kelimesinden gelir.
sayi = int(input("Bir sayı gir: "))
print(sayi + 1)
Bu satırı içten dışa doğru okuruz:
input("Bir sayı gir: ")kullanıcıdan bir metin alır (örneğin"5").int(...)bu metni sayıya çevirir (5).sayi = ...sonucusayideğişkenine koyar.
Artık sayi gerçek bir sayıdır, onunla işlem yapabiliriz. Kullanıcı 5 yazarsa program 6 yazar.
Küçük not:int()yalnızca tam sayılar için kullanılır. Kullanıcıdan ondalıklı bir sayı (örneğin3.5) alacaksanfloat()fonksiyonunu kullanırsın. Bu derste tam sayılarla çalışacağız.
f-string ile düzgün çıktı
Sonucu ekrana yazarken metinle sayıyı bir arada göstermek isteriz. Bunu yapmanın en temiz yolu f-string'dir. Metnin başına f harfi koyar, değişkenleri de süslü parantez {} içine yazarız.
isim = input("Adın ne? ")
yas = int(input("Kaç yaşındasın? "))
print(f"Merhaba {isim}, {yas} yaşındasın.")
Kullanıcı Ada ve 12 girerse ekranda şu görünür:
Merhaba Ada, 12 yaşındasın.
f-string sayesinde metinleri + ile birleştirmek zorunda kalmayız ve sayıları metne çevirmekle uğraşmayız; Python süslü parantezlerin içindeki değeri otomatik olarak yerleştirir.
Örnek: İki sayının toplamı
Şimdi öğrendiklerimizi birleştirelim. Kullanıcıdan iki sayı alıp toplamlarını gösteren bir program yazacağız.
sayi1 = int(input("Birinci sayıyı gir: "))
sayi2 = int(input("İkinci sayıyı gir: "))
toplam = sayi1 + sayi2
print(f"{sayi1} + {sayi2} = {toplam}")
Program çalışınca sırayla iki soru sorar. Kullanıcı 7 ve 8 girerse ekranda şunu görürüz:
7 + 8 = 15
Burada üç fikir bir arada çalışıyor:
input()iki değeri kullanıcıdan alıyor.int()bu metinleri gerçek sayılara çeviriyor, böylece toplama yapılabiliyor.- f-string sonucu düzenli bir cümle hâlinde gösteriyor.
int() kullanmayı unutsaydık ne olurdu? sayi1 + sayi2 toplama değil, iki metni yan yana yapıştırma olurdu: 7 + 8 78 sonucunu verirdi. Bu, input() ile çalışırken en sık karşılaşılan tuzaktır.
Mini uygulama
Kullanıcının yaşını sorup 10 yıl sonra kaç yaşında olacağını söyleyen bir program yaz.
int(input(...))ile kullanıcıdan yaşını al veyasdeğişkenine koy.gelecek_yasadında yeni bir değişken oluştur veyas + 10değerini ver.- f-string kullanarak sonucu güzel bir cümleyle yazdır. Örneğin:
10 yıl sonra 22 yaşında olacaksın.
Çalıştıktan sonra şunu dene: int() fonksiyonunu kaldır ve programı tekrar çalıştır. Hangi hatayı aldığını gözlemle. Bu, input()'un neden metin döndürdüğünü unutmamana yardımcı olur.
Uygulama laboratuvarı: Kullanıcıdan Veri Alma
Kullanıcıdan Veri Alma konusunu kalıcı hâle getirmenin en iyi yolu, kavramı küçük ve ölçülebilir bir göreve dönüştürmektir. Bu çalışmada input() ile soru sormak ile Metni sayıya çevirmek arasındaki ilişkiyi kullanarak çalışan kısa bir Python 3 programı, örnek girdiler ve beklenen çıktılar hazırlayacaksın. Amaç yalnız sonucun çalışması değil; hangi kararı neden verdiğini, neyi test ettiğini ve hangi durumda tasarımı değiştireceğini açıklayabilmektir.
Görev senaryosu
Şu senaryoyu ele al: bir dosyadaki satırları okuyup basit özet çıkaran araç. Dersin ana hedefi “input() ile veri almayı, metni sayıya çevirmeyi ve f-string ile çıktı vermeyi öğren” olduğuna göre önce problemi tek cümleyle tanımla. Ardından sistemin alacağı girdiyi, uygulayacağı işlemi ve üreteceği çıktıyı ayrı ayrı yaz. Bilmediğin bir ayrıntı varsa onu varsayım olarak işaretle; varsayımı gerçek bilgi gibi kullanma.
- Planla: Başlangıç durumunu, beklenen sonucu ve kullanacağın kavramları yaz.
- En küçük sürümü kur: Yalnız temel davranışı çalıştır; süsleme ve ek özellikleri sonraya bırak.
- Üç test hazırla: Normal bir durum, sınırda bir durum ve hatalı ya da beklenmeyen bir durum seç.
- Sonucu kaydet: Beklenen ile gerçekleşeni yan yana yaz; fark varsa olası nedeni belirt.
- Tek değişiklik yap: Aynı anda birçok şeyi değiştirmek yerine bir kararı düzeltip testi yeniden çalıştır.
Başarı ölçütleri
- Kod Python 3 sözdizimiyle çalışıyor mu?
- Değişken ve fonksiyon adları amacı açıklıyor mu?
- Boş, yanlış türde ve sınırdaki girdiler denendi mi?
- Hata mesajı kullanıcıya neyi düzeltmesi gerektiğini söylüyor mu?
- Aynı kod gereksiz tekrar olmadan yeniden kullanılabiliyor mu?
“Kullanıcıdan Veri Alma” çalışmasını bitirdiğinde ürünü bir arkadaşına yalnız bölüm başlıklarıyla anlat. Arkadaşın bir dosyadaki satırları okuyup basit özet çıkaran araç senaryosundaki adımları ve karar nedenlerini takip edebiliyorsa anlatım yeterince açıktır. Anlaşılmayan noktayı daha fazla terim ekleyerek değil, input() ile soru sormak ve Metni sayıya çevirmek ilişkisini daha küçük adımlara bölerek düzelt.
Sık yapılan hatalar
int() kullanmayı unutmak
En sık yapılan hata budur. input() her zaman metin verdiği için, sayı işlemi yapmadan önce int() ile çevirmezsen ya hata alırsın ya da beklenmedik bir sonuç (metinlerin yapışması) görürsün.
sayi = input("Sayı: ") # sayi bir metin
sayi = int(input("Sayı: ")) # doğrusu: sayı gerçekten sayı
Parantezleri yanlış kapatmak
int(input("...")) yazarken iki açılan parantez var, o yüzden iki de kapanan parantez olmalı. Biri eksik kalırsa Python SyntaxError verir. Kodu içten dışa doğru saymak yardımcı olur.
Sayı yerine harf girildiğinde
int() sadece sayı görünümündeki metinleri çevirebilir. Kullanıcı 5 yerine beş yazarsa program hata verir. Şimdilik kullanıcının doğru tür veri gireceğini varsayıyoruz; ileride bu durumları nasıl kontrol edeceğimizi öğreneceğiz.
Cevabı bir değişkende saklamamak
input("Adın ne? ") tek başına yazılırsa cevap alınır ama hemen kaybolur. Cevabı sonradan kullanmak istiyorsan mutlaka isim = input(...) gibi bir değişkene koymalısın.
Güvenlik notu
Kullanıcıdan veri alan programlar yazarken alışkanlık hâline getirmen gereken bir kural var: kişisel ve özel bilgileri sorma ve isteme. Alıştırma programların adres, telefon numarası, okul adı, şifre veya aile bilgileri gibi özel şeyleri istememeli. Öğrenmek için ad, yaş, en sevdiğin renk veya bir oyun skoru gibi zararsız bilgiler yeterlidir.
Ayrıca yalnızca kendi yazdığın veya güvendiğin kodu çalıştır. İnternette bulduğun ve ne yaptığını anlamadığın bir programı, bir yetişkine sormadan çalıştırma.
Ders özeti
input(), program çalışırken kullanıcıya soru sorup cevabı almamızı sağlar.input()cevabı her zaman metin (string) olarak döndürür, kullanıcı sayı yazsa bile.- Metni sayıya çevirmek için
int()fonksiyonunu kullanırız:int(input(...)). - f-string (
f"... {degisken} ...") metinle değişkenleri temiz bir şekilde bir arada gösterir. - Kullanıcıdan asla adres, şifre gibi kişisel ve özel bilgiler istemeyiz.
Kontrol soruları
input()fonksiyonu ne işe yarar ve cevabı hangi türde döndürür?sayi = input("Sayı: ")yazdıktan sonrasayi + 1neden hata verir?int(input("Yaş: "))satırını içten dışa doğru adım adım açıkla.- Kullanıcı
4ve5girerse,print(sayi1 + sayi2)satırıint()kullanılmadan ne yazdırır? - Bir alıştırma programında kullanıcıdan istememen gereken bilgilere iki örnek ver.
Cevaplar
input(), program çalışırken ekranda bir mesaj gösterir ve kullanıcının klavyeden yazıp Enter'a bastığı cevabı alır. Bu cevabı her zaman metin (string) olarak döndürür.- Çünkü
input()cevabı metin olarak verir;sayiaslında"4"gibi bir metindir. Python bir metne sayı ekleyemez, bu yüzdensayi + 1hata verir. Önceint()ile sayıya çevirmek gerekir. - Önce
input("Yaş: ")kullanıcıdan bir metin alır. Sonraint(...)bu metni tam sayıya çevirir. En dıştaki atama da bu sayıyı bir değişkene koyar. 45yazdırır.int()olmadan her iki değer de metindir;+işareti iki metni toplamaz, yan yana yapıştırır.- Örneğin: ev adresi, telefon numarası, şifre, okul adı, aile bilgileri. (İkisini yazması yeterli.)
Kaynak ve doğrulama notu
“Kullanıcıdan Veri Alma” dersi için doğrulama odağı input() ile soru sormak ile Metni sayıya çevirmek arasındaki ilişkinin örnekler üzerinde tutarlı çalışmasıdır. Kod örnekleri Python 3 sözdizimi esas alınarak hazırlanmıştır. Çalıştırma ortamına göre küçük farklar görülebileceği için örnekler önce güvenli bir çevrim içi editörde veya yerel geliştirme ortamında denenmelidir.
Sonraki ders
Koşullar: if, elif ve else ile programın kullanıcının cevabına göre farklı kararlar vermesini öğreniyoruz.