İnput fonksiyonu ve int olarak almak veya integera dönüştürmek

Öncelikle Merhaba,

Gereksiz bilgi paylaşmış olabilirim şimdiden kusura bakmayın
Aynı veriyi farklı yollarla yazmaya çalıştığım için uzatıyorum.

input fonksiyonu kullanıcıdan default olarak string olarak veri alıyor. bu sebeple kullanıcıdan sayı girilmesini istediğimiz zaman int olarak istiyoruz, veya sonrasında integer hale getiriyoruz.

a=int(input("a:"))
b=int(input("b:"))
c=int(input("c:"))
print("Toplam",a+b+c)

yukarıdaki kodun mantığı; kullanıcıdan veriyi almadan veriyi integer olarak sisteme tanıtıyoruz aslında

a=input("a:")
b=input("b:")
c=input("c:")
print("Toplam",int(a)+int(b)+int(c))

yukarıdaki kodun mantığı ise; kullanıcı veriyi string olarak giriyor, sonrasında stringi integer hale getiriyoruz.

Bunları baz alarak aşağıdaki kodum integera çevirmiyor.
string olarak aldığımız verileri tek tek nasıl integer yapabilirim ?
farklı bir değişken veya eşitlik mi tanımlamam gerekiyor ?

Yukarıdaki son örnekteki gibi sadece print fonksiyonu içerisinde print("Toplam",int(a)+int(b)+int(c)) nasıl tanımlama yapmış oluyorum ?

a=input("a:")
b=input("b:")
c=input("c:")
int(a)
int(b)
int(c)
print("Toplam",(a+b+c))

bilgilendirme için şimdiden teşekkür ederim.

Bu kısımlar sadece int tipindeki değeri geri döndürüyor,ama asıl nesneyi değiştirmiyor.

değer = "1"

type(int(değer)) #=> int tipinde

type(değer) #=> str tipinde

Eğer değişkene etki etmesini istiyorsanız şunu deneyebilirsiniz:

değer = "1"

değer = int(değer)
5 Beğeni

Teşekkürler.

int(a)
int(b)
int(c)

şeklinde geri döndürmek peki tam olarak ne işimize yaramış oluyor ?
yani yalnızca bu yapıyı nerede ne amaçla kullanabiliriz, tam olarak

Aslında int() fonsiyonunun yaptığı tam olarak nesnenin int tipindeki değerini return etmek.

def int(val):
    return "Bu kısmın ne yaptığını bilmiyorum ama argüman olarak verilen değerin tipini burda değiştiriyor"

1 Beğeni

Bunu bu şekilde tek başına herhangi bir şeye atamadan kullanmak bir işe yaramıyor diyebiliriz; o satır işleniyor ve geçiliyor, gözle görülür herhangi bir etkisi olmuyor (hata vermiyorsa tabii!). Onun yerine 4 veya "evet" yazmak gibi. Bir değer geri döndürüyor (hata vermezse), ama siz onu karşılamadığınız için (mesela sayi_a = int(a) gibi) boşa gitmiş oluyor.

Ama belki try/except ile kullanılabilir bir değerin tamsayıya çevrilebilir olup olmadığına kısa yoldan bakmak adına:

try:
    int(a)
except ValueError:
    print(f"{a} tam sayıya çevrilemiyor")
else:
    print(f"{a} tam sayı gibi duruyor")

Bunun yaptığı, int(a)'yı çalıştırdıktan sonra hata yükselip yükselmemesine göre iki duruma bakmak. Bir nevi if-else’in hata meydana geldiğinde programı sonlandırmayabilen hali oluyor. Ama eğer programınız except kısmına girmeye daha fazla yatkınsa, biraz pahalı bir işlem olabiliyor. Ama yine de okunabilirliği (veya başka şeyleri) artırdığı yerlerde ve/veya mikro optimizasyon durumunda bu yapıdan kaçınmamak gerekir. Ayrıyeten bakınız https://stackoverflow.com/questions/11360858/what-is-the-eafp-principle-in-python.

4 Beğeni