ایده برنامه نویسی از سایت اوبونتو
دیروز تو بخش برنامه سازی انجمن اوبونتو، یکی از کاربرا پستی زده بود راجع به اسکریپت تبدیل اعداد به حروف( مثلا۱۲ -> دوازده) به زبان 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))
همون طور می بینید ساز و کار برنامه به این صورته که یه عدد از وزودی گرفته میشه و به تابعی که کارش شمارش ارقامه برده میشه. و بعد با توجه به تعداد ارقام و خود عدد به دیکشنری مناسب عودت داده میشه و معادل حرفیش بدست میاد.
ضمنا اگر برنامه نویس حرفه ایی هستید لطفا به من بد و بیراه نگید. ما هنوز تازه کاریم ;-)