input ve print: Kullanıcıyla Konuşan Program (Python Dersi 4)

Şimdiye kadar yazdığımız programlar hep tek yönlüydü: biz değerleri koda yazıyorduk, program sonucu ekrana basıyordu. Bu derste programla konuşmayı öğreniyoruz. input ile kullanıcıdan bilgi alacağız, print ile ona cevap vereceğiz. Dersin sonunda adını ve notlarını soran, sonra ortalamasını hesaplayıp söyleyen küçük bir program yazmış olacağız.

Bu dersin kodları ve alıştırmaları hazır bir not defterinde: Colab’da Aç. Not defterini aç, Drive’ına kopyasını kaydet ve hücreleri sırayla Shift + Enter ile çalıştır.

print: ekrana yazmak

print‘i ilk dersten beri kullanıyoruz. Ama bilmediğin birkaç özelliği var.

Birden fazla değer yazmak. Virgülle ayırdığın değerleri print aralarına boşluk koyarak yazar:

print("Merhaba", "dünya") # Merhaba dünya

Aradaki boşluğu değiştirmek: sep. sep (separator, ayırıcı) değerlerin arasına ne konacağını belirler:

print("Merhaba", "dünya", sep="-") # Merhaba-dünya
print("2026", "10", "27", sep="/") # 2026/10/27

Satır sonunu değiştirmek: end. print her çağrıdan sonra yeni bir satıra geçer. end ile satır sonuna ne yazılacağını sen seçersin:

print("Yükleniyor", end="... ")
print("tamam")
# Yükleniyor... tamam

İki print aynı satıra yazdı, çünkü ilkinin sonuna yeni satır yerine "... " koyduk. Boş bir print() ise sadece bir boş satır bırakır.

Değişkeni metnin içine yerleştirmek: f-string. Başına f koyduğun bir metinde süslü parantez içine yazdığın değişken, değeriyle yer değiştirir:

isim = "Ayşe"
print(f"Merhaba {isim}, hoş geldin!") # Merhaba Ayşe, hoş geldin!

f-string’in basamak sayısı, yüzde ve hizalama gibi özelliklerini ayrı bir kod kartında anlattım. Bu derste en basit hâli yeterli.

input: kullanıcıdan bilgi almak

input programı durdurur, kullanıcının bir şey yazıp Enter’a basmasını bekler ve yazılanı sana verir. Parantez içine yazdığın metin, kullanıcıya gösterilen sorudur:

isim = input("Adın ne? ")
print("Merhaba", isim)

Colab’da bu hücreyi çalıştırınca hücrenin altında bir yazı kutusu açılır. Adını yazıp Enter’a basınca program devam eder:

Adın ne? Ayşe
Merhaba Ayşe

Sorunun sonuna bir boşluk bırakmayı unutma. input("Adın ne?") yazarsan kullanıcının cevabı soru işaretine yapışır: Adın ne?Ayşe.

input her zaman metin verir

Dersin en önemli kısmı bu. Kullanıcı bir sayı yazsa bile input onu metin (str) olarak verir:

dogum = input("Doğum yılın? ") # kullanıcı 2000 yazdı
print(type(dogum)) # <class 'str'>

Üçüncü derste gördüğümüz gibi "2000" ile 2000 aynı şey değil. Biri metin, biri sayı. Metinle hesap yapamazsın; 2026 - dogum yazarsan Python TypeError verir. Çözüm, o derste öğrendiğimiz tip dönüştürme:

dogum = input("Doğum yılın? ")
yas = 2026 - int(dogum)
print(f"Bu yıl {yas} yaşına giriyorsun.")
# Doğum yılın? 2000
# Bu yıl 26 yaşına giriyorsun.

Tam sayı bekliyorsan int(), virgüllü sayı olabilecekse float() kullan. Not, boy, fiyat gibi değerler için float() daha güvenli.

Mini program: not ortalaması hesaplayıcı

Şimdi öğrendiklerimizi birleştirelim. Program önce adı soracak, sonra üç sınav notunu alacak ve ortalamayı tek basamakla yazacak:

isim = input("Adın: ")
not1 = float(input("1. sınav: ")) # input'un sonucunu hemen float'a çeviriyoruz
not2 = float(input("2. sınav: "))
not3 = float(input("3. sınav: "))
ortalama = (not1 + not2 + not3) / 3
print(f"{isim}, ortalaman {ortalama:.1f}")

Örnek çalışma:

Adın: Ayşe
1. sınav: 70
2. sınav: 85
3. sınav: 90
Ayşe, ortalaman 81.7

float(input(...)) iki fonksiyonu iç içe kullanıyor. Python içten dışa doğru çalışır: önce input metni alır, sonra float onu sayıya çevirir. {ortalama:.1f} ise “virgülden sonra tek basamak göster” demek.

Sık karşılaşılan hatalar

Sayı beklerken harf gelirse. Kullanıcı not yerine abc yazarsa int() ya da float() onu çeviremez:

ValueError: invalid literal for int() with base 10: 'abc'

Hata mesajının sonunda Python, çeviremediği değeri tırnak içinde gösteriyor. Bu hatayı programın çökmeden yakalamasını ilerideki derslerde try ve except ile öğreneceğiz. Şimdilik doğru türde bir değer girmek yeterli.

Virgüllü sayıyı virgülle yazmak. Türkçede 85,5 yazarız ama Python ondalık ayırıcı olarak nokta bekler. float("85,5") da ValueError verir; kullanıcının 85.5 yazması gerekir.

Metni sayıya çevirmeyi unutmak. input‘tan gelen iki değeri toplarsan sayıları değil metinleri yan yana eklersin: "70" + "85" sonucu "7085" olur. Program hata vermez ama yanlış sonuç üretir; bu yüzden hatalı bir mesajdan bile daha sinsidir.

Bu derste öğrendiklerin

  • print virgülle ayrılan değerleri yazar; sep aralarına, end sonuna ne konacağını belirler.
  • f-string ile değişkeni metnin içine yerleştirirsin: f"Merhaba {isim}".
  • input kullanıcıya soru sorar ve cevabı her zaman metin olarak verir.
  • Hesap yapacaksan int() ya da float() ile çevirirsin.

Alıştırmalar

Her birini önce kendin dene, sonra cevaplara bak.

  1. print ile tek satırda Python | kolay | eğlenceli yazdır. İpucu: üç ayrı değer ve sep.
  2. Kullanıcıya en sevdiği diziyi sor, cevabı En sevdiğin dizi: ... şeklinde yazdır.
  3. Kullanıcıdan Celsius cinsinden bir sıcaklık al, Fahrenheit’a çevir ve yazdır. Formül: F = C × 9 / 5 + 32.
  4. Aşağıdaki program neden 7085 yazıyor? Düzelt.
a = input("1. sayı: ") # 70
b = input("2. sayı: ") # 85
print(a + b)

Cevaplar

  1. print("Python", "kolay", "eğlenceli", sep=" | ")
  2. dizi = input("En sevdiğin dizi? ") ve ardından print(f"En sevdiğin dizi: {dizi}")
  3. c = float(input("Sıcaklık (°C): ")), f = c * 9 / 5 + 32, print(f"{c} °C = {f} °F"). Dikkat: değişkene f adı verdiğimizde f-string’in başındaki f ile karışmaz; biri değişken, diğeri metnin ön eki. Yine de okumayı kolaylaştırmak için fahrenheit gibi bir ad seçmek daha iyi.
  4. input metin verdiği için a + b iki metni yan yana ekledi. Düzeltme: print(int(a) + int(b)) sonucu 155 olur.

Sıradaki ders

Bir sonraki derste programımıza karar vermeyi öğreteceğiz: if, elif ve else ile “ortalama 50’nin üzerindeyse geçtin, değilse kaldın” diyen bir program yazacağız.


Hatice Özbolat | Teknoloji ve AI Rehberi sitesinden daha fazla şey keşfedin

Son gönderilerin e-postanıza gönderilmesi için abone olun.

Comments

Bir yanıt yazın