دیروز تو بخش برنامه سازی انجمن اوبونتو، یکی از کاربرا پستی زده بود راجع به اسکریپت تبدیل اعداد به حروف( مثلا۱۲ -> دوازده) به زبان php. منم اول فکر کردم این کاربر عزیز دنبال همچین سورسی می گرده، برای همین فکر نوشتنش به سرم زد (البته به زبون پایتون چون php بلد نیستم) و گفتم هم تمرینی برای خودم و هم شاید کار این بنده خدا راه بیوفته. واسه همین آستینا رو بالا زدم و شروع به نوشتنش کردم.
به آخرای برنامه رسیده بودم که دوباره سری به پست مذکور زدم و دیدم ای دل غافل؛ این رفیق ما از همون اول برنامه رو گذاشته بود تو انجمن تا اگه کسی به درد خورد استفاده کنه! و من پست رو از اول اشتباه خوندم.
اما راستش خیلی کیف داد چون الگوریتمی که برای تشخیص اعداد استفاده کردم رو جایی ندیدم و تمرین مشابهش حل نکرده بودم و خلاصه چند تا نکته بدرد بخور کشف کردم.
#!/usr/bin/python3
#######################
def num_counting(num):
c = 0
while (num >=10):
num /= 10
c+=1
return c+1
#######################
def two_numbers(num):
F = num // 10
M = num % 10
for i in range(1,10):
if i == F:
for j in range(1,10):
if j == M:
return do[i],'va',yek[j]
def three_numbers(num):
F = num // 100
for i in range(1,10):
if i == F:
return se[i],"va",two_numbers(NUM % 100)
yek = {1 : 'yek',
2 : 'do',
3 : 'se',
4 : 'chahar',
5 : 'pang',
6 : 'shesh',
7 : 'haft',
8 : 'hasht',
9 : 'noh',
}
do = { 1 : 'dah',
2 : 'bist',
3 : 'si',
4 : 'chehel',
5 : 'panjah',
6 : 'shast',
7 : 'haftad',
8 : 'hashtad',
9 : 'navad',
}
se = { 1 : 'sad',
2 : 'devist',
3 : 'sisad',
4 : 'chaharsad',
5 : 'pansad',
6 : 'sheshsad',
7 : 'haftsad',
8 : 'hashtsad',
9 : 'nohsad',
}
################
NUM = int(input("enter the number: "))
if (num_counting(NUM) == 1):
for i in range(1,10):
if i == NUM:
print(yek[i])
elif (num_counting(NUM) == 2):
print(two_numbers(NUM))
elif (num_counting(NUM) == 3):
print(three_numbers(NUM))
elif (num_counting(NUM) == 4):
F = NUM // 1000
for i in range(1,10):
if i == F:
print(yek[i],'hezar va',three_numbers(NUM % 1000))
همون طور می بینید ساز و کار برنامه به این صورته که یه عدد از وزودی گرفته میشه و به تابعی که کارش شمارش ارقامه برده میشه. و بعد با توجه به تعداد ارقام و خود عدد به دیکشنری مناسب عودت داده میشه و معادل حرفیش بدست میاد.
ضمنا اگر برنامه نویس حرفه ایی هستید لطفا به من بد و بیراه نگید. ما هنوز تازه کاریم ;-)