درود به همه
من یه مدته که دارم زبان برنامه نویسی پایتون (Python) رو یاد میگیرم. یه موضوع توی پایتون هست که با وجود محبوبیت زیاد این زبان بین نابینایان برای ماها مشکل آفرین هست و اون indentation یعنی دندانه دار کردن متن هست. منظور اینه که بعضی جاها باید کد با کمی فاصله از اول خط نوشته بشه. برای این کار از چندتا (معمولا چاهارتا) اسپیس یا یه علامت تب استفاده میشه. از اونجایی که صفحهخوانها این فاصله رو نمیخونن کار برای نابیناها سخت میشه. خصوصا وقتی کد خیلی بزرگ و شلوغ هستش. منم داشتم با این مشکل دست و پنجه نرم میکردم که یکی دو روز پیش با یه راه حل رو به رو شدم. گفتم اینجا در موردش بنویسم تا دوستایی که در زمینهی پایتون کار میکنن ازش استفاده ببرن و همینطور روی اینترنت باشه که اگه کسی سرچ کرد این پست رو پیدا کنه.
راه حل ابزاری هست که تیم گسترش دهندهی پایتون طراحی کردن و توی خود بستهی نصبی پایتون قرار دادن. این ابزار به شما این امکان رو میده که بدون رعایت indentation کد بنویسید و به جاش از یه روش دیگه که پایین توضیح میدم برای پایان دادن به یه بلاک کد استفاده کنید. این ابزار کدی رو که نوشتید تحویل میگیره و براتون به صورت اتوماتیک indentation رو اضافه میکنه.
همینطور که میدونید indentation برای مشخص کردن بلاکهای کد استفاده میشه. برای استفاده از این ابزار شما باید به جای indentation تموم شدن بلاک رو با یه کامنت خاص نشون بدید. این کامنت خاص از # end به علاوهی کلمهی کلیدی (keyword) مربوط به اون بلاک تشکیل میشه. اگه این کلمهی کلیدی def (تابع ساز) یا class (کلاس ساز) باشه باید اسم اون تابع یا کلاس رو هم بعدش بنویسید. چندتا مثال این زیر میارم:
if yourAge < 100:
print(“Thanks god! You are a human. For a moment I was wondering.”)
else:
print(“You are a v-v-v-vampire! Um… you know, everyone tells me that I have a very foul tasting blood.”)
# end if
while True:
print(“This is the song that never ends.”)
print(“It goes on and on my friends.”)
print(“Someone started singing it not knowing what it was,”)
print(“and they’ll continue singing it forever just because.”)
print(“(Then repeat back at top).”)
# end while
try:
entry = int(input())
except ValueError:
print(“The value you entered isn’t an integer.”)
# end try
class people:
def getBorn(name):
print(“%s was born.” % name)
# end def getBorn
# end class people
این ابزار همینطور میتونه کدهایی که قبلا با indentation درست نوشته شدن رو به صورت اتوماتیک کامنت گزاری کنه. مثل همون کامنتهایی که بالا گفتم. اینطوری اگه شما به عنوان یه برنامه نویس نابینا بخواید کدهایی که کس دیگهای با استایل استاندارد پایتون (یعنی با indentation) نوشته رو مطالعه یا ادیت کنید این ابزار با اضافه کردن این کامنتها کارتون رو خیلی راحتتر میکنه.
اسم این ابزار pindent.py هست. اول جایی که پایتونتون توش نصب شده رو پیدا کنید و بعد توی پوشهی tools و بعد پوشهی scripts فایل pindent.py رو پیدا و توی پوشهی کارتون پیست کنید. بعد از نوشتن کدتون به شکلی که بالا گفتم اون رو ذخیره کنید. از توی Command Prompt یا Power Shell به پوشهی کارتون برید و برای تبدیل کدتون به استایل استاندارد این خط رو وارد کنید:
pindent -r <filename>
به جای <filename> اسم فایلتون رو وارد کنید. اگه مشکلی توی کامنتگزاری نداشته باشید تبدیل انجام میشه. حالا فایل قبلیتون با همون اسم قبلی به علاوهی علامت ~ (tilda) در آخرش به عنوان backup و یه فایل جدید استاندارد شده با اسم فایلی که وارد کردید توی پوشه هستند. اگه توی کامنتگزاری اشتباه کرده باشید بهتون ارور میده و خطی رو که توش مرتکب اون خطا شدید رو بهتون نشون میده.
برای کامنتگزاری فایلی که قبلا indentation داره بعد از وارد شدن به پوشهی کار با Command Prompt یا Power Shell این خط رو وارد کنید.
pindent -d <filename>
امید که این نکتهی کوچولو مفید واقع شده باشه.
۱۸ دیدگاه دربارهٔ «راه حلی برای مشکل indentation یا دندانه دار کردن کد در پایتون برای نابینایان»
سلام آقا میثم واااای چه پستی وای من که هیچی سر در نمیارم فقط اومدم بگم که از این که به فکر همنوعان خودتون هستید خیلی خیلی تشکر خیلی خوبه که هرچی بلدید با کمال اخلاص در اختیار همه قرار میدید
ارادت دارم زیاد.
درود
ممنون از لطفتون. کاری نبود، فقط چندتا خط متن هستش. این پست قابل پیچیده به نظر میرسه چون برنامه نویسی همیشه وقتی نمیدونیدش اینطوره. من کدایی هزار برابر پیچیدهتر دیدم که خوندنشون آدم رو به سرگیجه میانداخت. تو فکر اینم که اگه به اندازهی کافی علاقهمند وجود داشته باشه یه آموزش مقدماتی پایتون بذارم. تا ببینیم. ممنون که یکی از پای ثابتهای پستای من هستید. ارادت از ماست.
اول هم شدم مدالم را فراموش نکنید
مدالم ترجمه ی یه آهنگ از خواننده ی مورد علاقه ی خودم باشه که انشا الله تو ایمیلم میبینمش خخخخ
حتما، ولی خوانندهی مورد علاقتون کیه؟ من فقط ABBA رو میدونم که مورد علاقتونه.
میثم عزیز خوشحالم که تونستی یکی از مشکلات پیشروی بچههای برنامهنویس را حل کنی. امیدوارم با توان و استعدادی که در تو سراغ داریم روز به روز بتونی گرههای بیشتری را بگشایی. پیروز و موفق باشی پسر خوب و پر تلاشم.
ممنونم عمو حسن عزیز. من که مشکل رو حل نکردم، فقط راه حل ارایه شده رو پیدا کردم. من هم امیدوارم بتونم تا جایی که ممکنه در خدمت دوستان همنوع باشم. پیروز و سربلند باشید.
سلام
ممنون بابت پست
میخواستم خواهش کنم یکم راجع به این زبان توضیح بدی
یعنی بگی به چه کاری میادو کلا قضیش چیه,اگر بشه یه فایل صوتی ضبط کنی که عالی میشه,خیلی دوست دارم یاد بگیرم
ممنون
درود
محمد جان پایتون زبون برنامه نویسی عمومیای هست که به خاطر قدرت بالا و سادگیش خیلی طرفدار داره. با پایتون میشه کارهای زیادی کرد. مثلا اتوماتیک کردن کارهای طولانی و خسته کنندهای مثل تغییر نام هزاران فایل و پوشه، استخراج اطلاعات از یه وبسایت، کار با فایلهای اکسل، کار با فایلهای pdf و… با پایتون میشه برنامههای مختلفی هم نوشت. بخش بزرگی از NVDA با پایتون نوشته شده و افزونههای اون هم با پایتون نوشته میشن. RSGames, Skype Talking, Quitter (کلاینت twitter برای نابینایان) و برنامههای مختلفی که سایت Q-continuum.net برای نابینایان ارایه میده با پایتون نوشته شدن. این زبان برای طراحی وب هم عالی هست. مثلا سایت معروف twitter و بخشی از youtube و google با پایتون نوشته شده. حتی کمی آشنایی با این زبان خیلی مفید هست. حد اقل کاری که میشه باهاش کرد استفاده به عنوان یه ماشین حساب اتوماتیک، قدرتمند و انعتافپذیر هست. اگه وقت کنم یه آموزش مقدماتی براش ضبط میکنم. امید که توضیحاتم کافی باشن. شاد باشی دوست عزیز.
سلام مرسی از پستت خیلی خوب میشه اگه آموزش صوتی ضبط کنی ممنون میشم ما میخواییم توی کلاسهای بهزیستی جلیلیان مشهد اگر بشه برنامه نویسی هم آموزش بدیم اگر تو به ما یاد بدی ما هم میتونیم به بچه های مشهد یا شهرستانهای اطراف که نابینایان هستند آموزش بدیم متشکر بای
درود
امید که بتونم. ولی شک دارم. من خودم در حد متوسط هستم و دارم بیشتر یاد میگیرم. شاد باشید.
سلام آقای امینی از پست خوبتون ممنون. اگه کسی بخواد بره کلاس برنامه نویسی بهتره کدوم زبانو یاد بگیره؟ اصلا باید چه چیزهایی رو بلد باشه تا بتونه برنامه نویسی یاد بگیره؟ آیا باید اول زبان خاصی رو یاد گرفت و بعد انتخاب کرد که مثلا پایتون رو حرفه ای کار کرد یا نه میشه از اول رفت زبان پایتون؟
درود
اینکه کدوم زبان رو باید یاد بگیرید سوالی هست که خیلیها میپرسن و هر کسی هم یه جواب متفاوت داره. اول ببینید هدفتون از یاد گرفتنش چیه. نوشتن برنامه برای کامپیوتر؟ برای موبایل؟ یا برای ساخت برنامههای تحت وب. برای هر کاری زبانی وجود داره که اون کار رو بهتر از بقیه انجام میده. برای برنامه نویسی ویندوز c++, CSharp و Visual Basic زبانهای خوبی هستند. برای اندروید باید جاوا یاد بگیرید و برای آیاواس Objective C. برای طراحی وب php, ruby یا python خوبن. البته باید به همراهشون جاوا اسکریپت و html و css هم یاد بگیرید. پایتون یه زبان general purpose (عمومی) هستش که همهی این کارها رو میکنه. بعضی رو بهتر و بعضی رو بدتر.
در مورد چیزایی که نیاز دارید بدونید، خوب یه آشنایی نسبتا خوب با کامپیوتر لازمه. منطق و ریاضی واجب نیستن ولی کمک میکنن اگه زبان انگلیسی هم بلد باشید توی پیدا کردن راهنما و کمک وقتی مشکلی براتون پیش میاد خیلی کمک میکنه.
من شخصا نیازی به یاد گرفتن یه زبان خاص و بعدا یاد گرفتن یکی دیگه نمیبینم. ولی این عقیدهی شخصیم هست. خود من انواع زبانها رو امتحان کردم. به صورت خودخوان از روی کتاب. ولی هیچ کدوم رو جدی دنبال نکردم. الآن در نظر دارم پایتون رو یاد بگیرم و اگه روزی تصمیم به انتشار برنامهی پولی گرفتم c++ رو یاد بگیرم. چون یکی از مشکلات پایتون اینه که کرک کردن برنامههایی که با این زبون نوشته شده مثل جاوا راحت هستش. ولی در مورد c++ اینطور نیست.
امید که اطلاعات محدودم به دردتون بخورن.
بازم سلام از اینکه دقیق و مفید جواب دادید خیلی تشکر میکنم. میشه لطف کنید اگه کتاب یا کتابهای صوتی با موضوع برنامه نویسی تهیه شده معرفی کنید؟
درود مجدد
من کتاب صوتیای که یه زبان برنامه نویسی رو یاد بده نمیشناسم. ولی دوتا کتاب از موج نور هست که در مورد اصول برنامه نویسی هست. من خیلی خیلی وقت پیش گوششون دادم و یادم نمیاد چی میگفتن ولی لینک صفحهای که میتونید این دوتا کتاب رو ازش خریداری کنید رو براتون میذارم. خودم هم فکر کنم کتاب برنامه و برنامه نویسیش رو دوباره بخرم ببینم چی میگه. هرچند من یه تل کتاب انگلیسی در مورد برنامه نویسی دارم. توی صفحهای که لینکش رو میگذارم سه تا کتاب هستند که اولی و سومی اونهایی هستند که من در موردشون صحبت میکنم. در مورد آموزش دارم با خودم کلنجار میرم که آیا یکی از این کتابهای انگلیسی آموزش پایتون رو به یه دورهی صوتی آموزش پایتون به زبان فارسی تبدیل کنم یا نه. شاید اولین درسش رو بزارم و اگه دیدم مورد استقبال بود بقیه رو هم میذارم. اینم لینک صفحهی فروشگاه: http://shop.mnsi.ir/index.php?id_category=21&controller=category
شاد باشید.
سلام دوباره میثم جان عالیه از راهنمایی خوبت متشکرم.
درود بر میثم گل!آقا ما هر از چند گاهی میبینیم زحمات شما و فعالیتهای شما رو در سایت!
همینکه شما واقعا برای نابینایان زحمت میکشید و سعی دارید گوشه ای از مشکلات نابینایان رو حل کنید واقعا جای بسی افتخار است.
فقط دادا اگر میشد در تلگرام تدبیری بیندیشید که میزان دسترسی ماها نسبت به میزان فعلی بیشتر و بیشتر بشه مثلا یه اسکریپتی چیزی رو طراحی میکردید که ما بتونیم از اپلیکیشن تلگرام هم استفاده کنیم خییییلیییی عالی بود دادا!
چون به هر حال شما بیشتر به این مسائل مسلط هستید و شاید بتونید راه چاره ای بیندیشید!
بازم همینکه این فعالیتها رو میبینم و به هر حال میبینم که هنوز هستند دوستانی که واقعا به فکر همنوعانشان باشند واقعا خوشحال میشم!بازم دادا وجدانا خدا خیرت بده! زنده باشید یا حق
سلام مرسی از پست جالب بود
لطف داری طاها جان. موفق باشی.