Python ile Kullanıcının Girdiği Sayıyı Metne Dönüştürme
Bu yazımızda, “Python” ile kullanıcının girdiği “0-999” arasındaki bir sayının yazıyla yazılmasını inceleyeceğiz. Bu işlemi gerçekleştirmek için basit bir algoritma kullanarak bir dizi yardımcı fonksiyon oluşturduk. Örneğin, “123” sayısını sisteme girdiğinizde “yüz yirmi üç” şeklinde bir çıktı almanız mümkün olacak. Şimdi gelin bu dönüşüm işleminin nasıl yapıldığını adım adım inceleyelim.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 |
def birler(bir): birlik = { '0': '', '1': 'bir', '2': 'iki', '3': 'üç', '4': 'dört', '5': 'beş', '6': 'altı', '7': 'yedi', '8': 'sekiz', '9': 'dokuz' } return birlik[bir] def onlar(on): onluk = { '0': '', '1': 'on', '2': 'yirmi', '3': 'otuz', '4': 'kırk', '5': 'elli', '6': 'altmış', '7': 'yetmiş', '8': 'seksen', '9': 'doksan' } return onluk[on] def yuzler_basamagi(rakam): # Eğer rakam 1 ise doğrudan "yüz" döndürülür. if rakam == '1': return 'yüz' # Eğer rakam 0 ise boş bir string döndürülür. elif rakam == '0': return '' # Diğer durumlarda, örneğin '2' için "iki yüz" döndürülür. else: return birler(rakam) + ' yüz' def sayiyi_metne_cevir(sayi): metin = "" sayi = str(sayi) # Üç basamaklı sayılar için: if len(sayi) == 3: metin += yuzler_basamagi(sayi[0]) if sayi[1] != '0': metin += " " + onlar(sayi[1]) if sayi[2] != '0': metin += " " + birler(sayi[2]) # İki basamaklı sayılar için: elif len(sayi) == 2: metin += onlar(sayi[0]) if sayi[1] != '0': metin += " " + birler(sayi[1]) else: return 'Geçersiz sayı' return metin.strip() # Kullanıcıdan bir sayı isteyip metne çevirme sayi = int(input("Lütfen bir sayı girin (0-999): ")) while not (0 <= sayi <= 999): sayi = int(input("Lütfen 0 ile 999 arasında bir sayı girin: ")) print(sayiyi_metne_cevir(sayi)) |
Yukarıdaki kodumuzda, kullanıcının girebileceği 0 ile 999 arasındaki bir sayıyı Türkçe metne dönüştürmek için birler
, onlar
ve yuzler
adında üç ana fonksiyon kullanılmıştır. Bu fonksiyonlar sırasıyla sayının birler, onlar ve yüzler basamaklarına karşılık gelen Türkçe metni döndürmektedir.
Bunu yapabilmek için {anahtar: değer}
formatı ile oluşturulan “sözlük” (dictionary) kullandık. Anahtar ve değerler arasındaki ilişki sayesinde, verilen bir anahtara hızla karşılık gelen değere erişim sağlayabildik. Ardından sayiyi_metne_cevir
fonksiyonu, girilen sayının kaç basamaklı olduğunu belirleyerek bu basamakları Türkçe metne çevirmekte ve sonuç olarak tamamını birleştirmektedir.
Kullanıcıdan alınan sayıyı kontrol etmek ve doğru aralıkta olup olmadığını belirlemek için de bir döngü içerisinde kullanıcı girdisi alınmaktadır. Bunun için while not
kullanılmıştır. Python’da while döngüsü, belirtilen koşul doğru olduğu sürece çalışmaya devam eder. Böylece kullanıcı 0 ile 999 arasında bir sayı girene kadar sürekli olarak çalışmaya eder. Kodu çalıştırmak için: Trinket