Professional Documents
Culture Documents
آموزش پایتون به زبان ساده
آموزش پایتون به زبان ساده
بی شک این اثر ،خالی از اشکال نیست و از شما خوانندگان عزیز میخواهم که با نظرات و پیشنهادات خود بنده را در تکمیل و رفع نواقص آن از طریق پست
مراجعه فرمایید. برای دریافت فایلها و آپدیتهای جدید این کتاب به سایت www.w3-farsi.com
IDتلگرام@ebrahimi_younes :
پایتون چیست
پایتون ) (Pythonیک زبان برنامهنویسی همه منظوره ،شیءگرا و متن باز است که توسط خودو فان راسام )(Guido van Rossum
در سال 1991در کشور هلند طراحی شد .این زبان از زبانهای برنامهنویسی مفسر بوده و به صورت کامل یک زبان شیءگرا است که به
زبانهای تفسیری Perlو Rubyشباهت دارد و از مدیریت خودکار حافظه استفاده میکند.
پایتون ،کد باز ) (Open Sourceاست ،زبانی که گوگل و یا یاهو از آن به عنوان یکی از اصلی ترین ابزارهای توسعه استفاده می کنند.
برنامه های پایتون مثل PHPقابل اجرا روی اغلب سیستم عامل هاست .پایتون ،دستور زبانی شبیه گفتار ساده ی انگلیسی دارد و با دارا
سادگی و خوانایی از ویژگیهای بارز زبان برنامهنویسی پایتون است ،آنچنان ساده که حتی کودکان نیز قادر به آموختن آن هستند و قدرت
در کنار این سادگی و خوانایی ،معجزه پایتون میباشد .از نگاه هر برنامهنویسی ،برنامههای پایتون مجموعهای از کدهای زیبا هستند ،بدون
هیچ آشفتگی و پیچیدگی .جالب است بدانید مایکروسافت نیز این زبان را با نام IronPythonدر تکنولوژی .Netخود گنجانده است.
هم اکنون پایتون در شرکت ها و سازمان های بزرگی مثل ناسا و گوگل و یاهو و … به صورت گسترده مورد استفاده قرار می گیرد .تا کنون
نسخه های مختلفی از این زبان ارائه شده است که لیست آنها را در جدول زیر میشاهده می کنید:
حال که با پایتون به طور مختصر آشنا شدید ،در درس های بعد در مورد این زبان برنامه نویسی بیشتر توضیح می دهیم.
و ویرایش کدها ،پیدا کردن خطاها ،نمایش خروجی ،و برخی موارد دیگر کمک می کنند .برای اجرای کدهای Pythonمحیط های مختلفی
وجود دارد که ساده ترین آنها IDELمی باشد .برای دانلود این محیط کدنویسی ،بر روی لینک زیر کلیک کنید:
https://www.python.org/downloads
با کلیک بر روی لینک باال ،صفحه ای به صورت زیر باز می شود ،که در این صفحه همانطور که در شکل زیر مشاهده می کنید ،بر روی دکمه
ای که با فلش نشان داده شده کلیک کرده ،تا آخرین نسخه IDELدانلود شود:
بعد از دانل ود فایل مورد نظر به محل ذخیره آن رفته و بر روی فایل دو بار کلیک کنید .سپس در صفحه ای که به صورت زیر نمایش داده
می شود ،تیک مورد نظر را زده و سپس بر روی گزینه Customize installiationکلیک کنید:
4 فصل اول :مبانی زبان پایتون
بعد از کلیک بر روی گزینه مذکور صفحه ای به صورت زیر نمایش داده می شود .در این صفحه بر روی دکمه Nextکلیک کنید:
در صفحه بعد بر روی دکمه Installکلیک کرده و منتظر بمانید تا برنامه نصب شود:
فصل اول :مبانی زبان پایتون 5
در آخر و بعد از نصب کامل برنامه پیغامی مبنی بر موفقیت آمیز بودن ،نصب برنامه به شما نمایش داده می شود و شما می توانید دکمه
Closeرا بزنید:
6 فصل اول :مبانی زبان پایتون
در صفحه باز شده به صورت زیر بر روی منوی Fileو سپس گزینه New Fileکلیک کنید:
با کلیک بر روی گزینه New Fileصفحه ای به صورت زیر نمایش داده می شود که شما می توانید کدهای خود را در داخل آن بنویسید:
8 فصل اول :مبانی زبان پایتون
سپس یک مسیر برای ذخیره فایل انتخاب کنید .ما در شکل زیر فایل را در درایو Cذخیره کرده ایم:
01 فصل اول :مبانی زبان پایتون
بعد از ذخیره فایل به محیط کدنویسی بر گشته و از منوی Runگزینه Run Moduleو یا دکمه F5را بزنید:
فصل اول :مبانی زبان پایتون 11
مشاهده می کنید که برنامه اجرا شده و پیغام !Welcome to Python tutorialsچاپ می شود:
مثال باال سادهترین برنامه ای است که شما میتوانید در Pythonبنویسید .هدف در مثال باال نمایش یک پیغام در صفحه نمایش است.
هر زبان برنامه نویسی دارای قواعدی برای کدنویسی است .پایتون دارای متدهای از پیش تعریف شده ای است که هر کدام برای مقاصد
خاصی به کار می روند .هر چند که در آینده در مورد متدها بیشتر توضیح می دهیم ولی در همین حد به توضیح متد بسنده می کنیم که
متدها مجموعه ای از کدها هستند که دارای یک نام بوده و در جلوی نام آنها عالمت () قرار می گیرد .یکی از این متدها ،متد)(print
است .از متد )( printبرای چاپ یک رشته استفاده میشود .یک رشته گروهی از کاراکترها است ،که به وسیله دابل کوتیشن (“) محصور
شده است .مانند .“!Welcome to Python Tutorials” :یک کاراکتر میتواند یک حرف ،عدد ،عالمت یا … باشد .در کل مثال باال
نحوه استفاده از متد )( printاست .توضیحات بیشتر در درسهای آینده آمده است .پایتون فضای خالی باال را نادیده میگیرد و از کد
(print
;)"!"Welcome to Python Tutorials
همیشه به یاد داشته باشید که Pythonبه بزرگی و کوچکی حروف حساس است .یعنی به طور مثال MANو manدر Pythonبا هم
فرق دارند .رشته ها و توضیحات از این قاعده مستثنی هستند که در درسهای آینده توضیح خواهیم داد .مثالً کدهای زیر با خطا مواجه
تغییر در بزرگی و کوچکی حروف از اجرای کدها جلوگیری میکند .اما کد زیر کامالً بدون خطا است:
در زبان هایی مثل جاوا و سی شارپ ،از عالمت آکوالد ({}) برای ایجاد یک بالک کد
Block
{
;statement
}
ولی در زبان پایتون از ترکیب عالمت دو نقطه ( ):و تو رفتگی برای اینکار استفاده می شود:
Block:
;statement
ما با دونقطه به پایتون میگوییم که قصد داریم یک بلوک کد را آغاز کنیم و با تو رفتگی ابتدای خطوط دستورات آن بلوک را تعریف میکنیم.
برای تورفتگی میتوانیم از 3یا 4یا 11فضای خالی استفاده کنیم .میزان این فضای خالی تا زمانی که در تمام کد رعایت شود ،اهمیتی
1 Block1:
2 ;statement
3 ;statement
4 Block2:
5 ;statement
6 Block3:
7 ;statement
8 ;statement
9 Block4:
10 ;statement
11 ;statement
12 ;statement
در کد باال ،بالک اول ) (Block1از خط 1تا 3را شام ل می شود .به این نکته توجه کنید که خطوط بعد از عالمت :حتما باید دارای تو
رفتگی باشند .بالک دوم ) (Block2از خط 4شروع و به خط 11ختم می شود .نکته ای که باید در اینجا دوباره به آن اشاره کنیم این
است که دستور یا بالک هایی که دارای فاصله های برابر از سمت چپ هست جزو یک بالک می باشند .مثال در کد باال خطوط 2و 3جز
Block1هستند چون تو رفتگی آنها از سمت چپ برابر است و اگر مثال فاصله های خط 3از سمت چپ را حذف کنیم دیگر جز بالک
محسوب نمی شود .یک بالک را می توان زیر مجموعه بالک دیگر کرد .مثال در خط Block3 ،6را زیر مجموعه Block2و در خط Block4 ،9
فصل اول :مبانی زبان پایتون 13
را زیر مجموعه Block3کرده ایم .در نهایت خط 11جز هیچکدام از بالک ها نیست و مستقل اجرا می شود .گاهی اوقات و هنگام
کدنویسی ،الزم است که رشته های طوالنی را در چند خط بنویسید .برای اینکار در پایتون می توان از عالمت \ به صورت زیر استفاده
کنید:
\ print("Welcome
\ to
\ Python
;)"!Tutorials
توضیحات
وقتی که کدی تایپ می کنید شاید بخواهید که متنی جهت یادآوری وظیفه آن کد به آن اضافه کنید .در ( Pythonو بیشتر زبانهای برنامه
نویسی) می توان این کار را با استفاده از توضیحات انجام داد .توضیحات متونی هستند که توسط مفسر نادیده گرفته می شوند و به
هدف اصلی از ایجاد توضیحات ،باال بردن خوانایی و تشخیص نقش کدهای نوشته شده توسط شما ،برای دیگران است .فرض کنید که
می خواهید در مورد یک کد خاص ،توضیح بدهید ،می توانید توضیحات را در باالی کد یا کنار آن بنویسید .از توضیحات برای مستند سازی
برنامه هم استفاده می شود .در برنامه زیر نقش توضیحات نشان داده شده است:
در کد باال ،خط اول کد باال یک توضیح درباره خط دو م است که به کاربر اعالم می کند که وظیفه خط دوم چیست ؟ با اجرای کد باال فقط
جمله Hello Worldچاپ شده و خط اول در خروجی نمایش داده نمی شود چون مفسر توضیحات را نادیده می گیرد .همانطور که
مشاهده می کنید برای درج توضیخات در پایتون از عالمت #استفاده می شود .برای توضیحات طوالنی هم باید در ابتدای هر خط از
کاراکترهای کنترلی
کاراکترهای کنترلی ،کاراکترهای ترکیبی هستند که با یک بک اسلش )\( شروع میشوند و به دنبال آنها یک حرف یا عدد میآید و یک
رشته را با فرمت خاص نمایش می دهند .برای مثال برای ایجاد یک خط جدید و قرار دادن رشته در آن میتوان از کاراکتر کنترلی \n
استفاده کرد:
04 فصل اول :مبانی زبان پایتون
;)"!print("Hello\nWorld
Hello
World
مشاهده کردید که مفسر بعد از مواجهه با کاراکتر کنترلی \nنشانگر ماوس را به خط بعد برده و بقیه رشته را در خط بعد نمایش میدهد.
ما برای استفاده از کاراکترهای کنترلی ،از بک اسلش )\( استفاده میکنیم .از آنجاییکه \ معنای خاصی به رشتهها میدهد برای چاپ
یکی از موارد استفاده از \\ ،نشان دادن مسیر یک فایل در ویندوز است:
از آنجاییکه از دابل کوتیشن )“( برای نشان دادن رشتهها استفاده میکنیم برای چاپ آن از ”\ استفاده میکنیم:
;)"print("Left\tRight
Left Right
برای چاپ کاراکترهای یونیکد میتوان از \uاستفاده کرد .برای استفاده از ،\uمقدار در مبنای 16کاراکتر را درست بعد از عالمت \uقرار
میدهیم .برای مثال اگر بخواهیم عالمت کپی رایت )©( را چاپ کنیم ،باید بعد از عالمت \uمقدار 00A9را قرار دهیم مانند:
;)"print("\u00A9
©
برای مشاهده لیست مقادیر مبنای 11برای کاراکترهای یونیکد به لینک زیر مراجعه نمایید:
http://www.ascii.cl/htmlcodes.htm
اگر مفسر به یک کاراکتر کنترلی غیر مجاز برخورد کند ،برنامه پیغام خطا میدهد .بیشترین خطا زمانی اتفاق می افتد که برنامه نویس برای
متغیر
متغیر مکانی از حافظه است که شما میتوانید مقادیری را در آن ذخیره کنید .میتوان آن را به عنوان یک ظرف تصور کرد که دادههای خود
را در آن قرار دادهاید .محتویات این ظرف میتواند پاک شود یا تغییر کند .هر متغیر دارای یک نام نیز هست .که از طریق آن میتوان متغیر
را از دیگر متغیرها تشخیص داد و به مقدار آن دسترسی پیدا کرد .همچنین دارای یک مقدار میباشد که میتواند توسط کاربر انتخاب شده
باشد یا نتیجه یک محاسبه باشد .مقدار متغیر میتواند تهی نیز باشد .متغیر دارای نوع نیز هست بدین معنی که نوع آن با نوع دادهای
متغیر دارای عمر نیز هست که از روی آن می توان تشخیص داد که متغیر باید چقدر در طول برنامه مورد استفاده قرار گیرد .و در نهایت
متغیر دارای محدوده استفاده نیز هست که به شما میگوید که متغیر در چه جای برنامه برای شما قابل دسترسی است .ما از متغیرها به
06 فصل اول :مبانی زبان پایتون
عنوان یک انبار موقتی برای ذخیره داده استفاده میکنیم .هنگامی که یک برنامه ایجاد میکنیم احتیاج به یک مکان برای ذخیره داده،
مقادیر یا دادههایی که توسط کاربر وارد میشوند ،داریم .این مکان ،همان متغیر است .
برای این از کلمه متغیر استفاده میشود چون ما می توانیم بسته به نوع شرایط هر جا که الزم باشد ،مقدار آن را تغییر دهیم .متغیرها
موقتی هستند و فقط موقعی مورد استفاده قرار می گیرند که برنامه در حال اجراست و وقتی شما برنامه را میبندید محتویات متغیرها نیز
پاک میشود .قبالً ذکر شد که به وسیله نام متغیر میتوان به آن دسترسی پیدا کرد .برای نامگذاری متغیرها باید قوانین زیر را رعایت کرد
:
نام متغیر باید با یکی از حروف الفبا ) (a-z or A-Zیا عالمت _ شروع شود.
نمیتوان از کلمات رزرو شده در پایتون برای نام متغیر استفاده کرد.
اسامی متغیرها نسبت به بزرگی و کوچکی حروف حساس هستند .در پایتون دو حرف مانند aو Aدو کاراکتر مختلف به حساب میآیند.
دو متغیر با نامهای myNumberو MyNumberدو متغیر مختلف محسوب میشوند چون یکی از آنها با حرف کوچک mو دیگری با حرف
بزرگ Mشروع میشود .متغیر دارای نوع هست که نوع دادهای را که در خود ذخیره میکند را نشان می دهد .در درس بعد در مورد انواع
داده ها در پایتون توضیح می دهیم .لیست کلمات کلیدی پایتون ،که نباید از آنها در نامگذاری متغیرها استفاده کرد در زیر آمده است:
انواع داده
انواع داده هایی که در پایتون وجود دارند عبارتند از:
توضیح نوع
به مجموعه ای از کاراکترها که بین دو عالمت کوتیشن یا دابل کوتیشن قرار گرفته باشند ،اطالق
رشته ای)(String
می شود.
مجموعه ای از آیتم ها هستند که بین دو عالمت [] قرار گرفته و با عالمت کاما ( ),از هم جدا شده
لیست)(List
اند.
مجموعه ای از آیتم ها هستند که بین دو عالمت () قرار گرفته و با عالمت کاما ( ),از هم جدا شده
تاپل)(Tuple
اند.
مجموعه ای از آیتم ها هستند که به صورت کلید و مقدار بوده ،بین دو عالمت {} قرار گرفته ،و با
دیکشنری)(Dictionary
عالمت کاما ( ),از هم جدا شده اند.
در مورد انواع داده های باال و نحوه استفاده از آنها در متغیرها ،در درس بعد توضیح می دهیم.
استفاده از متغیرها
بر خالف زبان هایی مثل جاوا و سی شارپ ،که هنگام تعریف متغیر باید نوع متغیر را هم مشخص می کردیم ،در پایتون کافیست که فقط
;variableName = Value
در مثال زیر نحوه تعریف و مقداردهی متغیرها نمایش داده شده است:
intVar = 10
floatVar = 12.5
boolVar = True
!StringVar = Hello World
08 فصل اول :مبانی زبان پایتون
در خطوط ، 1-7متغیر ها تعریف شده اند .اما نوع این متغیرها چیست؟ پایتون نوع متغیرها را بسته به مقداری که به آنها اختصاص داده
می شود در نظر می گیرد .مثال نوع متغیر StringVarدر خط 4از نوع رشته است ،چون یک مقدار رشته ای به آن اختصاص داده شده
است .به خطوط 6 ،5و 7کد باال توجه کنید .در خط 5یک متغیر تعریف شده است و نوع داده ای که به آن اختصاص داده شده است از
نوع listاست .همانطور که در درس قبل اشاره شد ،برای تعریف listعالمت [] به کار می رود و آیتم های داخل آن به وسیله کاما از
در خط 6هم یک متغیر تعریف شده است و یک مقدار از نوع tupleبه آن اختصاص داده شده است .در تعریف tupleبه جای عالمت
[] از () استفاده می شود .تفا وت بین این دو را در درس های آینده بیشتر توضیح می دهیم .و اما در خط 7یک نوع دیکشنری تعریف
شده است .برای تعریف دیکشنری بین کلید و مقدار عالمت :و بین کلید/مقدارها هم عالمت ,قرار می گیرد:
مثال در مثال باال یک دیکشنری تعریف کرده ایم که سه آیتم یا کلید/مقدار دارد که بین آنها عالمت کاما ( ),قرار داده ایم .ولی بین یک کلید
و مقدار مربوط به آن عالمت :قرار گرفته است .برای اختصاص یک مقدار به چند متغیر می توان به صورت زیر عمل کرد:
;)print(num1
;)print(num4
;)print(message1
;)print(message3
10
10
!Hello World
!Hello World
فصل اول :مبانی زبان پایتون 19
دقت کنید که برای مت غیرهای تعریف شده در حالت باال یک خانه حافظه تخصیص داده می شود ،یعنی مقدار 11در حافظه ذخیره شده و
متغیرهای num1و num2و num3و num4و num5به آن خانه از حافظه اشاره می کنند .همچنین می توان چند متغیر را تعریف کرد
;)print(num1
;)print(num2
;)print(message1
10
12.5
!Hello World
همانطور که در درس قبل هم اشاره کردیم ،یک رشته در اصل یک مجموعه از کاراکترهاست که در داخل عالمت “” یا ‘ ‘ قرار دارند .هر کدام
از این کاراکترها دارای یک اندیس است که به وسیله آن اندیس قابل دسترسی هستند .اندیس کاراکترها در رشته از 1شروع می شود.
در رشته باال اندیس کاراکتر Oبرابر 4است .برای درک بهتر به شکل زیر توجه کنید:
حال برای چاپ یک کاراکتر (مثل )Wاز این رشته کافیست که به صورت زیر عمل کنیم:
;)]print(message[6
W
همانطور که در کد باال مشاهده می کنید کافیست که نام متغیر را نوشته ،در جلوی آن یک جفت کروشه و در داخل کروشه ها اندیس آن
کاراکتری را که می خواهیم چاپ شود را بنویسیم .چاپ مقدار با استفاده از اندیس در مورد Listو Tupleهم صدق می کند:
;)]print(listVar[2
;)]print(tupleVar[1
8
Programming
و اما در مورد دیکشنری ،شما باید نام کلید را بنویسید تا مقدار آن برای شما نمایش داده شود:
;)]'print(dictionaryVar['Family
Scalia
نکته ای که بهتر است در همینجا به آن اشاره کنیم این است که کلید/مقدارها در دیکشنری می توانند از هر نوعی باشند و شما برای چاپ
مقدار مربوط به یک کلید باید نام کلید را دقیق بنویسید .به مثال زیر توجه کنید:
;)]'print(dictionaryVar['2
Scalia
در مثال باال ما مقدار کلید ‘ ’1را چاپ کرده ایم .حال اگر به جای ‘’ 1عدد 1را بنویسیم ،یعنی عالمت کوتیشن را نگذاریم با خطا مواجه می
شویم:
;)]print(dictionaryVar[2
جانگهدار)(Placeholders
به متد )( printدر خطوط ( ) 9-15توجه کنید .این متد به دو قسمت تقسیم شده است .قسمت اول یک رشته قالب بندی شده است و
و قسمت دوم هم شامل متدی به نام )( formatاست که دارای مقدار یا مقادیری است که توسط رشته قالب بندی شده مورد استفاده
قرار می گیرند .اگر به دقت نگاه کنید رشته قالب بندی شده دارای عدد صفری است که در داخل دو آکوالد محصور شده است .البته عدد
داخل دو آکوالد میتواند از صفر تا nباشد .به این اعداد جانگهدار می گویند .این اعداد بوسیله مقدار یا مقادیری که در داخل متد
فصل اول :مبانی زبان پایتون 11
)( formatهستند جایگزین میشوند .به عنوان مثال جانگهدار } {0به این معناست که اولین مقدار داخل متد )( formatدر آن قرار
;))print("The values are {0}, {1}, {2}, and {3}.".format(value1, value2, value3, value4
جانگهدارها از صفر شروع میشوند .تعداد جانگهدارها باید با تعداد مقادیری که در داخل متد )( formatآورده شده اند برابر باشد .برای
مثال اگر شما چهار جانگهدار مثل باال داشته باشید باید چهار مقدار هم برای آنها بعد از رشته قالب بندی شده در نظر بگیرید .اولین جانگهدار
با اولین مقدار و دومین جا نگهدار با دومین مقدار جایگزین می شود .در ابتدا فهمیدن این مفهوم برای کسانی که تازه برنامه نویسی را
شروع کردهاند سخت است اما در درسهای آینده مثالهای زیادی در این مورد مشاهده خواهید کرد.
عبارات و عملگرها
ابتدا با دو کلمه آشنا شوید:
مثالً :X+Yیک عبارت است که در آن Xو Yعملوند و عالمت +عملگر به حساب میآیند.
زبانهای برنامه نویسی جدید دارای عملگرهایی هستند که از اجزاء معمول زبان به حساب میآیند .پایتون دارای عملگرهای مختلفی از جمله
عملگرهای ریاضی ،تخصیصی ،مقایسهای ،منطقی و بیتی میباشد .از عملگرهای ساده ریاضی میتوان به عملگر جمع و تفریق اشاره کرد.
انواع مختلف عملگر که در این بخش مورد بحث قرار میگیرند ،عبارتند از:
عملگرهای منطقی
عملگرهای بیتی
عملگرهای ریاضی
: جدول زیر عملگرهای ریاضی پایتون را نشان میدهد.پایتون از عملگرهای ریاضی برای انجام محاسبات استفاده میکند
var3 وvar2 برابر است با حاصل جمعVar1 var1 = var2 + var3; Binary +
var3 وvar2 برابر است با حاصل تفریقVar1 var1 = var2 – var3; Binary –
var3 برvar2 برابر است با حاصل تقسیمVar1 var1 = var2 / var3; Binary /
var3 وvar2 برابر است با باقیمانده تقسیمVar1 var1 = var2 % var3; Binary %
var3 به توانvar2 برابر است با مقدارVar1 var1 = var2 ** var3; Unary **
برای+ اگر از عملگر. اما استفاده از عملگرهای ریاضی برای نوع رشتهای نتیجه متفاوتی دارد.مثال باال در از نوع عددی استفاده شده است
حال میتوانیم با ایجاد یک برنامه نحوه عملکرد عملگرهای ریاضی.رشتهها استفاده کنیم دو رشته را با هم ترکیب کرده و به هم میچسباند
برنامه باال نتیجه هر عبارت را نشان میدهد .در این برنامه از متد )( printبرای نشان دادن نتایج در سطرهای متفاوت استفاده شده
است .در خط 9برای اینکه ارقام کسری بعد از عدد حاصل دو رقم باشند از } {2:.2fاستفاده میکنیم {2:.2f} .در این جا بدین
معناست که عدد را تا دو رقم اعشار نمایش بده .پایتون خط جدید و فاصله و فضای خالی را نادیده میگیرد .در خط 17مشاهده میکنید
که دو رشته به وسیله عملگر +به هم متصل شدهاند .نتیجه استفاده از عملگر +برای چسباندن دو کلمه “ “Helloو ”“!World
رشته ” “!Hello Worldخواهد بود .به فاصله های خالی بعد از اولین کلمه توجه کنید اگر آنها را حذف کنید از خروجی برنامه نیز حذف
میشوند.
مقدار var1برابر است با حاصل جمع var1و var2 ;var1 += var2 =+
مقدار var1برابر است با حاصل تفریق var1و var2 ;var1 -= var2 =-
مقدار var1برابر است با حاصل ضرب var1در var2 ;var1 *= var2 =*
مقدار var1برابر است با حاصل تقسیم var1بر var2 ;var1 /= var2 =/
مقدار var1برابر است با باقیمانده تقسیم var1بر var2 ;var1 %= var2 =%
مقدار var1برابر است با var1به توان var2 ;var1 **= var2 =**
مقدار var1برابر است با حاصل تقسیم var1بر var2 ;var1 //= var2 =//
از عملگر = +برای اتصال دو رشته نیز میتوان استفاده کرد .استفاده از این نوع عملگرها در واقع یک نوع خالصه نویسی در کد است .مثال ً
شکل اصلی کد var1 += var2به صورت var1 = var1 + var2میباشد .این حالت کدنویسی زمانی کارایی خود را نشان میدهد
که نام متغیرها طوالنی باشد .برنامه زیر چگونگی استفاده از عملگرهای تخصیصی و تأثیر آنها را بر متغیرها نشان میدهد:
24 فصل اول :مبانی زبان پایتون
Assigning 10 to number...
Number = 10
Adding 10 to number...
Number = 20
Subtracting 10 from number...
Number = 10
در برنامه از 3عملگر تخصیصی استفاده شده است .ابتدا یک متغیر و مقدار 10با استفاده از عملگر = به آن اختصاص داده شده است.
سپس به آن با استفاده از عملگر = +مقدار 11اضافه شده است .و در آخر به وسیله عملگر = -عدد 11از آن کم شده است.
مقایسه دو مقدار درست باشد مقدار 1و اگر نتیجه مقایسه اشتباه باشد مقدار 1را نشان میدهند .این عملگرها به طور معمول در دستورات
شرطی به کار میروند به این ترتیب که باعث ادامه یا توقف دستور شرطی میشوند .جدول زیر عملگرهای مقایسهای در پایتون را نشان
میدهد:
var1در صورتی Trueاست که مقدار var2با مقدار var3برابر باشد در غیر اینصورت
var1 = var2 == var3 ==
Falseاست
var1در صورتی Trueاست که مقدار var2با مقدار var3برابر نباشد در غیر اینصورت
var1 = var2 != var3 =!
Falseاست
var1در صورتی Trueاست که مقدار var2با مقدار var3برابر نباشد در غیر اینصورت
var1 = var2 <> var3 ><
Falseاست
فصل اول :مبانی زبان پایتون 15
;num1 = 10
;num2 = 5
}print("{0 == }{1 : "}{2 .format(num1, num2, num1 == ;))num2
}print("{0 =! }{1 : "}{2 .format(num1, num2, num1 =! ;))num2
}print("{0 >< }{1 : "}{2 .format(num1, num2, num1 =! ;))num2
}print("{0 < }{1 : "}{2 .format(num1, num2, num1 < ;))num2
}print("{0 > }{1 : "}{2 .format(num1, num2, num1 > ;))num2
}print("{0 =< }{1 : "}{2 .format(num1, num2, num1 =< ;))num2
}print("{0 => }{1 : "}{2 .format(num1, num2, num1 => ;))num2
10 == 5 : False
10 != 5 : True
10 <> 5 : True
< 10 5 : False
> 10 5 : True
10 <= 5 : False
10 >= 5 : True
در مثال باال ابتدا دو متغیر را که میخواهیم با هم مقایسه کنیم را ایجاد کرده و به آنها مقادیری اختصاص میدهیم .سپس با استفاده از
یک عملگر مقایسهای آنها را با هم مقایسه کرده و نتیجه را چاپ میکنیم .به این نکته توجه کنید که هنگام مقایسه دو متغیر از عملگر ==
به جای عملگر = باید استفاده شود .عملگر = عملگر تخصیصی است و در عبارتی مانند x = yمقدار yرا در به xاختصاص میدهد.
عملگر == عملگر مقایسهای است که دو مقدار را با هم مقایسه میکند مانند x==yو اینطور خوانده میشود xبرابر است با .y
26 فصل اول :مبانی زبان پایتون
عملگرهای منطقی
عملگر های منطقی بر روی عبارات منطقی عمل می کنند و نتیجه آنها نیز یک مقدار بولی است .از این عملگرها اغلب برای شرطهای پیچیده
استفاده می شود .همانطور که قبال یاد گرفتید مقادیر بولی می توانند Falseیا Trueباشند .فرض کنید که var2و var3دو مقدار
بولی هستند.
مثال عملگر
اگر مقادیر دو طرف عملگر True ،andباشند عملگر andمقدار Trueرا بر می گرداند .در غیر اینصورت اگر یکی از مقادیر یا هر دوی
آنها Falseباشند مقدار Falseرا بر می گرداند .در زیر جدول درستی عملگر andنشان داده شده است:
برای درک بهتر تاثیر عملگر andیاد آوری می کنم که این عملگر فقط در صورتی مقدار Trueرا نشان می دهد که هر دو عملوند
مقدارشان Trueباشد.در غیر اینصورت نتیجه تمام ترکیبهای بعدی Falseخواهد شد .استفاده از عملگر andمانند استفاده از عملگرهای
مقایسه ای است .به عنوان مثال نتیجه عبارت زیر درست ) (Trueاست اگر سن ) (ageبزرگتر از 11و salaryکوچکتر از 1111باشد.
عملگر andزمانی کارامد است که ما با محدود خاصی از اعداد سرو کار داریم .مثال عبارت 10 <= x <= 100بدین معنی است که x
می تواند مقداری شامل اعداد 11تا 111را بگیرد .حال برای انتخاب اعداد خارج از این محدوده می توان از عملگر منطقی andبه صورت
اگر یکی یا هر دو مقدار دو طرف عملگر ،orدرست ) (Trueباشد ،عملگر orمقدار Trueرا بر می گرداند .جدول درستی عملگر or
در جدول باال مشاهده می کنید که عملگر orدر صورتی مقدار Falseرا بر میگرداند که مقادیر دو طرف آن Falseباشند .کد زیر را در
نظر بگیرید.نتیجه این کد در صورتی درست ) (Trueاست که رتبه نهایی دانش آموز ) (finalGradeبزرگتر از 75یا یا نمره نهایی
امتحان آن 111باشد.
برخالف دو اپراتور orو andعملگر منطقی NOTیک عملگر یگانی است و فقط به یک عملوند نیاز دارد .این عملگر یک مقدار یا اصطالح
بولی را نفی می کند .مثال اگر عبارت یا مقدار Trueباشد آنرا Falseو اگر Falseباشد آنرا Trueمی کند .جدول زیر عملکرد اپراتور
عملگرهای بیتی
عملگرهای بیتی به شما اجازه میدهند که شکل باینری انواع داده ها را دستکاری کنید .برای درک بهتر این درس توصیه میشود که شما
سیستم باینری و نحوه تبدیل اعداد دهدهی به باینری را از لینک زیر یاد بگیرید:
http://www.w3-farsi.com/?p=5698
28 فصل اول :مبانی زبان پایتون
در سیستم باینری (دودویی) که کامپیوتر از آن استفاده میکند وضعیت هر چیز یا خاموش است یا روشن .برای نشان دادن حالت روشن
از عدد 1و برای نشان دادن حالت خاموش از عدد 1استفاده میشود .بنابراین اعداد باینری فقط میتوانند صفر یا یک باشند .اعداد باینری
را اعداد در مبنای 1و اعداد اعشاری را اعداد در مبنای 11می گویند .یک بیت نشان دهنده یک رقم باینری است و هر بایت نشان دهنده
1بیت است .به عنوان مثال برای یک داده از نوع intبه 31بیت یا 4بایت فضا برای ذخیره آن نیاز داریم ،این بدین معناست که اعداد
از 31رقم 1و 1برای ذخیره استفاده میکنند .برای مثال عدد 111وقتی به عنوان یک متغیر از نوع intذخیره میشود در کامپیوتر به
000000000000000000000000000001100100
عدد 111در مبنای ده معادل عدد 1111111در مبنای 1است .در اینجا 7رقم سمت راست نشان دهنده عدد 111در مبنای 1است و مابقی
صفرهای سمت راست برای پر کردن بیتهایی است که عدد از نوع intنیاز دارد .به این نکته توجه کنید که اعداد باینری از سمت راست
به چپ خوانده میشوند .عملگرهای بیتی پایتون در جدول زیر نشان داده شدهاند:
مثال عملگر
عملگر بیتی ANDکاری شبیه عملگر منطقی ANDانجام میدهد با این تفاوت که این عملگر بر روی بیتها کار میکند .اگر مقادیر دو طرف
آن 1باشد مقدار 1را بر میگرداند و اگر یکی یا هر دو طرف آن صفر باشد مقدار صفر را بر میگرداند .جدول درستی عمگر بیتی ANDدر زیر
آمده است:
;)print(result
1
همانطور که در مثال باال مشاهده میکنید نتیجه عملکرد عملگر ANDبر روی دو مقدار 5و 3عدد یک میشود .اجازه بدهید ببینیم که
5: 00000000000000000000000000000101
3: 00000000000000000000000000000011
------------------------------------
1: 00000000000000000000000000000001
ابتدا دو عدد 5و 3به معادل باینریشان تبدیل میشوند .از آنجاییکه هر عدد صحیح ) 31 (intبیت است از صفر برای پر کردن بیتهای
خالی استفاده میکنیم .با استفاده از جدول درستی عملگر بیتی ANDمیتوان فهمید که چرا نتیجه عدد یک میشود.
اگر مقادیر دو طرف عملگر بیتی ORهر دو صفر باشند نتیجه صفر در غیر اینصورت 1خواهد شد .جدول درستی این عملگر در زیر آمده
است:
نتیجه عملگر بیتی ORدر صورتی صفر است که عملوندهای دو طرف آن صفر باشند .اگر فقط یکی از دو عملوند یک باشد نتیجه یک
;result = 7 | 9
;)print(result
15
وقتی که از عملگر بیتی ORبرای دو مقدار در مثال باال ( 7و )9استفاده میکنیم نتیجه 15میشود .حال بررسی میکنیم که چرا این نتیجه
7: 00000000000000000000000000000111
9: 00000000000000000000000000001001
-----------------------------------
15: 00000000000000000000000000001111
01 فصل اول :مبانی زبان پایتون
با استفاده از جدول درستی عملگر بیتی ORمیتوان نتیجه استفاده از این عملگر را تشخیص داد .عدد 1111باینری معادل عدد 15صحیح
است.
در صورتیکه عملوندهای دو طرف این عملگر هر دو صفر یا هر دو یک باشند نتیجه صفر در غیر اینصورت نتیجه یک میشود .در مثال زیر
;result = 5 ^ 7
;)print(result
2
در زیر معادل باینری اعداد باال ( 5و )7نشان داده شده است.
5: 00000000000000000000000000000101
7: 00000000000000000000000000000111
-----------------------------------
2: 00000000000000000000000000000010
با نگاه کردن به جدول درستی عملگر بیتی ،XORمیتوان فهمید که چرا نتیجه عدد 1میشود.
این عملگر یک عملگر یگانی است و فقط به یک عملوند نیاز دارد .در زیر جدول درستی این عملگر آمده است:
عملگر بیتی NOTمقادیر بیتها را معکوس میکند .در زیر چگونگی استفاده از این عملگر آمده است:
فصل اول :مبانی زبان پایتون 31
;result = 5 ^ 7
;)print(result
-8
به نمایش باینری مثال باال که در زیر نشان داده شده است توجه نمایید.
7: 00000000000000000000000000000111
------------------------------------
-8: 11111111111111111111111111111000
این نوع عملگرها به شما اجازه می دهند که بیتها را به سمت چپ یا راست جا به جا کنید .دو نوع عملگر بیتی تغییر مکان وجود دارد که
هر کدام دو عملوند قبول می کنند .عملوند سمت چپ این عملگرها حالت باینری یک مقدار و عملوند سمت راست تعداد جابه جاییبیت ها
این عملگر بیتهای عملوند سمت چپ را به تعداد nمکان مشخص شده توسط عملوند سمت راست ،به سمت چپ منتقل میکند .به
عنوان مثال:
;)print(result
40
در مثال باال ما بیتهای مقدار 11را دو مکان به سمت چپ منتقل کردهایم ،حال بیایید تأثیر این انتقال را بررسی کنیم:
10: 00000000000000000000000000001010
------------------------------------
40: 00000000000000000000000000101000
02 فصل اول :مبانی زبان پایتون
مشاهده میکنید که همه بیتها به اندازه دو واحد به سمت چپ منتقل شدهاند .در این انتقال دو صفر از صفرهای سمت چپ کم میشود
این عملگر شبیه به عمگر تغییر مکان به سمت چپ است با این تفاوت که بیتها را به سمت راست جا به جا میکند .به عنوان مثال:
;)print(result
6
با استفاده از عملگرتغییر مکان به سمت راست بیتهای مقدار 111را به اندازه 4واحد به سمت چپ جا به جا میکنیم .اجازه بدهید تأثیر
100: 00000000000000000000000001100100
------------------------------------
6: 00000000000000000000000000000110
هر بیت به اندازه 4واحد به سمت راست منتقل میشود ،بنابراین 4بیت اول سمت راست حذف شده و چهار صفر به سمت چپ اضافه
میشود.
عملگرهای خاص
عالوه بر عملگرهایی که تا کنون ذکر شد ،پایتون دارای عملگرهای خاص زیر نیز میباشد:
عملگرهای membershipکه بررسی میکنند آیا متغیر مورد نظر در یک مجموعه ) (sequenceهمچون رشتهlist ،یا
عملگرهای Identityکه مکانهای قرار گیری دو شیء را با هم مقایسه میکند (بررسی میکنند آیا دوشی با هم برابر
هستند یا خیر).
توضیح عملگر
در صورت یافتن متغیر مورد نظر در مجموعهی مشخص شده True ،و در غیر این
in Memberships operator
صورت Falseرا برمی گرداند.
فصل اول :مبانی زبان پایتون 33
در صورت یافت نشدن متغیر مورد نظر در مجموعهی مشخص شده True ،و در
not in
غیر این صورت Falseرا برمی گرداند.
اگر متغیرهای هر دو طرف عملگر به شی یکسان اشاره داشته باشند True ،و در
is
غیر این صورت Falseرا برمی گرداند.
Identity operator
چنانچه متغیر در دو طرف عملگر به شی یکسان اشاره داشته باشد False ،و در
is not
غیر این صورت Trueرا بر می گرداند.
True
False
در خط اول کد باال ،چک میشود که آیا عدد 5در مجموعه ] [3, 8, 5, 10وجود دارد یا نه؟ و چون وجود دارد مقدار Trueبر گردانده
میشود .در خط دوم هم که کامالً مشخص است که اگر عدد 5در مجموعه وجود نداشته باشد مقدار Trueبر گردانده میشود ولی چون
;number1 = 5
;number2 = 6
True
False
در مثال باال و در اولین مقایسه گفته شده است که آیا number1همان number2است و چون چنین نیست مقدار Falseو در مقایسه
دوم هم گفته شده است که آیا number1برابر number2نیست؟ و چون برابر نیستند مقدار Trueبرگردانده شده است.
را که شما در محیط برنامه نویسی تایپ میکنید تا زمانی که دکمه enterرا میزنید ،میخواند .به برنامه زیر توجه کنید:
Name is John.
Age is 18.
Height is 160.5.
ابتدا 3متغیر را برای ذخیره داده در برنامه تعریف میکنیم (خطوط 1و 1و .)3برنامه از کاربر میخواهد که نام خود را وارد کند (خط .)1
در خط 1شما به عنوان کاربر نام خود را وارد میکنید .سپس برنامه از ما سن را سؤال میکند (خط .)3در خط 6هم یک خط فاصله به
وسیله متد )( printایجاد کرده ایم تا بین ورودی های شما و خروجی فاصله ای جهت تفکیک ایجاد شود .حال برنامه را اجرا کرده و با
ساختارهای تصمیم
تقریبا همه زبانهای برنامه نویسی به شما اجازه اجرای کد را در شرایط مطمئن می دهند .حال تصور کنید که یک برنامه دارای ساختار تصمیم
گیری نباشد و همه کدها را اجرا کند .این حالت شاید فقط برای چاپ یک پیغام در صفحه مناسب باشد ولی فرض کنید که شما بخواهید
اگر مقدار یک متغیر با یک عدد برابر باشد سپس یک پیغام چاپ شود آن وقت با مشکل مواجه خواهید شد .پایتون راه های مختلفی
برای رفع این نوع مشکالت ارائه می دهد .در این بخش با مطالب زیر آشنا خواهید شد:
دستورif
دستورif…else
دستور if
میتوان با استفاده از دستور ifو یک شرط خاص که باعث ایجاد یک کد میشود یک منطق به برنامه خود اضافه کنید .دستور if
سادهترین دستور شرطی است که برنامه میگوید اگر شرطی برقرار است کد معینی را انجام بده .ساختار دستور ifبه صورت زیر است:
if (condition):
code to execute
قبل از اجرای دستور ifابتدا شرط بررسی میشود .اگر شرط برقرار باشد یعنی درست باشد سپس کد اجرا میشود .شرط یک عبارت
مقایسهای است .میتوان از عملگرهای مقایسهای برای تست درست یا اشتباه بودن شرط استفاده کرد .اجازه بدهید که نگاهی به نحوه
استفاده از دستور ifدر داخل برنامه بیندازیم .برنامه زیر پیغام Hello Worldرا اگر مقدار numberکمتر از 11و Goodbye Worldرا اگر
Hello World.
Goodbye World.
در خط 1یک متغیر با نام numberتعریف و مقدار 5به آن اختصاص داده شده است .وقتی به اولین دستور ifدر خط 1میرسیم برنامه
منطقی است که نتیجه مقایسه درست میباشد ،بنابراین دستور ifدستور را اجرا میکند (خط )6و پیغام Hello Worldچاپ میشود.
حال مقدار numberرا به 15تغییر میدهیم (خط .)9وقتی به دومین دستور ifدر خط 11میرسیم برنامه مقدار numberرا با 11مقایسه
میکند و چون مقدار numberیعنی 15از 11بزرگتر است برنامه پیغام Goodbye Worldرا چاپ میکند (خط .)13به این نکته توجه
شما میتوانید چندین دستور را در داخل دستور ifبنویسید .کافیست که حواستان به تو رفتگی کدها باشد .نحوه تعریف چند دستور در
)if (condition
;statement1
;statement2
.
.
.
;statementN
;x = 15
در مثال باال اگر مقدار xاز 11بزرگتر باشد دو پیغام چاپ میشود .حال اگر به عنوان مثال ،تو رفتگی خط آخر را حذف کنیم و مقدار xاز 11
;x = 5
کد باال در صورتی بهتر خوانده میشود که بین دستورات فاصله بگذاریم:
;x = 5
میبیند که دستور آخر در مثال باال ،جز دستور ifنیست .اینجاست که چون ما فرض را بر این گذاشتهایم که مقدار xاز 11کوچکتر است
پس خط)? This is not part of the if statement. (Reallyچاپ میشود .در نتیجه اهمیت وجود تو رفتگی مشخص
میشود .به عنوان تمرین همیشه حتی اگر فقط یک دستور در بدنه ifداشتید برای آن یک تو رفتگی ایجاد کنید .فراموش نکنید که از قلم
انداختن یک تو رفتگی باعث به وجود آمدن خطا شده و یافتن آن را سخت میکند .مثالی دیگر در مورد دستور :if
Enter a number: 2
Enter another number: 5
2 != 5
2 < 5
2 <= 5
Enter a number: 10
Enter another number: 3
10 != 3
10 > 3
10 >= 3
Enter a number: 5
Enter another number: 5
5 == 5
5 <= 5
5 >= 5
ابتدا دو عدد که قرار است با هم مقایسه شوند را به عنوان ورودی از کاربر. استفاده کردهایمif ما از عملگرهای مقایسهای در دستور
به این نکته توجه داشته باشید که شرطها مقادیر. اعداد با هم مقایسه میشوند و اگر شرط درست بود پیغامی چاپ میشود.میگیریم
if…else دستور
اما زمانی که شما بخواهید. فقط برای اجرای یک حالت خاص به کار می رود یعنی اگر حالتی برقرار بود کار خاصی انجام شودif دستور
if ساختار دستور. استفاده کنیدif else اگر شرط خاصی برقرار شد یک دستور و اگر برقرار نبود دستور دیگر اجرا شود باید از دستور
if (condition):
else:
ً
حتما باید با ifبه کار برده شود .اگر فقط یک کد اجرایی در داخل بدنه if از کلمه کلیدی elseنمیتوان به تنهایی استفاده کرد بلکه
و بدنه elseدارید استفاده از آکوالد اختیاری است .کد داخل بلوک elseفقط در صورتی اجرا میشود که شرط داخل دستور if
در خط 1یک متغیر به نام numberتعریف کردهایم و در خط 4تست میکنیم که آیا مقدار متغیر numberاز 11کمتر است یا نه و چون
کمتر است در نتیجه کد داخل بلوک ifاجرا میشود (خط )7و اگر مقدار numberرا تغییر دهیم و به مقداری بزرگتر از 11تغییر دهیم
(خط ،)11شرط نادرست میشود (خط )13و کد داخل بلوک elseاجرا میشود (خط .)16
دستور if…elif…else
اگر بخواهید چند شرط را بررسی کنید چکار میکنید؟ میتوانید از چندین دستور ifاستفاده کنید و بهتر است که این دستورات ifرا به
if (condition):
;code to execute
else:
if (condition):
;code to execute
else:
if (condition):
;code to execute
else:
مبانی زبان پایتون:فصل اول 39
code to execute;
میتوانید کد باال را سادهتر کنید. بنویسیدelse بهتر است دستورات را به صورت تو رفتگی در داخل بلوک.خواندن کد باال سخت است
if (condition):
code to execute;
elif (condition):
code to execute;
elif (condition):
code to execute;
else:
code to execute;
elif دستور. وابسته استif نیز به دستورelif ،else را یاد گرفتید باید بدانید که مانندif else حال که نحوه استفاده از دستور
و اگر آن نیز اجرا نشود. بعدی اجرا میشودelif اشتباه باشد دستورelif اشتباه باشد حال اگرif وقتی اجرا میشود که اولین دستور
: را نشان میدهدelif برنامه زیر نحوه استفاده از دستور. اجرا میشودelse در نهایت دستور
[4] Red
[5] Yellow
اگر. بسته به اینکه شما چه چیزی انتخاب میکنید پیغامهای مختلفی چاپ میشود. وابسته استchoice خروجی برنامه باال به متغیر
. اجرا میشودelse عددی که شما تایپ میکنید در داخل حالتهای انتخاب نباشد کد مربوط به بلوک
تو در توif دستور
: دیگرif در داخل دستورif یک دستور ساده. تو در تو در پایتون استفاده کردif میتوان از دستور
if (condition):
code to execute;
if (condition):
code to execute;
elif (condition):
if (condition):
code to execute;
else:
if (condition):
code to execute;
ا جازه بدهید که برنامه را کالبد شکافی کنیم .ابتدا برنامه از شما درباره سنتان سؤال میکند (خط .)1در خط 1درباره جنستان از شما سؤال
میکند .سپس به اولین دستور ifمیرسد (خط .)4در این قسمت اگر سن شما بیشتر از 11سال باشد برنامه وارد بدنه دستور if
میشود در غیر اینصورت وارد بلوک ( elseخط )11مربوط به همین دستور ifمیشود.
حال فرض کنیم که سن شما بیشتر از 11سال است و شما وارد بدنه اولین ifشدهاید .در بدنه اولین ifدو دستور ifدیگر را مشاهده
میکنید .اگر سن کمتر 11باشد شما وارد بدنه ifدوم میشوید و اگر نباشد به قسمت elseمتناظر با آن میروید (خط .)11دوباره
فرض میکنیم که سن شما کمتر از 11باشد ،در اینصورت وارد بدنه ifدوم شده و با یک ifدیگر مواجه میشوید (خط .)6در اینجا
جنسیت شما مورد بررسی قرار میگیرد که اگر برابر ” “maleباشد ،کدهای داخل بدنه سومین ifاجرا میشود در غیر اینصورت قسمت
elseمربوط به این ifاجرا میشود (خط .)1پیشنهاد میشود که از ifتو در تو در برنامه کمتر استفاده کنید چون خوانایی برنامه را
پایین میآورد.
یک مقدار بولی را بر میگردانند .در جدول زیر برخی از عملگرهای منطقی آمده است :
Trueباشد .اگر فقط مقدار یکی از شروط Falseباشد مقدار False )z = (x > 2) and (y < 10 and
مقدارشان Trueباشد .اگر هر دو شرط مقدارشان Falseباشد مقدار )z = (x > 2) or (y < 10 or
به عنوان مثال جمله )z = (x > 2) and (y < 10را به این صورت بخوانید“ :در صورتی مقدار zبرابر Trueاست که مقدار x
بزرگتر از 2و مقدار yکوچکتر از 11باشد در غیر اینصورت Falseاست” .این جمله بدین معناست که برای اینکه مقدار کل دستور
Trueباشد باید مقدار همه شروط Trueباشد .عملگر منطقی orتأثیر متفاوتی نسبت به عملگر منطقی andدارد .نتیجه عملگر منطقی
orبرابر Trueاست اگر فقط مقدار یکی از شروط Trueباشد .و اگر مقدار هیچ یک از شروط Trueنباشد نتیجه Falseخواهد شد.
میتوان عملگرهای منطقی andو orرا با هم ترکیب کرده و در یک عبارت به کار برد مانند:
در اینجا استفاده از پرانتز مهم است چون از آن در گروه بندی شرطها استفاده میکنیم .در اینجا ابتدا عبارت )(y > 3) or (z < 10
مورد بررسی قرار میگیرد (به علت تقدم عملگرها) .سپس نتیجه آن بوسیله عملگر andبا نتیجه )(x == 1مقایسه میشود .حال بیایید
برنامه باال نحوه استفاده از عملگر منطقی andرا نشان میدهد (خط .)4وقتی به دستور ifمیرسید (خط )4برنامه سن شما را چک
میکند .اگر سن شما بزرگتر از 11و کوچکتر از 11باشد (سنتان بین 11و 11باشد) یعنی مقدار هر دو Trueباشد سپس کدهای داخل
بلوک ifاجرا میشوند .اگر نتیجه یکی از شروط Falseباشد کدهای داخل بلوک elseاجرا میشود .عملگر andعملوند سمت چپ
را مورد بررسی قرار میدهد .اگر مقدار آن Falseباشد دیگر عملوند سمت راست را بررسی نمیکند و مقدار Falseرا بر میگرداند .بر
عکس عملگر orعملوند سمت چپ را مورد بررسی قرار میدهد و اگر مقدار آن Trueباشد سپس عملوند سمت راست را نادیده میگیرد
)if (x == 2 or y == 3
#Some code here
نکته مهم اینجاست که شما میتوانید از عملگرهای andو orبه عنوان عملگر بیتی استفاده کنید .تفاوت جزئی این عملگرها وقتی که
به عنوان عملگر بیتی به کار میروند این است که دو عملوند را بدون در نظر گرفتن مقدار عملوند سمت چپ مورد بررسی قرار میدهند .به
عنوان مثال حتی اگر مقدار عملوند سمت چپ Falseباشد عملوند سمت چپ به وسیله عملگر بیتی andارزیابی میشود .اگر شرطها را
در برنامه ترکیب کنید استفاده از عملگرهای منطقی andو orبه جای عملگرهای بیتی andو orبهتر خواهد بود .یکی دیگر از عملگرهای
منطقی عملگر notاست که نتیجه یک عبارت را خنثی یا منفی میکند .به مثال زیر توجه کنید:
عملگر شرطی
عملگر شرطی در پایتون مانند دستور شرطی if…elseعمل میکند .در زیر نحوه استفاده از این عملگر آمده است:
عملگر شرطی تنها عملگر سه تایی پایتون است که نیاز به سه عملوند دارد ،یک مقدار زمانی که شرط درست باشد ،شرط و یک مقدار زمانی
که شرط نادرست باشد .اجازه بدهید که نحوه استفاده این عملگر را در داخل برنامه مورد بررسی قرار دهیم:
dog
cat
برنامه باال نحوه استفاده از این عملگر شرطی را نشان میدهد .خط 4به این صورت ترجمه میشود که مقدار dogرا در متغیر type1
قرار بده اگر مقدار pet1برابر با puppyبود در غیر این صورت مقدار catرا type1قرار بده .خط 5به این صورت ترجمه میشود که مقدار
catرا در type2قرار بده اگر مقدار pet2برابر با kittenبود در غیر این صورت مقدار .dogحال برنامه باال را با استفاده از دستور if
elseمینویسیم:
44 فصل اول :مبانی زبان پایتون
هنگامی که چندین دستور در داخل یک بلوک ifیا elseدارید از عملگر شرطی استفاده نکنید چون خوانایی برنامه را پایین میآورد.
تکرار
ساختارهای تکرار به شما اجازه می دهند که یک یا چند دستور کد را تا زمانی که یک شرط برقرار است تکرار کنید .بدون ساختارهای تکرار
شما مجبورید همان تعداد کدها را بنویسید که بسیار خسته کننده است .مثالً شما مجبورید 11بار جمله ” “.Hello Worldرا تایپ کنید
print("Hello ;)"!World
print("Hello ;)"!World
print("Hello ;)"!World
print("Hello ;)"!World
print("Hello ;)"!World
print("Hello ;)"!World
print("Hello ;)"!World
print("Hello ;)"!World
print("Hello ;)"!World
print("Hello ;)"!World
البته شما می توانید با کپی کردن این تعداد کد را راحت بنویسید ولی این کار در کل کیفیت کدنویسی را پایین میآورد .راه بهتر برای
نوشتن کدهای باال استفاده از حلقهها است .حلقهها در پایتون عبارتند از:
while
for
حلقه While
ابتداییترین ساختار تکرار در پایتون حلقه Whileاست .ابتدا یک شرط را مورد بررسی قرار میدهد و تا زمانیکه شرط برقرار باشد کدهای
درون بلوک اجرا میشوند .ساختار حلقه Whileبه صورت زیر است:
while(condition):
;code to loop
میبینید که ساختار Whileمانند ساختار ifبسیار ساده است .ابتدا یک شرط را که نتیجه آن یک مقدار بولی است مینویسیم اگر نتیجه
درست یا trueباشد سپس کدهای داخل بلوک Whileاجرا میشوند .اگر شرط غلط یا falseباشد وقتی که برنامه به حلقه While
برسد هیچکدام از کدها را اجرا نمیکند .برای متوقف شدن حلقه باید مقادیر داخل حلقه Whileاصالح شوند.
فصل اول :مبانی زبان پایتون 15
ب ه یک متغیر شمارنده در داخل بدنه حلقه نیاز داریم .این شمارنده برای آزمایش شرط مورد استفاده قرار میگیرد و ادامه یا توقف حلقه به
نوعی به آن وابسته است .این شمارنده را در داخل بدنه باید کاهش یا افزایش دهیم .در برنامه زیر نحوه استفاده از حلقه Whileآمده
است:
;counter = 1
Hello !World
Hello !World
Hello !World
Hello !World
Hello !World
Hello !World
Hello !World
Hello !World
Hello !World
Hello !World
برنامه باال 11بار پیغام ! Hello Worldرا چاپ میکند .اگر از حلقه در مثال باال استفاده نمیکردیم مجبور بودیم تمام 11خط را تایپ کنیم.
اجازه دهید که نگاهی به کدهای برنامه فوق بیندازیم .ابتدا در خط 1یک متغیر تعریف و از آن به عنوان شمارنده حلقه استفاده شده است.
سپس به آن مقدار 1را اختصاص میدهیم چون اگر مقدار نداشته باشد نمیتوان در شرط از آن استفاده کرد.
در خط 3حلقه whileرا وارد میکنیم .در حلقه whileابتدا مقدار اولیه شمارنده با 11مقایسه میشود که آیا از 11کمتر است یا با آن برابر
است .نتیجه هر بار مقایسه ورود به بدنه حلقه Whileو چاپ پیغام است .همانطور که مشاهده میکنید بعد از هر بار مقایسه مقدار
شمارنده یک واحد اضافه میشود (خط .)5حلقه تا زمانی تکرار میشود که مقدار شمارنده از 11کمتر باشد.
اگر مقدار شمارنده یک بماند و آن را افزایش ندهیم و یا مقدار شرط هرگز falseنشود یک حلقه بینهایت به وجود میآید .به این نکته
توجه کنید که در شرط باال به جای عالمت < از =< استفاده شده است .اگر از عالمت < استفاده میکردیم کد ما 9بار تکرار میشد چون
مقدار اولیه 1است و هنگامی که شرط به 11برسد falseمیشود چون 11 < 11نیست .اگر میخواهید یک حلقه بی نهایت ایجاد کنید که
هیچگاه متوقف نشود باید یک شرط ایجاد کنید که همواره درست ) (trueباشد:
while(True):
#code to loop
ا ین تکنیک در برخی موارد کارایی دارد و آن زمانی است که شما بخواهید با استفاده از دستورات breakو returnکه در آینده توضیح
حلقه for
یکی دیگر از ساختارهای تکرار حلقه forاست .این حلقه عملی شبیه به حلقه whileانجام میدهد .ساختار حلقه forبه صورت زیر
است:
;code to repeat
iterator_varیک متغیر موقتی in ،کلمه کلیدی و sequenceهم یک سری مانند list ،tupleو … می باشد .می توان حلقه
forرا اینگونه ترجمه کرد ،که به ازای یا به تعداد آیتم های موجود در سری ،فالن کارها یا کدها را تکرار کن .در زیر یک مثال از حلقهfor
آمده است:
Number 1
Number 2
Number 3
Number 4
Number 5
Number 6
Number 7
Number 8
Number 9
Number 10
برنامه باال اعداد 1تا 11را با استفاده از حلقه forمیشمارد .ابتدا یک متغیر موقتی ) ،(iسپس کلمه کلیدی inو در آخر یک سری از
اعداد که در اینجا یک listمی باشد ،تعریف میکنیم .کد اجرا میشود .هر بار که حلقه اجرا می شود ،ابتدا یکی از آیتم های listدر
متغیر iقرار گرفته و در خط بعد چاپ می شود .این کار تا چاپ آخرین آیتم ادامه می یابد .به جای listدر کد باال می توانید از
یا
در تو گفته میشود .در این نوع حلقه ها ،به ازای اجرای یک بار حلقه بیرونی ،حلقه داخلی به طور کامل اجرا میشود .در زیر نحوه ایجاد
)statements(s
)statements(s
while expression:
while expression:
)statement(s
)statement(s
نکتهای که در مورد حلقههای تو در تو وجود دارد این است که ،میتوان از یک نوع حلقه در داخل نوع دیگر استفاده کرد .مثالً میتوان از
حلقه forدر داخل حلقه whileاستفاده نمود .در مثال زیر نحوه استفاده از این حلقهها ذکر شده است .فرض کنید که میخواهید یک
در کد باال به ازای یک بار اجرای حلقه forاول (خط ،)1حلقه forدوم ( )1-3به طور کامل اجرا میشود .یعنی وقتی مقدار iبرابر
عدد 1میشود ،عالمت * توسط حلقه دوم 5بار چاپ میشود ،وقتی iبرابر 1میشود ،دوباره عالمت * پنج بار چاپ میشود و … .در کل
منظور از دو حلقه forاین است که در 4سطر عالمت * در 5ستون چاپ شود یا 4سطر ایجاد شود و در هر سطر 5بار عالمت * چاپ
شود .خط 4هم برای ایجاد خط جدید است .یعنی وقتی حلقه داخلی به طور کامل اجرا شد ،یک خط جدید ایجاد میشود و عالمتهای
کلمه کلیدی breakحلقه را متوقف کرده و با استفاده از کلمه کلیدی continueمیتوان بخشی از حلقه را رد کرد و به مرحله بعد رفت.
Number 1
Number 2
Number 3
Number 4
Number 1
Number 2
Number 3
Number 4
Number 6
Number 7
Number 8
Number 9
Number 10
Demonstrating the use of pass
در این برنامه از حلقه forبرای نشان دادن کاربرد دو کلمه کلیدی فوق استفاده شده است اگر به جای forاز حلقه whileاستفاده میشد
نتیجه یکسانی به دست میآمد .همانطور که در شرط برنامه (خط )4آمده است ،وقتی که مقدار xبه عدد 5برسد ،سپس دستور break
اجرا (خط )5و حلقه بالفاصله متوقف میشود ،حتی اگر شرط x < 10برقرار باشد .از طرف دیگر در خط 11حلقه forفقط برای یک تکرار
فصل اول :مبانی زبان پایتون 19
خاص متوقف شده و سپس ادامه مییابد .وقتی مقدار xبرابر 5شود حلقه از 5رد شده و مقدار 5را چاپ نمیکند و بقیه مقادیر چاپ
میشوند.
ممکن است این سوال برایتان پیش آمده باشد که کاربرد کلمه passچیست؟ از این دستور زمانی استفاده می کنیم که در شرایطی خاص
نیاز به انجام هیچ کاری نباشد! مثال برای تعریف یک تابع خالی تا بعدا کدهای آن نوشته شود .یا زمانی که بخواهیم همانند مثال باال،
کدهای بدنه یک دستور شرطی و یا حلقه را بعدا بنویسیم ،به کار می رود .حال شما برای درک بهتر ،کلمه passرا از کد باال حذف کرده و
کد را اجرا کنید .مشاهده می کنید که به شما پیغام خطا نمایش داده می شود و از شما می خواهد که بدنه دستور ifو forرا مشخص
کنید ولی اگر کلمه passرا دوباره بنویسید ،این خطا نادیده گرفته و کد اجرا می شود.
W3-farsi.com