ابزار برنامهنویسی پایتون توسط Guido van Rossum ساخته شده و نام آن از گروه کمدی مونتی پایتون الهامگرفته شده است. پایتون در ابتدا یک پروژه تفریحی بود که در سال 1991 منتشر شد و از آن زمان تا به امروز به یکی از محبوبترین زبانهای برنامهنویسی تبدیل شده است. پایتون در مقایسه با اسکرچ که یک محیط برنامهنویسی بصری است، یک زبان برنامهنویسی مبتنی بر متن است: برنامهنویسان میتوانند با استفاده از دستورالعملهای متنی و یک قالب خاص، شروع به کدنویسی کنند. این زبان برنامهنویسی به دلیل سادگی و قدرتمند بودنش، در پروژههای مختلفی مورداستفاده قرار میگیرد.
برای کسانی است که قبلاً از اسکرچ استفاده کردهاند، پایتون یک گزینه عالی است. پایتون نسبت به اسکرچ انعطافپذیری بیشتری دارد و البته محیط آن «سنتیتر» هم هست. البته این به معنای این نیست که یادگیری آن دشوار است: با کمی تمرین، هر کسی میتواند با هر هدفی از محاسبات ساده گرفته تا بازیهای پیچیده را در پایتون برنامهنویسی کند.
این فصل بر پایه اصطلاحات و مفاهیمی است که در فصل 4 با موضوع برنامهنویسی با اسکرچ 3 مطرح شد؛ بنابراین اگر هنوز تمرینهای فصل قبل را انجام ندادهاید، بهتر است ابتدا به سراغ فصل قبل بروید. تنها در این صورت است که میتوانید مطالب این فصل را خیلی راحتتر یاد بگیرید.

نوارابزار/ : Toolbar یک نوارابزار با آیکونهای کاربرپسند است که به شما امکان انجام کارهای متفاوتی را در پایتون اعم از ایجاد، ذخیره، بارگذاری و یا اجرای یک پروژه میدهد. علاوه بر این، کاربران میتوانند برنامههای خود را به روشهای مختلف تست و آزمایش کنند.
ناحیه اسکریپتنویسی/ Script Area: اینجا در واقع جایی است که برنامههای پایتون را مینویسید. این ناحیه به دو قسمت تقسیم شده است: قسمت اصلی برای برنامهنویسی است و یک نوار حاشیهای هم وجود دارد که شماره خطوط را نشان میدهد.
پوسته پایتون/ Python Shell: پوسته پایتون به شما این امکان را میدهد تا دستورات جداگانهای را تایپ کنید که بلافاصله پس از فشاردادن کلید ENTER اجرا میشوند. در این قسمت همچنین اطلاعاتی درباره برنامههای در حال اجرا نمایش داده میشود.
Thonny دو نسخه رابط کاربری دارد: «حالت معمولی» و «حالت ساده» که دومی برای مبتدیان بهتر است. در این فصل از رابط کاربری ساده استفاده میکنیم که در واقع حالت پیشفرضی است که وقتی Thonny را از قسمت برنامهنویسی منوی رزبری باز میکنید، خواهید دید.
مشابه سایر برنامههای از پیش نصب شده در رزبری پای، Thonny هم از طریق منو قابلدسترسی است. کافی است روی آیکون رزبری کلیک کرده، ماوس را روی Programming قرار دهید و بعد روی Thonny Python IDE کلیک کنید. پس از چند ثانیه، رابط کاربری Thonny (به طور پیشفرض در حالت ساده) لود میشود.
Thonny یک محیط توسعه یکپارچه یا IDE است که یک نام پیچیده؛ اما توضیح سادهای دارد. در این پکیج تمام ابزارهای مختلفی که برای نوشتن یا توسعه نرمافزار نیاز است، در یک رابط کاربری تجمیع شده است. IDE های مختلف بسیاری در دسترس هستند که برخی از آنها از بسیاری از زبانهای برنامهنویسی مختلف پشتیبانی میکنند در حالی که برخی دیگر، مانند Thonny، بر پشتیبانی از یک زبان برنامهنویسی متمرکز هستند.
وقتی کلید ENTER را فشار دهید، خواهید دید که برنامه بلافاصله اجرا میشود: پایتون در همان ناحیه پوسته با ارسال پیام Hello, World! (شکل زیر) پاسخ شما را خواهد داد. دلیل این است که پوسته مستقیماً به مفسر پایتون متصل است. کار مفسر پایتون چک کردن دستورات شما و تفسیر آنها است. این حالت تعاملی شبیه به یک مکالمه است که در آن هر بار که دستوری را وارد میکنید، مفسر پایتون آن را تفسیر کرده و پاسخ مناسب میدهد.

پایتون پیام !Hello, World را در پوسته چاپ میکند.
اگر برنامه اجرا نشد و بهجای آن پیامی با عنوان SYNTAX ERROR در ناحیه پوسته نمایش داده شد، یعنی در چیزی که نوشتهاید اشتباهی وجود دارد. در پایتون باید دستورات را به روش بسیار خاصی بنویسید. اگر یک پرانتز یا حتی یک علامت نقلقول جا بیندازید، کلمه ‘print’ را اشتباه تایپ کنید، کلمه print را با P بزرگ بنویسید، یا حتی نمادهای اضافی در جایی از دستور اضافه کنید؛ برنامه اجرا نمیشود. پس دوباره دستور را تایپ کنید و مطمئن شوید که طبق توضیحاتی که دادیم، دستور را تایپ کردهاید و سپس کلید ENTER را فشار دهید.
در پایتون علاوه بر استفاده از حالت تعاملی (Interactive Mode)، میتوانید برنامههای خود را در ناحیه اسکریپت (Script Area) هم بنویسید. از حالت تعاملی معمولاً برای تست سریع دستورات استفاده میشود. بااینحال برای نوشتن برنامههای کاملتر و پیچیدهتر، از ناحیه اسکریپت استفاده میشود. در این ناحیه میتوانید چند خط کدنویسی کنید و سپس همه را با هم اجرا کنید. بدین منظور در ناحیه اسکریپت در وسط پنجره Thonny کلیک کنید و کدنویسی را شروع کنید.
|
1 |
print("Hello, World!") |
وقتی کلید ENTER را فشار میدهید، هیچ اتفاقی نمیافتد، مگر اینکه یک خط جدید و خالی در ناحیه اسکریپت ایجاد شود. برای اینکه در این حالت برنامه کار کند، باید روی آیکون Run در نوارابزار Thonny کلیک کنید. سپس از شما خواسته میشود که برنامه را ذخیره کنید. یک اسم مانند Hello World وارد کرده و روی دکمه Save کلیک کنید. پس از ذخیره، دو پیام در ناحیه پوسته پایتون ظاهر خواهد شد (شکل 2-5):
|
1 2 3 |
>>> %Run 'Hello World.py' Hello, World! |

اجرای ساده برنامه
در خط اول به مفسر پایتون گفته میشود که برنامه را Run یا اجرا کند. خط دوم در واقع خروجی برنامه است، یعنی همان پیامی که به پایتون گفته شده چاپ کند.
تبریک! حال اولین برنامه پایتون خود را در هر دو حالت تعاملی و اسکریپت نوشته و ران کردید.
ببینید آیا میتوانید پیامی که برنامه پایتون بهعنوان خروجی نمایش میدهد را تغییر دهید؟ اگر قرار بود دستورات بیشتری اضافه کنید، از حالت تعاملی استفاده میکردید یا اسکریپت؟ اگر پرانتزها یا علامتهای نقلقول را حذف کنید، چه اتفاقی میافتد؟
همانطور که در اسکرچ از بلوکهای پازل مانند برای کنترل و ساخت بخشهای مختلف برنامه استفاده میشود، پایتون نیز روش خاص خود را برای کنترل ترتیب اجرای برنامهها دارد:
تورفتگی (indentation). برای ساخت یک برنامه جدید، بر روی آیکون New در نوارابزار Thonny کلیک کنید. به این صورت بدون اینکه برنامه قبلی پاک شود، میتوانید یک برنامه جدید بسازید. در واقع Thonny یک زبانه جدید بالای ناحیه اسکریپت ایجاد خواهد کرد. با تایپکردن کد زیر شروع کنید:
|
1 2 3 |
print("Loop starting!") for i in range(10): |
در خط اول یک پیام ساده در پوسته چاپ میشود، درست مثل برنامه Hello World .
در خط دوم یک حلقه مشخص شروع میشود که عملکرد آن مشابه اسکرچ است:
یک شمارنده به نام i به حلقه و یک سری اعداد (که به آن دستور range گفته میشود، از عدد 0 شروع و تا عدد 10 بشمرد اما هیچوقت به 10 نمیرسد ) اختصاص مییابد.
علامت دو نقطه (:) در پایتون به این معناست که دستور بعدی باید بخشی از حلقه باشد.
اگر بهخاطر داشته باشید در اسکرچ، دستورات به شکل بلوکهایی در یک حلقه C شکل قرار میگرفتند. پایتون از روش متفاوتی استفاده میکند: تورفتگی کد (indentation). خط بعدی با چهار اسپیس (space) شروع میشود. وقتی پس از خط دو بار کلید ENTER را فشار دهید، Thonny این اسپیسها را اضافه میکند:
|
1 |
print("Loop number", i) |
این فضاهای خالی/ اسپیسها باعث میشوند که این خط نسبت به خطوط دیگر تورفتگی داشته باشد. تورفتگی روشی است که پایتون برای تشخیص تفاوت دستوراتی که خارج از حلقه هستند و دستوراتی که داخل حلقه هستند، استفاده میکند. این تورفتگی در پایتون بهعنوان تودرتو (nested) شناخته میشود.
وقتی در پایان خط سوم کلید ENTER را فشار دهید، Thonny به طور خودکار در خط بعدی تورفتگی ایجاد میکند. دلیل این است که فرض میکند این خط بخشی از حلقه است. برای حذف این تورفتگی، کافی است قبل از تایپکردن خط چهارم فقط یکبار کلید BACKSPACE را فشار دهید:
|
1 |
print("Loop finished!") |
حال برنامه چهار خطی شما کامل شده است.
خط اول خارج از حلقه قرار دارد و فقط یکبار اجرا خواهد شد؛
خط دوم حلقه را مشخص میکند؛
خط سوم داخل حلقه قرار دارد و هر بار که حلقه اجرا شود، آن هم یکبار اجرا خواهد شد.
خط چهارم هم خارج از حلقه قرار دارد.
|
1 2 3 4 5 6 7 |
print("Loop starting!") for i in range(10): print("Loop number", i) print("Loop finished!") |
موارد بالا میبایست منطبق با الگو باشد
روی آیکون Run کلیک کنید، برنامه را با نام Indentation ذخیره کنید و سپس ناحیه پوسته را برای مشاهده خروجی بررسی کنید (شکل 3-5):
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
Loop starting! Loop number 0 Loop number 1 Loop number 2 Loop number 3 Loop number 4 Loop number 5 Loop number 6 Loop number 7 Loop number 8 Loop number 9 Loop finished! |

اجرای یک حلقه
پایتون یک زبان برنامهنویسی مبتنی بر صفر است، به این معنی که شمارش را از 0 شروع میکند نه از 1 (به همین دلیل برنامه اعداد 0 تا 9 را چاپ میکند نه 1 تا 10). میتوانید این روش را با تغییر دستور range(10) به range(1, 11) یا هر بازه دیگری که دوست دارید، تغییر دهید.
تورفتگی اگرچه یکی از ویژگیهای قدرتمند پایتون است؛ اما یکی از دلایلی است که باعث میشود برنامه عملکرد موردانتظار شما را نداشته باشد. این موضوع به حدی است که هنگام جستجوی مشکلات در یک برنامه، فرایند دیباگینگ دو بار تورفتگی را بررسی میکند. بهخصوص وقتی حلقهها تودرتو میشوند (nesting loops).
یکی دیگر از ویژگیهای پایتون، پشتیبانی از حلقههای بینهایت است که بدون پایان اجرا میشوند. برای اینکه یک حلقه مشخص را به یک حلقه بینهایت تبدیل کنید، کافی است خط دوم را بهصورت زیر تغییر دهید:
|
1 |
while True: |
اگر روی آیکون Run کلیک کنید، این خطا را خواهید دید: name ‘i’ is not defined. به این صورت خطی که متغیر ‘i’ را تعریف و به آن مقدار اختصاص میدهد، حذف میشود. برای رفع این موضوع، خط 3 را ویرایش کنید تا این متغیر حذف شود:
|
1 |
print("Loop running!") |
روی آیکون Run کلیک کنید. سپس پیام Loop starting! را خواهید دید که به دنبال آن یک استرینگ بیپایان از پیامهای Loop running چاپ میشود (شکل 4-5). پیام Loop finished! را هرگز نخواهید دید، چون حلقه بیپایان است: هر بار که پایتون نمایش پیام Loop running! را به اتمام میرساند، به ابتدای حلقه باز میگردد و دوباره آن را نمایش میدهد.
شکل زیر: یک حلقه بینهایت تا زمانی که برنامه را متوقف کنید، ادامه مییابد
روی آیکون Stop در نوارابزار Thonny کلیک کنید تا برنامه کاری که انجام میدهد را متوقف کند. پیامی در ناحیه پوسته Python ظاهر میشود و سپس برنامه متوقف خواهد شد و هرگز به خط 4 نخواهد رسید.
آیا میتوانید حلقهای را تغییر دهید؟
آیا میتوانید یک حلقه مشخص دیگر به برنامه اضافه کنید؟
چگونه میتوانید یک حلقه در یک حلقه دیگر اضافه کنید؟
اگر حلقهای در حلقه دیگر تعریف شود، چه عملکردی خواهد داشت؟
متغیرها، همانطور که در همه زبانهای برنامهنویسی وجود دارند، در پایتون هم برای کنترل حلقهها و بسیاری موارد دیگر استفاده میشوند. با کلیک بر روی آیکون New در منوی Thonny، ساخت یک برنامه جدید را شروع کنید. سپس موارد زیر را در قسمت اسکریپت تایپ کنید:
|
1 |
userName = input ("What is your name? ") |
روی آیکون Run کلیک کنید و برنامه را با نام Name Test ذخیره کنید و ببینید چه اتفاقی در پوسته میافتد:
از شما خواسته میشود که نام خود را وارد کنید. نام خود را در پوسته وارد کنید و کلید ENTER را فشار دهید. ازآنجاییکه این تنها دستور برنامه است، اتفاق دیگری نخواهد افتاد (شکل زیر). اگر بخواهید کاری طبق دادههایی که در متغیر وارد کردهاید انجام شود، باید خطوط بیشتری در برنامه داشته باشید.

تابع ورودی به شما این امکان را میدهد که از کاربر بخواهید دادههایی را به عنوان ورودی تایپ کند.
برای اینکه برنامه بتواند بر اساس نام وارد شده کاری انجام دهد، باید یک دستور شرطی اضافه کنید. بدین منظور کد زیر را تایپ کنید:
|
1 2 3 4 5 6 7 |
if userName == "Clark Kent": print("You are Superman!") else: print("You are not Superman!") |
یکی از قابلیتهای Thonny این است که تشخیص میدهد کد کجا به تورفتگی نیاز دارد و بنابراین این کار را بهصورت خودکار انجام میدهد. بااینحال قادر به تشخیص این موضوع نیست که کد کجا دیگر به این تورفتگی نیاز ندارد. به همین دلیل باید هر جا لازم است این فضاهای خالی (spaces) را حذف کنید.
روی آیکون Run کلیک کنید و نام خود را در ناحیه پوسته وارد کنید. اگر نام شما چیزی غیر از Clark Kent باشد، این پیام را خواهید دید:
You are not Superman!
حال روی Run کلیک کنید و این بار نام Clark Kent را وارد کنید. توجه کنید که ابتدای این دو کلمه را با حروف بزرگ C و K تایپ کنید. این بار، برنامه تشخیص میدهد که شما در واقع سوپرمن هستید:
You are Superman

علامت == به پایتون میگویند که یک مقایسه انجام دهد و بررسی کند که آیا متغیر userName با متن برنامه – که به اسم استرینگ شناخته میشود – مطابقت دارد یا نه.
اگر با اعداد کار میکنید، موارد دیگری هم هست که میتوانید مقایسه کنید: > برای بررسی اینکه آیا یک عدد از عدد دیگر بزرگتر است یا نه. < برای بررسی اینکه آیا عدد موردنظر از عدد دیگر کمتر است یا نه و => برای بررسی اینکه آیا عدد موردنظر مساوی یا بزرگتر از عدد دیگر هست یا نه. علامت != هم به معنای «مساوی نیست» است که دقیقاً مخالف == است. این سیمبل یا نشانهها بهعنوان عملگرهای مقایسه شناخته میشوند.

تا زمانی که بگویید اسم شما Clark Kent است، برنامه نام شما را میپرسد.
راه استفاده از متغیرها این است که تفاوت بین = و == را یاد بگیرید. بهخاطر داشته باشید:
اگر این دو علامت را اشتباه بگیرید، احتمالاً (حتماً) برنامهای که مینویسید کار نمیکند!
از این عملگرها در حلقهها هم میتوان استفاده کرد. بدین منظور خطوط 2 تا 5 را حذف کنید و سپس متن زیر را جایگزین کنید:
|
1 2 3 4 5 6 7 |
while userName != "Clark Kent": print("You are not Superman - try again!") userName = input ("What is your name? ") print("You are Superman!") |
دوباره روی آیکون Run کلیک کنید. تا زمانی که تأیید کند شما Superman هستید، حلقه سؤالکردن اسم شما ادامه پیدا خواهد کرد (شکل 7-5) – شبیه به یک رمز عبور بسیار ساده. برای اینکه از حلقه خارج شوید، عبارت Clark Kent را تایپ کنید یا روی آیکون Stop در نوار ابزار Thonny کلیک کنید.
تبریک!
حال میدانید چگونه از دستورات شرطی و عملگرهای مقایسهای استفاده کنید.
آیا میتوانید برنامه را بهگونهای تغییر دهید که بیش از یک سؤال بپرسد و پاسخها در چندین متغیر ذخیره شوند؟
آیا میتوانید برنامهای بنویسید که با استفاده از دستورات شرطی و عملگرهای مقایسهای مشخص کند که آیا عدد وارد شده بیشتر از 5 است یا کمتر از آن؟
(مانند برنامهای که در قسمت های قبلی به عنوان برنامهنویسی با اسکرچ ساختید).
سیسوگ با افتخار فضایی برای اشتراک گذاری دانش شماست. برای ما مقاله بنویسید.