آموزش پایتون برای کودکان — راهنمای جامع
دلایل گوناگونی برای محبوبیت روزافزون «زبان برنامه نویسی پایتون» (Python Programming Language) وجود دارد. اما در بحث آموزش پایتون برای کودکان باید گفت که پایتون یک زبان برنامهنویسی فوقالعاده برای آغاز برنامهنویسی است. پایتون یک زبان برنامهنویسی قدرتمند، به سادگی قابل خواندن و «سطح بالا» (High Level Programming language) است. این یعنی، دستورات زبان پایتون به جای آنکه صفر و یکهای پیچیده باشند، مانند کلمات انگلیسی خوانده میشوند و این یعنی زبان پایتون برای کودکان گزینه مناسبی خواهد بود و فراگیری پایتون برای کودکان نیاز به تجربیات پیشین و زیاد در حوزه برنامهنویسی ندارد.
این راهنمای جامع پایتون برای کودکان، به والدین و مربیان کمک میکند تا به کودکان و دانشآموزان خود پایتون بیاموزند. راهنمای جامع آموزش پایتون برای کودکان دارای دو محور اصلی مباحث مقدماتی و فنی است. در مباحث مقدماتی به معرفی کوتاه پایتون، دلایل مناسب بودن آن برای آموزش به کودکان و چگونگی کمک به کودکان برای یادگیری این زبان پرداخته شده است. در مباحث فنی به نحو، حلقهها، متغیرها، لیستها و در نهایت انجام یک پروژه برنامهنویسی پرداخته شده است. شایان توجه است که مباحث بیان شده در آموزش جامع پایتون برای کودکان نباید در یک جلسه تدریس شوند؛ بلکه باید در جلساتی با زمان استاندارد و کوتاه، در روزهای متفاوت، تدریس شوند.
این راهنمای آموزش پایتون برای کودکان، همانطور که پیش از این نیز بیان شد، برای والدین و مربیان طراحی شده است. ولیکن، کودکانی که آشنایی با زبانهای برنامهنویسی و اندکی زبان انگلیسی دارند میتوانند خود سر فصلهای بیان شده در اینجا را دنبال و مطالعه کنند. نوجوانان نیز میتوانند به راحتی با استفاده از این آموزش، برنامهنویسی پایتون را بیاموزند. کلیه نکات گفته شده، هم برای آموزش پایتون به کودکان و هم به نوجوانان، مناسب هستند.
به افرادی که هنوز هم در آموزش برنامهنویسی به کودکان و نوجوانان خود شک دارند، توصیه میشود مطلب «مهارتآموزی آنلاین کلید موفقیتهای فردای دانشآموزان امروز» را مطالعه کنند. همچنین، به والدین و مربیان توصیه میشود برای آنکه بیشتر و بهتر برای آموزش برنامهنویسی به کودکان و نوجوانان آمادگی داشته باشند، مطلب «آموزش برنامه نویسی برای کودکان — راهنمای کاربردی» را مطالعه کنند.
پایتون چیست؟
افرادی که تازه وارد دنیای برنامهنویسی شدهاند، ممکن است با این پرسش مواجه باشند که «پایتون چیست؟». پایتون یک زبان برنامهنویسی است. زبان برنامهنویسی یک راه ساده و خاص برای دادن یک مجموعه از دستورات به کامپیوتر است. کامپیوتر، این مجموعه دستورات را دریافت و اجرا میکند. برخی افراد ممکن است با برخی از متداولترین زبانهای برنامهنویسی مانند «جاوا» (Java) یا «پیاچپی» (PHP) آشنایی داشته باشند. آموزش پایتون روز به روز محبوبتر میشود و اخیرا، این زبان در لیست ۱۰ زبان برنامهنویسی برتر سال ۲۰۱۸ و زبانهای برنامهنویسی که باید در سال ۲۰۱۹ آموخت قرار گرفته است.
به همین دلیل است که آموزش پایتون برای کودکان محبوبیت خاصی به دست آورده است. پایتون یک زبان برنامهنویسی است که مهارتهای واقعی و کاربردی را برای آینده در اختیار فرد میگذارد. از این زبان برنامهنویسی برای توسعه نرمافزارها و برنامههای کاربردی در طیف وسیعی از زمینهها استفاده میشود. بسیاری از برنامهنویسان کامپیوتری از کار با پایتون لذت میبرند؛ زیرا خواندن این زبان آسان است و برای افراد مبتدی دسترسیپذیر محسوب میشود.
چرا پایتون برای کودکان گزینه مناسبی محسوب میشود؟
آیا فراگیری پایتون آسان است؟ بله؛ «دستورات» (Commands) و «نحو» (Syntax) (قواعدی که چگونگی نوشتن کد را تعیین میکنند) در پایتون در مقایسه با دیگر زبانهای برنامهنویسی نسبتا ساده هستند. این موضوع موجب میشود تا پایتون برای کودکان به سادگی قابل فهم باشد؛ حتی اگر هیچ تجربه برنامهنویسی قبلی نداشته باشند.
دیگر ویژگی خوب و قابل توجهی که سبب شده تا پایتون برای کودکان گزینهای مناسب باشد، طیف وسیع کتابخانههایی است که میتوان آنها را در هنگام نیاز به یک ویژگی خاص «وارد» (Import) کرد. این ویژگی «پیمانهای» (Modular)، پایتون را انعطافپذیر نگه میدارد و به کاربر کمک میکند از کتابخانههایی که توسط دیگران آماده شده برای ساخت پروژههای جالب و حتی سرگرمکننده به صورت آسان بهرهمند شود. افراد علاقهمند به فراگیری مطالب بیشتر پیرامون کتابخانههای پایتون، میتوانند از منابع زیر استفاده کنند. هر چند این موارد کاربردی در آموزش پایتون برای کودکان در این وهله ندارند و صرفا برای والدین و مربیان علاقهمند مناسب محسوب میشوند.
- ۱۳ کتابخانه یادگیری عمیق پایتون — راهنمای کاربردی
- ۱۰ کتابخانه پایتون علم داده — راهنمای کاربردی
- ۸ کتابخانه یادگیری ماشین پایتون — راهنمای کاربردی
- تقلب نامه (Cheat Sheet) کتابخانه های پایتون — راهنمای کامل و سریع
چگونه میتوان به کودکان در یادگیری پایتون کمک کرد؟
آموزش پایتون به کودکان آسان است. امروزه ویدئوهای آموزشی متعدد و متنوعی برای آموزش پایتون موجود است. این آموزشها، فراگیری پایتون را برای کودکان ساده میکنند. در این مطلب، برخی از دستورات بسیار ساده برنامهنویسی پایتون که برای آموزش به کودکان مناسب است آموزش داده شدهاند.
ضمن فراگیری این دستورات، کودکان میفهمند که برنامهنویسی کاری جذاب و لذتبخش است که با استفاده از آن میتوان بازیها و پروژههای سرگرمکنندهای ساخت. مباحث فنی این آموزش پایتون برای کودکان به سه بخش اصلی تقسیم شده است. در هر یک از بخشهای آموزش پایتون برای کودکان، برخی از مفاهیم پایهای برنامهنویسی پایتون مورد بررسی قرار گرفته است.
به والدین و مربیانی که راهنمای جامع آموزش پایتون برای کودکان را مطالعه میکنند، بررسی مطالب «پایتون برای مبتدیان — به زبان ساده» و «نصب پایتون — از صفر تا صد» نیز برای آمادهسازی بستر لازم برای آموزش، توصیه میشود. افرادی که قصد دارند در محیط ویندوز به آموزش پایتون برای کودکان بپردازند نیز مطالعه مطلب «نصب پایتون در ویندوز — راهنمای کاربردی» پیشنهاد میشود.
بخش اول پایتون برای کودکان: نحو، حلقهها و متغیرها
در این بخش، مفاهیم «نحو» (Syntax)، «حلقهها» (Loops) و «متغیرها» (Variables) مورد بررسی قرار گرفته است.
نحو: نحو در واقع «املا» (Spelling) و «گرامر» (Grammer) زبانهای برنامهنویسی کامپیوتری است. همانطور که درک جملات انگلیسی در صورتی که با املا و نگارش صحیح نوشته نشده باشند برای انسان دشوار است، کامپیوترها نیز نمیتوانند دستورات برنامهنویسی را در صورتی که به شکل درست و مناسبی نوشته نشده باشند، درک و اجرا کنند. نحو، راهکار مناسب برای طرحریزی دستورات در زبانهای برنامهنویسی را تعریف میکند.
متغیرها: در برنامهنویسی کامپیوتری، متغیر نوعی مقدار است که میتواند تغییر کند. در این آموزش پایتون برای کودکان، چگونگی تغییر متغیرها در پایتون آموزش داده خواهد شد. همچنین، نشان داده میشود که تغییر مقادیر متغیرها، چگونه خروجی را متاثر میکند.
حلقهها: حلقهها حاوی مجموعه دستوراتی هستند که به طور مداوم تا هنگامی که یک مجموعه مشخص از شرایط برآورده شوند، تکرار میشوند. در این مطلب، حلقه for و while آموزش داده و تفاوت بین آنها بیان میشود.
اجرای پایتون در کامپیوتر
به افرادی که نمیدانند چطور باید کد زدن در پایتون را آغاز کنند و از اینکه چه «ویرایشگر متن» (Text Editor) یا «محیط توسعه یکپارچهای» (Integrated Development Environment | IDE) را مورد استفاده قرار دهند آگاه نیستند، پیشنهاد میشود از «آناکوندا» (Anaconda) استفاده کنند. آناکوندا یک توزیع «آزاد» (Free Software) و «متنباز» (Open Source) از پایتون و «زبان برنامهنویسی آر» (R Programming Language) است که برای علوم محاسباتی مانند «علم داده» (Data Science)، «یادگیری ماشین» (Machine Learning)، «پردازش داده بزرگ مقیاس» (Large-Scale Data Processing) و «تحلیل پیشبین» (Predictive Analytics) مورد استفاده قرار میگیرد.
آناکوندا را میتوان در ویندوز، گنو/لینوکس و مکاواس نصب کرد. این توزیع همراه با محیط توسعه یکپارچه «اسپایدر» (Spyder) عرضه میشود. آناکوندا را میتوان از اینجا [+] به صورت رایگان دانلود کرد. افرادی که به دنبال راهکار سادهتری برای شروع کد نویسی به زبان پایتون هستند و نمیخواهند ویرایشگر متن یا IDE نصب کنند، میتوانند از وبسایتهایی که به صورت آنلاین امکان اجرای کدهای پایتون را میدهند، استفاده کنند. از جمله این وبسایتها، وبسایت رسمی پایتون است. برای نوشتن کد به زبان پایتون و اجرای آن به صورت آنلاین، میتوان از این لینک [+] استفاده کرد.
حلقه for در پایتون
آموزش پایتون برای کودکان، با یادگیری و درک متغیرها و حلقههای for آغاز میشود. ابتدا باید ویرایشگر متن را باز و این متن را وارد کرد.
for x in range(1,6): print (x)
سپس، باید برنامه را اجرا کرد. نکته مهم این است که دندانهگذاری یا همان تورفتگی (Indent | فاصلهگذاری بین دستور و نقطه شروع متن) در پایتون حائز اهمیت است و اگر دندانهگذاریها به صورت درست انجام نشوند، کد به درستی اجرا نمیشود. خروجی دستور بالا به صورت زیر است.
1 2 3 4 5 >>>
اکنون باید از کودک (به طور کلی دانشآموز) پرسید که آنچه اتفاق افتاده است را توصیف کند. سپس، اعداد موجود در متد range() را تغییر دهند (متد صرفا نامی برای دستورات پایتون است). همچنین، برای مثال میتوان از کودک پرسید که وقتی رنج روی (1,3) و سپس، (1,100) تنظیم میشود، چه اتفاقی به وقوع میپیوندد. کودکان خیلی سریع روش ساخت لیستی حاوی مجموعه مشخصی از اعداد را در پایتون میآموزند. هدف بعدی آن است که کودک محدودیتهای متد range را بفهمد. در واقع، بداند که متد، آخرین عدد یعنی ۶ را در بازه (1,6) چاپ نمیکند. همچنین، باید متوجه شود که متغیر چیست.
در بالا یک حلقه for ساخته شد. اما حلقه for چیست؟ همانطور که پیشتر بیان شد، حلقهها معمولا در برنامهنویسی کامپیوتری مورد استفاده قرار میگیرند. حلقهها به کامپیوترها مجموعهای از دستورات را میدهند که به طور مداوم تکرار میشوند. در یک حلقه for، کامپیوتر دستور for را برای تعداد مشخصی تکرار میکند. این تعداد مشخص، رنج نامیده میشود. با استفاده از قطعه کد زیر، برنامه به صورتی تنظیم شده که اعداد خروجی به ترتیب معکوس چاپ شوند. کودک باید برای درک بهتر مطلب، کد زیر را بنویسد و اجرا کند.
for x in range(6,1,-1): print (x)
اکنون میتوان از این روش برای کد نویسی یک شعر کودکانه محبوب استفاده کرد. کودک باید متن زیر را در وارد کند.
for x in range(5,0,-1): print (x, 'little monkeys jumping on the bed, 1 fell off and bumped his head, momma called the doctor and the doctor said, no more monkeys jumping on the bed')
خروجی قطعه کد بالا، به صورت زیر است.
5 little monkeys jumping on the bed, 1 fell off and bumped his head, momma called the doctor and the doctor said, no more monkeys jumping on the bed 4 little monkeys jumping on the bed, 1 fell off and bumped his head, momma called the doctor and the doctor said, no more monkeys jumping on the bed 3 little monkeys jumping on the bed, 1 fell off and bumped his head, momma called the doctor and the doctor said, no more monkeys jumping on the bed 2 little monkeys jumping on the bed, 1 fell off and bumped his head, momma called the doctor and the doctor said, no more monkeys jumping on the bed 1 little monkeys jumping on the bed, 1 fell off and bumped his head, momma called the doctor and the doctor said, no more monkeys jumping on the bed
متغیرها
اکنون زمان آن رسیده که دانشآموز با متغیرها آشنا شود. در کد بالا، x یک متغیر است. هنگامی که متغیر x موجود در خط اول به y تغییر داده شود، چه اتفاقی به وقوع میپیوندد؟ در صورتی که هر دو متغیر x موجود در مطلب به y تغییر داده شوند چه اتفاقی میافتد؟ اگر هر دو x موجود در کد به RandomChickenVariable تغییر پیدا کنند، آیا کد همچنان به درستی کار میکند؟ با وجود اینکه RandomChickenVariable یک نام متغیر نامناسب است، ولی باید گفت: بله؛ کد به درستی کار میکند. متغیرها میتوانند هر عنوانی که کاربر بخواهد داشته باشند. برای اطلاعات بیشتر در این رابطه، مطالعه مطلب «کلیدواژهها و شناساگرها — به زبان ساده» توصیه میشود.
حلقه While
در این بخش، چگونگی ساختن حلقه while آموزش داده شده است. برخلاف حلقههای for، که پس از تعداد مشخص تکرار متوقف میشوند، حلقههای while تنها هنگامی متوقف میشوند که شرایط خاصی برآورده شود. اکنون، کودک باید دستور زیر را وارد کند.
x=0 while x is not 10: x=x+1 print (x) print('done!')
خروجی قطعه کد بالا به صورت زیر است.
1 2 3 4 5 6 7 8 9 10 done!
اکنون، باید از کودک خواسته شود تا کاری که الگوریتم انجام میدهد را با استفاده از کلمات variable (متغیر) و loop (حلقه) تشریح کند. در این مثال، x در واقع متغیر x است که از ۰ شروع میشود و هر بار که حلقه for اجرا میشود، مطابق با فرمول x=+1 یک واحد افزایش پیدا میکند. هنگامی که x برابر با ۱۰ شود، شرط پایان حلقه رسیده است و حلقه پایان پیدا میکند. در این هنگام، «done!» چاپ میشود. آخرین کدی که اجرا شد حلقه while است. حلقهها بسیار مفید هستند زیرا میتوانند فرایند را از طریق کد کنترل کنند. «done!» تا هنگامی که اجرای حلقه پایان پیدا نکند، چاپ نمیشود.
اهمیت نحو
همانطور که پیشتر بیان شد، نحو در واقع املا و قواعد نگارش زبانهای برنامهنویسی کامپیوتری است. کامپیوترها تنها قادر به اجرای دستوراتی هستند که به زبان قابل فهم آنها، به آنها داده شده است.
برای کمک به کودکان برای درک بهتر اهمین نحو در پایتون، باید به آنها فرصت داده شود تا تورفتگی کنار دستورات را به صورت زیر برداشته و خروجی را مجددا بررسی کنند. در واقع، همواره باید به کودک فرصت داد تا با کد بازی کند و تفاوت بین نسخههای مختلف یک کد را درک کند.
1x=0
2while x is not 10:
3 x=x+1
4print (x)
5print('done!')
در نهایت، نکتهای که در این وهله باید به آن توجه داشت این است که مرزهای حلقهها با استفاده از دندانهگذاری تعیین میشوند. حلقه هیچ یک از کدهای بدون تورفتگی را اجرا نمیکند. اگرچه، در صورت اجرای دستور زیر، برنامه با خطا مواجه میشود.
1x=0
2while x is not 10:
3 x=x+1
4print (x)
5 print('done!')
پیغام خطای خروجی به صورت زیر است.
File "<ipython-input-10-ebd4d8eb92d4>", line 5 print('done!') ^ IndentationError: unexpected indent
شایان توجه است که پایتون گاهی با قرار دادن کاراکتر «^» به کاربر کمک میکند تا خطای خود را پیدا کند. خطای به وقوع پیوسته در کد بالا تنها به این دلیل اتفاق میافتد که هیچ دلیلی برای آنکه دستور print باید دارای تورفتگی باشد وجود ندارد. این خطا در نحو وجود دارد. کامپیوتر نمیتواند دستور را درک کند زیرا «املا و دستور زبان» آن مشکل دارد. شایان توجه است که اگر برنامه گیر کند، میتوان کلیدهای ctrl و c را برای کنسل کردن برنامه در کنسول فشرد و یا روی مربع قرمز کلیک کرد تا عملیات متوقف شود. برای درک بهتر موضوع، میتوان کد زیر را اجرا کرد.
1x=0
2while x is not 10:
3 print (x)
4x=x+1
پس از اجرای کد، باید از کودک درخواست شود که دلیل به درستی عمل نکردن قطعه کد را توضیح دهد. دلیل این امر آن است که مقدار ذخیره شده در متغیر x هرگز در حلقه به مقدار ۱۰ نمیرسد، بنابراین برای همیشه به چاپ کردن 0 ادامه میدهد و دستور x=x+1 که بیرون حلقه قرار دارد (با توجه به نوع دندانهگذاری) هرگز اجرا نمیشود.
وارد کردن یک کتابخانه
آخرین تمرین برای این درس، شامل استفاده از کتابخانهای است که پیش از این بیان شد. در این تمرین، کامپیوتر به یک تاس دیجیتال مبدل میشود. در این راستا، ابتدا باید کد زیر را وارد کرد.
1from random import randint
2x = randint(1,4)
3print("dice roll:")
4print(x)
کتابخانه مورد استفاده در اینجا، random و متدی که مورد استفاده قرار گرفته نیز randint است. random ماژولی در پایتون است که چندین تابع را برای استفاده در اختیار کاربر قرار میدهد. .randint(x, y) نوعی از توابع است که از طریق random در دسترس کاربر قرار گرفته است. این تابع دارای دو پارامتر کلیدی (دو متغیر x و y) است و یک عدد تصادفی بین x و y، شامل x و y را انتخاب میکند. کاربر میتواند x و y را هر عددی که تمایل دارد قرار دهد. در این مثال، ۱ و ۶ انتخاب میشوند؛ درست مانند یک تاس. اگر توابع زیادی در یک کتابخانه وجود دارد که کاربر میداند به آنها نیاز خواهد داشت، میتواند از دستور import random برای وارد کردن کل کتابخانه استفاده کند.
به این موضوع بعدا به طور کامل پرداخته خواهد شد. اکنون باید از کودک خواست که کد را توصیف کند. پس از آن، مقادیر بیشینه و کمینه را تغییر دهد و یا مثلا کد را به نوعی تغییر دهد تا تصمیم بگیرد که اگر عدد کمتر یا مساوی مقداری، مثلا پنج بود، پرتاب تاس مجددا انجام شود. در این صورت، کد به صورت زیر خواهد بود.
1from random import randint
2roll=randint(1, 6)
3print(roll)
4if roll < 5 :
5 repeat=roll
6 print(roll)
7else:
8 print("You lose")
عیبیابی در پایتون
اگر کد به درستی اجرا نمیشود، معمولترین علت آن خطا در پرانتز گذاری، قرار دادن دو نقطه (:) و یا دندانهگذاری اشتباه است.
- در پایان خط دستورات منطقی مانند while ،if و for باید دو نقطه قرار بگیرد.
- حلقههای for تنها برای خطوطی تاثیر دارند که زیر آنها قرار گرفته است. برای دستورات داخلی حلقهها، باید یک تورفتگی بیشتر از دستور اصلی وجود داشته باشد.
خلاصه، پس از انجام این تمرینات، کودک باید در کار با متغیرها، حلقهها، عبارات منطقی و وارد کردن توابع، تجربه کسب کرده باشد. به پایتون خوش آمدید!
بخش دوم آموزش پایتون برای کودکان: همه چیز درباره لیستها
برنامهنویسی معمولا کلمات زیادی دارد که برای بچههایی که پایتون میآموزند ممکن است ترسناک و نگران کننده باشد. یک نکته مهم که نباید آن را فراموش کرد این است که برای حل مسائل، باید آنها را به چندین گام شکست. این کمک میکند که کد مرتب شود و افراد دیگر نیز بتوانند کد نوشته شده توسط فرد را بدون گیج شدن بخوانند. آموزشهای پایتون برای کودکان که در ادامه ارائه شده است، روش کار با دادهها، ویرایش و ذخیرهسازی آنها را بیان میکنند. مطالبی که در ادامه مورد بررسی قرار میگیرند، در دو بخش کلی قرار دارند.
انواع داده: چندین نوع داده تعریف شده در پایتون وجود دارد. این موارد را میتوان به تدریج ضمن کار با انواع داده فرا گرفت.
لیستها: لیست مجموعه ای از اطلاعات با یک ترتیب خاص است که میتواند تغییر پیدا کند.
ساخت لیست
ساخت لیست در پایتون بسیار ساده است. تنها کافی است که مجموعهای از عناصر جدا شده با کاما را در میان کروشه یعنی [] قرار داد. میتوان لیست کلمات را با تایپ کردن دستور زیر ساخت.
1myList = ['I', "don’t", "like", "pickles", "in","my", "sandwiches"]
به این کار در برنامهنویسی «اعلان» (Declaration) گفته میشود. در کد بالا، متغیر myList اعلان شده است. این لیست مجموعهای از کلمات را ذخیره میکند. استفاده از دو کروشه باز و بسته شده برای تعریف لیست مهم هستند. میتوان از دستورات برای دسترسی به اطلاعاتی پیرامون لیست و ویرایش دادههای موجود در لیستها استفاده کرد.
دسترسی به اطلاعات موجود در لیست
فرض میشود که اطلاعات پایهای درباره لیست شامل موارد زیر، موجود است.
- طول لیست چقدر است.
- اولین بخش دادههای ذخیره شده در لیست چیست.
- آخرین بخش دادههای ذخیره شده در لیست چیست.
- چه نوع دادههایی در لیست ذخیره شدهاند
اکنون میتوان طیف وسیعی از دستورات پایتون را برای دسترسی به اطلاعات موجود در لیستها فرا گرفت.
طول لیست
برای دانستن طول لیست، باید دستور زیر را وارد کرد.
1print (len(myList))
1>>> len(myList)
خروجی قطعه کدهای بالا، به صورت زیر است.
7
خروجی نمایش داده شده در بالا، طول لیست را نمایش میدهد.
اندیسگذاری لیست
عناصر موجود در لیست اندیسگذاری شدهاند، بنابراین می توان آنها را راحتتر بازیابی کرد. میتوان از عملگر اندیس [] برای پیدا کردن یک عنصر در لیست استفاده کرد. برای گشتن به دنبال اولین بخش دادهها، میتوان از myList[1] به صورتی که در قطعه کد زیر آمده است، استفاده کرد.
1>>> print (myList[1])
2'don’t'
در خروجی، «don’t» چاپ شده است. اکنون میتوان برنامه را به گونهای تغییر داد که «I» در خروجی چاپ شود. برای این کار، باید از myList[0] استفاده کرد. این تمرین به خوبی نشان میدهد که لیستها در پایتون از ۰ اندیسگذاری شداند. اندیسگذاری به صورتی است که در تصویر زیر نمایش داده شده است.
اگر برای چاپ کردن آخرین عنصر لیست، به جای myList[۶] از myList[7] استفاده شود، برنامه با خطا مواجه میشود. کودک باید بداند که دلیل این امر آن است که طول لیست ۷ است و با توجه به اینکه اندیس لیست در پایتون از ۰ شروع میشود، بنابراین اندیس آخرین خانه در لیست ۶ است. این امر ممکن است در ابتدا کمی گیج کننده باشد، اما با کمی تمرین، کودک به سرعت و به خوبی این موارد را میآموزد.
انواع دادههای قابل ذخیره در لیست
اکنون، کودک باید دستور زیر را وارد کند.
1>>> print (type(myList))
خروجی دستور بالا در ادامه آمده است.
<class 'list'>
این دستور، اطلاعاتی که مد نظر کاربر بود را در اختیار اور قرار نمیدهد. در واقع، در اینجا هدف آگاهی از نوع اطلاعاتی (دادههایی) بود که درون لیست ذخیره شده است. بنابراین، دستور زیر استفاده میشود.
1>>> print (type(myList[1]))
خروجی قطعه کد بالا به صورت زیر است.
<class 'str'>
«Str» مخفف string است. رشتهها (Strings) بیتهایی از متن هستند. میتوان گفت که وقتی یک متغیر درون '' یا "" قرار بگیرد، یک رشته است. با نگاهی به دستورات پیشین ارائه شده در این مطلب، میتوان مشاهده کرد که ورودیهای myList به صورت تک به تک درون '' قرار گرفتهاند و اعلان شدهاند.
تفکیک لیستها، رشتهها و اعداد صحیح از یکدیگر
در ادامه، سه نوع داده لیست، رشته و اعداد صحیح مورد بررسی قرار میگیرند. کودک با بررسی مجدد این موارد بیش از پیش با دو نوع متغیر دیگر آشنا میشود.
1pickles = ‘I don’t like pickles in my sandwiches’
2pickles2= [“ I don’t like pickles in my sandwiches”]
اکنون، کودک باید دستورات type و len را برای هر یک از این موارد وارد کند و آن را با نتایج myList مقایسه کند. در این وهله باید از دانشآموزان درخواست شود تا نکتهای که توجهشان را جلب کرده را بیان کنند. باید به کودکان این فرصت داده شود که با متغیرهایی که مد نظر خودشان است کار کنند تا مفهوم متغیر و انواع آن را به خوبی درک کنند.
بخشی از جذابیت و لذتبخشی برنامهنویسی در آن است که میتوان به سادگی مثالهای متعددی ساخت تا ایدههای مختلفی که ذهن را درگیر میکنند مورد آزمون قرار بگیرند. در ادامه، خروجی دستور len روی دو متغیر ارائه شده است.
1>>> print (len(pickles))
خروجی قطعه کد بالا به صورت زیر است.
37
مثال دیگری در زیر آمده است.
1>>> print (len(pickles2))
خروجی قطعه کد بالا به صورت زیر است.
1
اکنون، متغیر type روی دو متغیر بررسی میشود.
1>>> type(pickles)
خروجی قطعه کد بالا به صورت زیر است.
<class 'str'>
مثال دیگری در ادامه آمده است.
1>>> type(pickles2)
خروجی قطعه کد بالا به صورت زیر است.
<class 'list'>
در نهایت، نکته قابل توجه آن است که متغیر pickles یک رشته است و لیست نیست. براکت (Square Brackets) برای تعریف لیست استفاده میشود. این متغیر دارای طول ۳۷ است، زیرا تابع len کاراکترهای موجود در رشته را میشمارد. از سوی دیگر، pickles2 لیستی با یک عنصر است که با با علامت نقل قول انگلیسی ("") احاطه شده است و به همین دلیل، دارای طول یک است.
تاکنون، دو نوع داده لیست و رشته آموزش داده شد. اکنون باید از دانشآموزش (کودک) درخواست شود که به اطلاعاتی که از کنسول پایتون کسب میشود توجه کند. آیا انواع دیگری از داده را مشاهده میکند؟ میتوان کودک را راهنمایی کرد تا به اعداد ۱ و ۳۹ توجه و دستورهای type(39) و type(1) را وارد کند و خروجی آنها را مورد بررسی قرار دهد. خروجی int نشانگر یک عدد «صحیح» (Integer) است که میتواند مثبت، منفی و یا صفر باشد.
1>>> type(39)
خروجی قطعه کد بالا به صورت زیر است.
<class 'int'>
چالشهای دیگر
اگر دانشآموز مباحثی پیشین را به خوبی آموخته و به موضوعات علاقهمند شده است، میتوان چالشهای جدیدی برای او تعریف کرد. برای مثال، میتوان از او خواست تا به اولین عنصر از رشته دسترسی پیدا کند. برای راهنمایی، میتوان این نکته را بیان کرد که دسترسی به عناصر رشته مانند دسترسی به عناصر موجود در لیست است.
پاسخ و راهکار این چالش، pickles[0] است. pickles[0] چه نوع دادهای است؟ pickles[0] نیز یک رشته است. در واقع، یک رشته از رشتههای کوچک دیگر ساخته شده است. در ادامه، مثالهایی پیرامون چگونگی دسترسی به عناصر رشته ارائه شده است.
ورودی:
1>>> pickles[0]
خروجی:
'I'
ووردی:
1>>> pickles[21]
خروجی:
'i'
ورودی:
1>>> pickles[14]
خروجی:
'i'
ورودی:
1>>> pickles[13]
خروجی:
'p'
تاکنون، دانشآموزش چگونگی ذخیرهسازی دادهها در پایتون را میآموزد. همچنین، با سه نوع متغیر رشته، عدد صحیح و لیست نیز در پایتون آشنا شد. لیستها توانایی ذخیرهسازی اطلاعات به ترتیب خاصی را دارند و عناصر موجود در آنها از ۰ اندیسگذاری میشود. این یعنی آخرین اطلاعات ذخیره شده در لیست دارای اندیسی با مقدار یکی کمتر از طول لیست است. برای مثال، اگر طول لیست ۳ باشد، اندیس آخرین عنصر ۲ خواهد بود (۰، ۱ و ۲ به ترتیب اندیسهای اول تا آخر لیست هستند).
ویرایش لیستها
چنانکه پیش از این بررسی شد، لیستها دارای دو مورد زیر هستند:
- اندیسهایی که از صفر آغاز میشوند.
- خصیصههای توکار مانند طول.
اکنون، دستورات و متدهای موجود که میتوان با بهرهگیری از آنها لیستها را ویرایش کرد مورد بررسی قرار میگیرند. مجددا مثال مربوط به لیستها که پیش از این ارائه شده بود، مورد بررسی قرار میگیرد.
1myList = ["I", "do not", "like", "pickles", "in","my", "sandwiches."]
اکنون، کلمات جدیدی با استفاده از دستورهای زیر به لیست اضافه میشوند.
1myList.insert(4,"or")
2myList.insert(5,"tomatoes")
اکنون، با نوشتن myList، مجددا محتوای موجود در لیست مورد بررسی قرار میگیرد.
1myList
در این وهله، باید از دانشآموز خواست تا آنچه به وقوع پیوسته را توصیف کند. همچنین، بهتر است که دستورهای بالا را مجددا با اعداد (اندیسها) و کلمات متفاوتی وارد کند. دانشآموز باید تلاش کند تا آنچه به وقوع پیوسته است را توصیف کند. آیا میتوان از اعداد بسیار بزرگ استفاده کرد؟ کودک باید پاسخ کلیه پرسشهای خود را با آزمودن کد به اشکال مختلف، به دست آورد.
1>>> myList.insert(4,"or")
2>>> myList.insert(5,"tomatoes")
3>>> myList
خروجی:
['I', 'don’t', 'like', 'pickles', 'or', 'tomatoes', 'in', 'my', 'sandwiches']
شایان توجه است که در هر مرحله، بهتر است کودک آنچه به وقوع پیوسته را به صورت شفاهی بیان کند. در واقع، صرفا مشاهده کد و خروجیهای مختلف آن برای درک آنچه به وقوع میپیوندد کافی نیست. بلکه باید تغییرات به وقوع پیوسته و دلایل آنها توسط دانشآموز به صورت شفاهی بیان شود. توصیف کدها گام خوبی است که بتوان با بهرهگیری از آن روی منطق هر یک از خطوط کد کار و توجه کرد.
درک پارامترها
در ادامه، مفاهیم مهمی که کودک باید پیرامون پارامترها یا در واقع آنچه در میان دو پرانتز قرار میگیرد بیاموزد بیان شده است. اکنون میتوان به دانشآموز یاد داد که در پایتون، به موارد قرار گرفته در میان دو پرانتز، پارامتر گفته میشود. اولین پارامتر اندیس موقعیتی را مشخص میکند که دومین پارامتر در آنجا قرار میگیرد. الزامی وجود ندارد که پارامتر دوم از نوع رشته باشد. همانطور که پیش از این نیز بیان شد، لیست میتواند حاوی انواع گوناگونی از متغیرها باشد و همه این متغیرها نباید از یک نوع باشند.
حذف پارامترها
دستور دیگری که میتوان استفاده کرد remove() است. متد remove یک پارامتر را دریافت میکند که مقدار ورودی برای حذف است. منظور از مقدار، اطلاعات ذخیره شده در هر لیست ورودی است. برای درک بهتر این مطلب، باید از دانشآموز خواسته شود که یک کپی از لیست با تایپ دستور زیر ایجاد کند.
1testList=myList
اکنون باید از دانشآموز خواسته شود که مقدار «don’t» را از testList حذف کند. باید به کودک فرصت طوفان فکری و آزمودن حالات مختلف داده شود. اگر کودک گیج شد، باید تمرینات قبلی را مجددا تکرار کند. دستوراتی مانند insert و remove لیست موجود را ویرایش میکنند. بنابراین، دستور مورد استفاده برای حذف یک عنصر از لیست، به صورت testList.remove() خواهد بود. همچنین، متد remove() نیاز به یک پارامتر دارد؛ در غیر این صورت نمیتواند بفهمد که کدام یک از ورودیهای لیست را حذف کند. دستور نهایی مورد استفاده به صورت زیر خواهد بود.
1>>> testList.remove("don’t")
2>>> testList
خروجی:
['I', 'like', 'pickles', 'or', 'tomatoes', 'in', 'my', 'sandwiches']
اکنون زمان خوبی برای آموزش دادن بخش مهمی از نحو پایتون فرا رسیده است. پس از آموزش دادن این بخش، میتوان ویرایشهای بیشتری روی لیستها انجام داد.
پرانتز در مقایسه با براکت
همانطور که مشاهده شد، آرایهها دارای ویژگیهای توکاری مانند اندیسها و خصیصههایی مانند طول هستند. این نکته ممکن است توجه دانشآموزان را به خود جلب کرده باشد که برخی از دستورات نیازمند براکت هستند و برخی دیگر نیاز به پرانتز دارند. این موضوع بخشی از نحو پایتون است.
نحو در واقع راهی است که با بهرهگیری از آن، یک زبان برنامهنویسی از نشانهگذاری و فضای خالی برای سازماندهی جریانها و عملیات استفاده میکند. به طور کلی، براکت نشان میدهد که دادهها ساخته شدهاند و یا دسترسیپذیر هستند. یک مثال از دادههای ساخته شده، اعلان متغیر myList است. مثالی از دسترسی به دادهها نیز دسترسی به عنصر اول موجود در لیست با استفاده از myList[0] است.
طرح پرسش برای درک بهتر مطلب
میتوان با طرح پرسشهایی از کودک، به درک بهتر مطلب توسط او کمک کرد. پرسشهای زیر، نمونههایی از این موارد هستند.
- چگونه میتوان هنگام ساخت یک متغیر اعلام کرد که از نوع لیست است؟
- چه اتفاقی میافتد اگر از پرانتز برای ساخت لیست استفاده شود؟
- هنگام دسترسی به یک مقدار اندیس خاص در لیست از چه چیزی استفاده میشود؟
چنانکه پیش از این بیان شد، پارامترها ورودیهایی هستند که برای هر یک از دستورات پایتون فراهم میشوند. اگرچه، همه دستورات الزاما نیازی به پارامتر ندارند. پارامترها درون پرانتز قرار میگیرند.
تمرینات برای درک مطلب
- پارامتر چیست؟
- اگر تلاش شود تا از براکت به جای پرانتز برای یک دستور ویرایش لیست مانند insert یا remove استفاده شود، چه اتفاقی به وقوع میپیوندد؟
- چرا تفاوت قائل شدن بین کاربرد براکت و پرانتز مهم است؟
- این یک بحث مهم و بسیار پایهای است. تمایز قائل شدن بین پرانتز و براکت برای جلوگیری از قاطی کردن آنها هنگامی که برنامهنویس دستورات متفاوتی میدهد و یا درخواست اطلاعات میکند بسیار مهم و مفید است.
- مثال: اگر listA=[2,3,4,5] وجود داشته باشد، ورودیهای لیست، اعداد خواهند بود. اگر هیچ تفاوتی بین براکت و پرانتز وجود نداشته باشد، برای مثال، دستور remove(2) گیج کننده میشود و نمیتوان گفت که از این دستور برای حذف مقدار ۲ (در اندیس صفر) استفاده شده یا برای حذف مقدار موجود در اندیس ۲ (یعنی مقدار ۴).
دانشآموز در این مرحله چگونگی دستکاری متغیرها در پایتون را آموخت. پایتون زبان قدرتمندی است و امکان اداره حجم انبوهی از دادهها را به طور همزمان دارد. با کار کردن با لیستها، دانشآموز میآموزد که چگونه با استفاده از پارامتر ورودی به دادهها دسترسی پیدا کند و دانش پایهای پیرامون نحو زبان را به دست آورد.
پایتون برای کودکان: نوشتن یک داستان کوتاه
اکنون از مهارتهای پایتون جدید آموخته شده توسط کودک، میتوان برای ساخت چیزی بیهمتا استفاده کرد. در ادامه، داستانی نوشته میشود که در آن، اسامی و صفتها هر بار که داستان نوشته میشود، تغییر میکنند. کار با نوشتن یک داستان ساده آغاز میشود. مثالی از کاری که قرار است انجام شود در ادامه آمده است.
1name1="Anna"
2adj1="happy"
3sentence1=name1+" woke up in the morning feeling very "+adj1+"."
4print sentence1
پس از اجرای قطعه کد بالا، متغیر sentence1 دارای مقدار «Anna woke up in the morning feeling very happy» است. متغیرهای name1 و adj1 رشته هستند. اگرچه، sentence 1 از مقادیر noun1 و adj1 برای ترکیب رشتهها استفاده میکند.
ساخت یک قصه با قابلیت پر کردن جاهای خالی
اکنون، قسمت جذاب کار از راه رسیده است. در این مرحله، یک داستان با قابلیت پر کردن جاهای خالی ارائه شده است. هدف نوشتن چهار یا پنج جمله است که در آنها به طور کلی سه رشته اسم، سه رشته صفت و سه رشته مکان وجود داشته باشد. در صورت تمایل، میتوان از قطعه کد زیر نیز برای این کار استفاده کرد.
1sentence1= "Last year, I went on a "+adj1+" trip to "+place1+"."
2sentence2= "The weather there was "+adj2+", and I couldn't wait to eat a big "+noun1+" while I was there."
3sentence3="Next year, I want to go to "+place2+", because I've always wanted to see the "+adj3+" "+noun2+"."
شایان توجه است که باید پیش و پس از یک متغیر رشته، از فضای خالی استفاده کرد. در غیر این صورت، کلمات به یکدیگر میچسبند. اگر این کد در این لحظه اجرا شود، با خطایی مواجه خواهد شد. اما خطا چیست؟ آیا متغیرهای place1 ،adj1 و noun1 تاکنون تعریف شدهاند؟ پاسخ منفی است. بنابراین، اکنون باید ابتدا آنها را تعریف کرد. میتوان این متغیرها را با اسامی تصادفی تکمیل کرد. بنابراین، قطعه کدی به صورت زیر فراهم خواهد شد.
1adj1="smelly"
2adj2="silly"
3adj3="adorable"
4place1="Toronto"
5place2="Texas"
6place3="Mexico"
7noun1="chair"
8noun2="shoulder"
9noun3="statue"
پس از آن که تخصیص مقدار به همه متغیرها انجام شد، باید آن را با متغیرهای جمله ترکیب کرد. ترتیبی که دستورات وارد میشوند در پایتون حائز اهمیت است. بنابراین، اگر جملات پیش از تخصیص مقدار به متغیرها قرار بگیرند، اجرای برنامه با پیغام خطا مواجه خواهد شد. باید اطمینان حاصل کرد که همه متغیرها پیش از مورد استفاده قرار گرفتن تعریف شده باشند. برای پرینت کردن همه جملات با هم در پایان، میتوان از دستور پرینت به صورت زیر استفاده کرد.
1print sentence1,sentence2,sentence3
2
کد نهایی به صورت زیر خواهد بود.
1adj1="smelly"
2adj2="silly"
3adj3="adorable"
4place1="Toronto"
5place2="Texas"
6place3="Mexico"
7noun1="chair"
8noun2="shoulder"
9noun3="statue"
10sentence1= "Last year, I went on a "+adj1+" trip to "+place1+"."
11sentence2= "The weather there was "+adj2+", and I couldn't wait to eat a big "+noun1+" while I was there."
12sentence3="Next year, I want to go to "+place2+", because I've always wanted to see the "+adj3+" "+noun2+"."
13print (sentence1,sentence2,sentence3)
خروجی قطعه کد بالا به صورت زیر خواهد بود.
Last year, I went on a smelly trip to Toronto. The weather there was silly, and I couldn't wait to eat a big chair while I was there. Next year, I want to go to Texas, because I've always wanted to see the adorable shoulder.
تغییر داستان در هر بار اجرای برنامه
روش ارائه شده در بالا، سادهترین راه برای ساخت یک داستان با قابلیت پر کردن فضاهای خالی در پایتون است. اگرچه، هدف ساخت قصهای است که در هر بار اجرای کد، تغییر کند. در واقع، هدف آن است که برنامه قادر باشد به طور تصادفی اسامی، صفتها و یا مکانها را از لیستهایی به صورت خودکار انتخاب کند و در داستان قرار بدهد.
ذخیره کردن متغیرها در لیست
میتوان adj1 را به گونهای تعریف کرد که همواره «Smelly» باشد. اما در این حالت، داستان در هر بار اجرای کد تغییر نمیکند. در حالی که برای مثال هدف آن است که لیست متنوعی از اسامی برای داستان وجود داشته باشد که بتوان از میان آنها انتخاب کرد. بنابراین، گزینههای موجود را باید در یک لیست ذخیره کرد.
1adjList=["wild","fluffy","hilarious"]
اکنون، باید این امکان فراهم شود که از میان صفتهای تخصیص یافته به adj2 ،adj1 و adj3 انتخاب کرد. برای انجام این کار، از کتابخانه تصادفی استفاده میشود. مثالی از کتابخانه تصادفی که پیش از این نیز ارائه شده بود، به صورت زیر است.
1from random import randint
2roll=randint(1, 6)
3print(roll)
استفاده از کتابخانه random برای انتخاب تصادفی صفتها
پرسشی که در این وهله مطرح میشود این است که چگونه میتوان از کتابخانه random و متد randint برای انتخاب تصادفی صفتها استفاده کرد؟ نوع متغیر اندیسهای لیست از نوع صحیح است. با توجه به این نکته، میتوان کدی نوشت که یک نام تصادفی را به متغیرهای adj2 ،adj1 و adj3 تخصیص دهد. هنگامی که قطعه کد مد نظر کودک آماده شد، میتوان آن را با قطعه کد موجود در زیر مقایسه کرد.
1minindex=0
2maxindex=len(adjList)-1
3index1=randint(minindex,maxindex)
4adj1=adjList[index1]
5index2=randint(minindex,maxindex)
6adj2=adjList[index2]
7index3=randint(minindex,maxindex)
8adj3=adjList[index3]
هدف از نوشتن این کد، تولید یک عدد تصادفی متناظر با اندیس هر صفت در لیست صفتها ممکن است. این کار به صورت زیر انجام میشود.
- تعریف مقادیر اندیس بیشینه و کمینه احتمالی (خط ۱ و ۲). زیرا اندیسگذاری با ۰ آغاز میشود، بالاترین عددی که میتوان اندیس کرد همواره برابر با طول لیست منهای ۱ است (باید به خاطر داشت که اندیسگذاری لیستها در پایتون از صفر شروع میشود).
- تعریف اندیسی که یک عدد تصادفی با مقادیر بیشینه و کمینه را میگیرد (خط ۳).
- ذخیرهسازی صفتها در این اندیس، به عنوان متغیرهایی که باید استفاده شوند (خط ۴).
- سه بار تکرار قطعه کد بالا
اکنون که تخصیص متغیر صفتها انجام شد، کار مشابهی برای دیگر متغیرها نیز انجام میشود. کاربر میخواهد یک placeList و nounList بسازد و متد randint را برای انتخاب یک متغیر تصادفی از لیست مورد استفاده قرار دهد.
کد کامل
پس از آن که تنظیم تخصیص تصادفی برای هر متغیر انجام شد، میتوان آن را با متغیرهای جمله ترکیب کرد. ترتیبی که دستورات وارد میشوند در پایتون حائز اهمیت است. بنابراین اگر جمله پیش از افزودن قطعه کد مربوط به تخصیص تصادفی متغیر وارد شود، کد با خطا مواجه میشود. باید اطمینان حاصل کرد که همه متغیرها پیش از استفاده از آنها تعریف شده باشند. کد نهایی، شبیه به کد زیر خواهد بود.
1from random import randint
2adjList=["wild","fluffy","hilarious"]
3placeList=["Chicago","China","Brazil"]
4nounList=["telephone", "karate", "toilet"]
5minindex=0
6maxindex=len(adjList)-1
7index1=randint(minindex,maxindex)
8adj1=adjList[index1]
9index2=randint(minindex,maxindex)
10adj2=adjList[index2]
11index3=randint(minindex,maxindex)
12adj3=adjList[index3]
13minindex=0
14maxindex=len(placeList)-1
15index1=randint(minindex,maxindex)
16place1=placeList[index1]
17index2=randint(minindex,maxindex)
18place2=placeList[index2]
19index3=randint(minindex,maxindex)
20place3=placeList[index3]
21minindex=0
22maxindex=len(adjList)-1
23index1=randint(minindex,maxindex)
24noun1=nounList[index1]
25index2=randint(minindex,maxindex)
26noun2=nounList[index2]
27index3=randint(minindex,maxindex)
28noun3=nounList[index3]
29sentence1= "Last year, I went on a "+adj1+" trip to "+place1+"."
30sentence2= "The weather there was "+adj2+", and I couldn't wait to eat a big "+noun1+" while I was there."
31sentence3="Next year, I want to go to "+place2+", because I've always wanted to see the "+adj3+" "+noun2+"."
32print (sentence1,sentence2,sentence3)
خروجی حاصل از اولین اجرای کد
Last year, I went on a fluffy trip to Brazil. The weather there was fluffy, and I couldn't wait to eat a big telephone while I was there. Next year, I want to go to Brazil, because I've always wanted to see the hilarious karate.
خروجی حاصل از دومین اجرای کد
Last year, I went on a hilarious trip to China. The weather there was fluffy, and I couldn't wait to eat a big telephone while I was there. Next year, I want to go to Brazil, because I've always wanted to see the wild karate.
همانطور که مشهود است، داستان هر بار که کد مجددا اجرا میشود، تغییر میکند.
هر چه متغیرهای تعریف شده در متن بیشتر باشند و گزینههای بیشتری برای انتخاب از میان آنها وجود داشته باشد، داستانهای جالبتری میتوان ساخت.
اگر نوشته بالا برای شما مفید بوده است، آموزشهای زیر نیز به شما پیشنهاد میشوند:
- مجموعه آموزشهای برنامهنویسی پایتون Python
- آموزش برنامهنویسی پایتون – مقدماتی
- مجموعه آموزشهای دادهکاوی و یادگیری ماشین
- آموزش تکمیلی برنامهنویسی پایتون
- زبان برنامهنویسی پایتون (Python) — از صفر تا صد
- یادگیری علم داده (Data Science) با پایتون — از صفر تا صد
- آموزش پایتون (Python) — مجموعه مقالات جامع وبلاگ فرادرس
^^
سلام.
خانم حصارکی خیلی عالی و با حوصله توضیح دادید. ممنون.
فرشید شیرافکن
ممنونم خیلی وقته دوست داشتم pythonیاد بگیرم
عالی بود ممنونم