وبلاگ محسن

وبلاگ محسن



ایده برنامه نویسی از سایت اوبونتو

| دوشنبه, ۲۲ مهر ۱۳۹۲، ۰۸:۵۷ ق.ظ

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

همون طور می بینید ساز و کار برنامه به این صورته که یه عدد از وزودی گرفته میشه و به تابعی که کارش شمارش ارقامه برده میشه. و بعد با توجه به تعداد ارقام و خود عدد به  دیکشنری مناسب عودت داده میشه و معادل حرفیش بدست میاد.


ضمنا اگر برنامه نویس حرفه ایی هستید لطفا به من بد و بیراه نگید. ما هنوز تازه کاریم ;-)

نظرات  (۰)

هیچ نظری هنوز ثبت نشده است

ارسال نظر

ارسال نظر آزاد است، اما اگر قبلا در بیان ثبت نام کرده اید می توانید ابتدا وارد شوید.
شما میتوانید از این تگهای html استفاده کنید:
<b> یا <strong>، <em> یا <i>، <u>، <strike> یا <s>، <sup>، <sub>، <blockquote>، <code>، <pre>، <hr>، <br>، <p>، <a href="" title="">، <span style="">، <div align="">
تجدید کد امنیتی