Python ile Girilen Sayının Basamak Sayısını Bulma
Bu örneğimizde, Python ile, kullanıcı tarafından girilen bir sayının kaç basamaklı olduğunu bulan örnek bir program kodlanacaktır. .
- İlk çözüm yolunda while döngüsü kullandık. Bakınız:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
sayi_gir = input("Lütfen basamak sayısını merak ettiğiniz sayıyı giriniz:") # ondalık kısmı ayır tam_kisim = int(float(sayi_gir)) # sayı negatifse pozitife çevir if tam_kisim < 0: tam_kisim = -tam_kisim sayac = 0 while tam_kisim > 0: tam_kisim = tam_kisim // 10 sayac += 1 print("Girdiğiniz sayının tam kısmının basamak sayısı:", sayac) |
Bu kod, kullanıcıdan bir sayı alır, ve bu sayının basamak sayısını hesaplar. Kodumuz, öncelikle kullanıcının girdiği sayıyı bir float’a çevirir, sonra bu float’ı bir int’e çevirir, bu da eğer kullanıcı tarafında ondalıklı sayı girilmişse onun ondalık kısmını atmaya yarar. Daha sonra, kullanıcı tarafından girilen sayının negatif olup olmadığını kontrol eder ve eğer öyleyse, pozitife çevirir. Bu sayede, negatif sayılar da kontrol edilmiş olur. Kodu çalıştırmak için: Trinket
- İkinci çözümde ise importh math yaparak çözüme ulaşacağız. Bu sayede negatif sayılar için ekstra bir işlem yapmamız gerekmeyecek. Bakınız:
1 2 3 4 5 6 7 8 9 10 11 12 |
sayi_gir = input("Lütfen basamak sayısını merak ettiğiniz sayıyı giriniz:") # ondalık kısmı ayır tam_kisim = abs(int(float(sayi_gir))) sayac = 0 while tam_kisim > 0: tam_kisim = tam_kisim // 10 sayac += 1 print("Girdiğiniz sayının tam kısmının basamak sayısı:", sayac) |
Bu kod, kullanıcıdan bir sayı alır, ve bu sayının basamak sayısını hesaplar. Kodumuz, öncelikle kullanıcının girdiği sayıyı bir float’a çevirir, sonra bu float’ı bir int’e çevirir, bu da eğer kullanıcı tarafında ondalıklı sayı girilmişse onun ondalık kısmını atmaya yarar. Daha sonra, bu tam sayının basamaklarını sayar. Kodu çalıştırmak için: Trinket
- Üçüncü çözümde ise sayının basamak sayısını bulmak için daha basit ve güvenilir bir yol olarak sayıyı stringe dönüştürüp bunun uzunluğunu alabiliriz:
1 2 3 4 5 6 7 8 |
sayi_gir = float(input("Lütfen basamak sayısını merak ettiğiniz sayıyı giriniz:")) if sayi_gir == 0: print("0 girdiniz...") else: tam_kisim = abs(int(sayi_gir)) basamak = len(str(tam_kisim)) print("Girdiğiniz sayının tam kısmının basamak sayısı:", basamak) |
Yukarıdaki versiyonumuz, girilen sayının tam kısmının basamak sayısını hesaplar ve ekrana basar. Ondalık kısmı dikkate almaz. Negatif sayılar da dahil edilir. Kodu çalıştırmak için: Trinket
- Ve son olarak da
len()
metodunu kullanarak çözelim:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
sayi_gir = input("Lütfen basamak sayısını merak ettiğiniz sayıyı giriniz:") # Sayının ondalık kısmı var mı diye kontrol eder. if '.' in sayi_gir: tam, ondalik = sayi_gir.split('.') # Tam kısmın basamak sayısını hesaplar. if int(tam) >= 0: tam_basamak = len(tam) else: tam_basamak = len(tam) - 1 # Ondalık kısmın basamak sayısını hesaplar. ondalik_basamak = len(ondalik) print("Girilen sayının tam kısmının basamak sayısı:", tam_basamak) print("Girilen sayının ondalık kısmının basamak sayısı:", ondalik_basamak) else: if int(sayi_gir) > 0: print("Girilen sayının basamak sayısı:", len(sayi_gir)) elif int(sayi_gir) == 0: print("Girilen sayının basamak sayısı:", 1) else: print("Girilen sayının basamak sayısı:", len(sayi_gir) - 1) |
Kod, kullanıcıdan bir sayı istiyor ve girdiği sayının basamak sayısını belirliyor. Kullanıcı bir sayı girdiğinde, öncelikle sayının pozitif, negatif ya da sıfır olup olmadığı kontrol ediliyor. Eğer girilen sayı pozitifse, girdinin uzunluğu (yani karakter sayısı) doğrudan basamak sayısı olarak alınıyor. Eğer girilen sayı sıfırsa, basamak sayısının 1 olduğu belirtiliyor. Eğer girilen sayı negatifse, girdinin uzunluğundan bir çıkarılıyor (çünkü negatif işareti basamak sayısına dahil edilmiyor). Bu şekilde, girilen sayının basamak sayısı belirleniyor ve ekrana yazdırılıyor. Kodu çalıştırmak için: Trinket
İmporth math da 8 aded dokuz girdiğimde 9 adet girdiniz diyor aynı sayıdan bir kaç defa girilince basamak sayısını 1 arttırıyor sebebini anlayamadım programda hata var galiba açıklarmısınız rica etsem
Aslında bu durum kayan noktalı sayıların kesin değerlerini tam olarak temsil edememesi nedeniyle oluyor. 9999.. sayısı tam sayı diyebilirsiniz, haklısınız da ama math.log10() metodu, içine yazılan sayıyı kayan noktalı sayı yapar. Eh round() metodu da yuvarlama yaptığı için tecrübe ettiğiniz hataya yol açmakta.
Hacı anlatımda sıkıntı var
Hocam biraz daha yeşillendirsen? Eve geçince kontrol etcem