وبلاگ محسن

۲ مطلب در مهر ۱۳۹۲ ثبت شده است

یادش به خیر...

| سه شنبه, ۲۳ مهر ۱۳۹۲، ۱۰:۰۴ ق.ظ

نمی دونم امروز چی شد که یه دفه یاد جوونیام افتادم.
اون موقعی که تازه وارده دنیای اسرارآمیز و پر پیج و خم لینوکس شده بودم و هر روز چیزای شگفت انگیز یاد می گرفتم.
برای همین رفتم دنبال اولین توزیعی که نصب کردم و دیسکشو که یه جای دنج تاریک برای خودش خوابیده بودو پیدا کردمو تو درایو گذاشتم و  بقیه شم حتما می تونید حدس بزنید. بوت شدن اوبونتو ۱۰.۱۰ در حالت لایو همان و بوت شدن خاطرات چهار سال پیش من همان.
اون موقع اوبونتو با الآن خیلی فرق داشت.
اون موقع اوبنتو یه توزیع گرم و مهربون بود که تازه گل کرده بو.د. اون زمان همه اوبونتو رو دوست داشتن و استفاده ازش به معنای خز بودن و تازه واردی نبود.
یادش به خیر. چقدر این گنو ۲ با اون ظاهر سادش دلنشین و کار راه انداز بود. به نظر م  هنوز هیچ کدوم از این میزکارای مدرن و قشنگ نتونستن جای گنوم ۲ رو پر کنن.
یادش به خیر، اون موقع adsl نداشتمو برای یاد گرفتن هرچیز کوچیکی مجبور بودم دائم بین ویندوز و اوبونتو سوویچ کنم.
یادش به خیر، چقدر ذوق می کردم و قتی می دیدم gedit کد ها رو رنگی می کنه.
یادش به خیر،‌ چه قدر کیف کردم وقتی دیدم می تون به قسم about برنامه ها برم و ببینم هر نرم افزارو کیا نوشتن.
یادش به خیر دانلود سورس کد نرم افزار های مختلف سر در نیاوردن ازشون.
یادش به خیر پوشه ی جدید درست کردن با خط فرمان.
و هزاران یادش به خیر دیگه
ای کاش می شد دوباره اون گرمای عجیب و لذت بخشی که آدم از کار کردن با لینوکس به دست میاوردو دوباره تجربه کرد.
مطمئن نیستم اما احتمالا کاربرای لینوکس هم اون موقع خیلی صمیمی تر از الآن بودن.
 


 
راستی یه سوال
چرا هر چی جلو تر میریم می بینیم که قدیما اوضاع بهتر بود؟

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

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

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

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


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