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? 
Bilgisayar matematiği gayet iyi biliyor, sadece ona sayı değil yazı vermişsin. 
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! 