5: Input

Son dersimizde kullanıcı inputlarından bahsetmiş, ama kullanıcı inputunun nasıl elde edildiğini açıklamamıştık. Python'da kullanıcı tek seferde tek satırlık giriş yapabilir. Bunu sağlamak için kullandığımız  input() fonksiyonuyla kullanıcıdan bir değer girmesini isteriz.  input() fonksiyonu hiç argüman almaz ve kullanıcın girdiği input str tipinde çıktı verir.

Bu websayfasında tüm girdiler program çalıştırılmadan önce belirtilmelidir. Python interaktif olarak evde çalıştırılırsa input() fonksiyonu programı durdurur ve kullanıcının bir satır tekst girmesini bekler.
Ayrıca, interaktif çalışırken, input() herhangi bir stringi input olarak kabul eder ve kullanıcının komutu olarak yorumlar. Örn.,

sayı = input("0 ve 100 arası bir sayı girin. ")

Bir input (kullanıcı girdisi) elde etmek için input() fonksiyonunun nasıl kullanıldığını bir örnekle görelim. Düzenleyici inputu program için otomatik olarak belirtecek.

Example
Bir satır metnin yankısı

Bir sonraki örneğin gösterdikleri:

  • input() fonksiyonunu üstüste çağırarak çok satırlı input çıktısı alabiliriz.  İlk input() fonksiyonuyla ilk satırı, ikincisiyle ikinci satırı vd. alırız.
  • input() fonksiyonu ile alınan string, int veya float tipine dönüştürülebilir. (4. derste yapmıştık.)
  • İkinci test durumunda, inputun üçüncü satırı okunmadı çünkü input() sadece iki kez çağrıldı.

Example
 
You may enter input for the program in the box below.

Buradan itibaren alıştırmaların çoğunda test için input girme şansınız olacak. Bir alıştırma yapalım: Aşağıdaki Input girin düğmesine basın. Input metin kutusunu boş bırakın. Sonra, Testi çalıştır  düğmesine basın. Böyle bir hata alırsınız

EOFError: EOF when reading a line
EOF kısaltması End Of File (dosyanın sonu) kelimelerinin ilk harflerinden oluşuyor. Bu mesajdan programın  input() fonksiyonunu çalıştırdığını ama okunacak bir input bulamadığını anlıyoruz.

  • Derslerimizde input genellikle düzenleyici tarafından otomatik veriliyor, o hâlde bu hata mesajı programınızın input() fonksiyonunu çok fazla kere çağırdığı, programın bittiği ve düzenleyicinin inputunun sonuna gelindiği  anlamına geliyor.
  • Bu alıştırmada ortaya çıkan hata, input kullanıcı tarafından sağlanıyordu ve siz input girmemeyi seçtiniz, böylece  input() fonksiyonunun ilk kez çağrılması bile fazla oldu.

Sonraki alıştırmada çalışmayan programı çalışacak hâle getirmek için hataları ayıklamanız (debug) gerekecek. Buradaki hata (bug), bir yazım hatası değil, burada bir mantık hatası (logical bug) var: program yapması gereken işi yapabilecek şekilde tasarlanmamış, yani sizin onu biraz tekrar dizayn etmeniz gerekiyor.

Coding Exercise: Yankı
Bir program yazın, inputun bir satırını okusun ve aynı satırı iki kez yazdırsın. Mesela, eğer inputa "Yankı" kelimesi girildiyse çıktı şöyle olmalı:

Yankı
Yankı
Aşağıdaki çözüm hatalı, bunu düzeltelim. (Örnek çözümün tamamını silerek en baştan kendiniz de yazabilirsiniz.)  İpucu
You may enter input for the program in the box below.

Bir sonraki derse geçebiliriz, konumuz if (eğer) ifadeleri olacak.