Bir Python programında kullanıcıdan alınan yaş değerine göre "reşit" veya "reşit değil" mesajı yazdırmak isteyen bir sosyolog, aşağıdaki kodu yazıyor. Ancak kod her durumda "reşit" yazdırıyor. Bu sorunu çözmek için hangi değişiklik yapılmalıdır?
yaş = input("Yaşınızı giriniz: ")
if yaş > 18:
print("reşit")
else:
print("reşit değil")
Merhaba öğrenciler, bu soruyu adım adım inceleyerek, Python'daki veri tiplerinin önemini ve karşılaştırma işlemlerini nasıl doğru yapabileceğimizi öğreneceğiz.
Sorun Nedir?
Kodun her durumda "reşit" yazdırmasının temel nedeni, input() fonksiyonunun kullanıcıdan aldığı değeri metin (string) olarak algılamasıdır. Bu durumda, sayısal bir karşılaştırma yapmak yerine metinsel bir karşılaştırma yapılıyor ve "18" metni ile karşılaştırıldığında, çoğu durumda "büyük" olarak değerlendiriliyor.
Çözüm Adımları:
input() fonksiyonundan gelen değeri sayısal bir değere (integer) dönüştürmeliyiz. Bu, int() fonksiyonu kullanılarak yapılabilir.
yaş değişkenine atanan değeri int(input("Yaşınızı giriniz: ")) şeklinde değiştirerek, kullanıcının girdiği değeri doğrudan integer'a dönüştürelim.
if yaş > 18: ifadesi, artık sayısal bir karşılaştırma yapacak. Eğer yaş değişkeninin değeri 18'den büyükse "reşit", değilse "reşit değil" yazdırılacak.
Doğru Kod:
İşte düzeltilmiş kod:
yaş = int(input("Yaşınızı giriniz: "))
if yaş > 18:
print("reşit")
else:
print("reşit değil")
Diğer Seçeneklerin Neden Yanlış Olduğu:
print fonksiyonlarında bir hata yok, bu yüzden değiştirilmeleri sorunu çözmez.else kısmının kaldırılması, 18'den küçük yaşlarda hiçbir şey yazdırılmamasına neden olur, bu da istenen davranış değildir.Cevap A seçeneğidir.