sayıların okunuşu ile ilgili bir program yazmak istiyorum basamak sayısı arttıkça sıkıntı artıyor en
azından milyarlara kadar gitmeli
Aşağıdaki kodda 100 bin e kadar olan sayılar var ama sıkıntı şu şu haliyle sadece 5 basamaklıları okuyor.
eğer if blokları kurup str(sayının) uzunluğuna göre daha küçük basamaklı sayılarıda okutabilirim ama gereksiz kod kalabalığı olcağını, daha pratik bir yolunun olabilceğini düşünüyorum.
Birde basamak sayısı artıkça daha uygun olabilecek bir yöntem bulabilirmiyiz fikirlerinizi bekliyorum
birler = ["", "Bir", "İki", "Üç", "Dört", "Beş", "Altı", "Yedi", "Sekiz", "Dokuz"]
onlar = ["", "On", "Yirmi", "Otuz", "Kırk", "Elli", "Altmış", "Yetmiş", "Seksen", "Doksan"]
yuzler=["", "yüz", "İkiyüz", "Üçyüz", "Dörtyüz", "Beşyüz", "Altıyüz", "Yediyüz", "Sekizyüz", "Dokuzyüz"]
binler=["", "Bin", "İkiBin", "ÜçBin", "DörtBin", "BeşBin", "AltıBin", "YediBin", "SekizBin", "DokuzBin"]
onbinler=["", "Onbin", "yirmibin", "otuzbin", "kırkbin", "ellibin", "altmışbin", "Yetmişbin", "Seksenbin", "Doksanbin"]
def okunus(sayı):
str(sayı)
birinci = int(str(sayı)[4])
ikinci = int(str(sayı)[3])
ucuncu=int(str(sayı)[2])
dorduncu=int(str(sayı)[1])
besinci=int(str(sayı)[0])
if dorduncu==0:
return onbinler[besinci]+binler[dorduncu]+yuzler[ucuncu]+onlar[ikinci] +birler[birinci]
else:
return onlar[besinci]+binler[dorduncu]+yuzler[ucuncu]+onlar[ikinci] +birler[birinci]
sayı = int(input("Sayı:"))
print(okunus(sayı))