input() ile aldığım iki sayıyı toplayınca 5 + 3 = 53 çıkıyor 🤔

Selam, basit bir hesap makinesi yapmaya çalışıyorum:

a = input("Birinci sayı: ")
b = input("İkinci sayı: ")
print("Toplam:", a + b)

5 ve 3 yazınca sonuç 8 yerine 53 çıkıyor. Çıkarma yapınca da TypeError: unsupported operand type(s) for -: 'str' and 'str' diye hata veriyor. Bilgisayar matematik bilmiyor mu yoksa ben mi bir şeyi kaçırıyorum? :grinning_face_with_smiling_eyes:

Bilgisayar matematiği gayet iyi biliyor, sadece ona sayı değil yazı vermişsin. :slightly_smiling_face:

input() klavyeden ne yazılırsa yazılsın her zaman metin (str) döndürür. Yani a aslında "5", b de "3". Python’da iki metni + ile birleştirmek onları yan yana yapıştırmak demektir: "5" + "3" → "53". Metinlerde çıkarma tanımlı olmadığı için de - hata veriyor.

Çözüm: Metni sayıya çevirmek.

a = int(input("Birinci sayı: "))     # tam sayı için int
b = int(input("İkinci sayı: "))
print("Toplam:", a + b)              # 8
print("Fark:", a - b)                # 2

Küsuratlı sayılar (ör. 2.5) da girilecekse int yerine float kullan:

a = float(input("Birinci sayı: "))

Bir de kullanıcı yanlışlıkla harf yazarsa program ValueError ile çöker. Bunu da şöyle yakalayabilirsin:

try:
    a = float(input("Birinci sayı: "))
    b = float(input("İkinci sayı: "))
    print("Toplam:", a + b)
except ValueError:
    print("Lütfen sadece sayı gir!")

Bir değişkenin türünü merak edersen print(type(a)) yazman yeter: <class 'str'> ya da <class 'int'> görürsün. Başlangıçta bu küçük kontrol çok iş görür. Kolay gelsin nöbetçi!

Haa şimdi anladım, input hep yazı veriyormuş. int() ekleyince 8 çıktı, try/except’i de ekledim, harf yazınca artık çökmüyor. Sağ olun! :flexed_biceps: