پایتون به زبان ساده بی شک این اثر ،خالی از اشکال نیست و از شما خوانندگان عزیز میخواهم که با نظرات و پیشنهادات خود بنده را در تکمیل و رفع نواقص آن از طریق پست الکترونیکی younes.ebrahimi.1391@gmail.comیاری بفرمایید. برای دریافت فایلها و آپدیتهای جدید این کتاب به سایت www.w3-farsi.com مراجعه فرمایید. راههای ارتباط با نویسنده وب سایتwww.w3-farsi.com : لینک تلگرامhttps://telegram.me/ebrahimi_younes : IDتلگرام@ebrahimi_younes : پست الکترونیکیyounes.ebrahimi.1391@gmail.com : 2 فصل اول :مبانی زبان پایتون پایتون چیست پایتون ) (Pythonیک زبان برنامهنویسی همه منظوره ،شیءگرا و متن باز است که توسط خودو فان راسام )(Guido van Rossum در سال 1991در کشور هلند طراحی شد .این زبان از زبانهای برنامهنویسی مفسر بوده و به صورت کامل یک زبان شیءگرا است که به زبانهای تفسیری Perlو Rubyشباهت دارد و از مدیریت خودکار حافظه استفاده میکند. پایتون ،کد باز ) (Open Sourceاست ،زبانی که گوگل و یا یاهو از آن به عنوان یکی از اصلی ترین ابزارهای توسعه استفاده می کنند. برنامه های پایتون مثل PHPقابل اجرا روی اغلب سیستم عامل هاست .پایتون ،دستور زبانی شبیه گفتار ساده ی انگلیسی دارد و با دارا بودن 33کلمه کلیدی جزء ساده ترین زبان ها است. سادگی و خوانایی از ویژگیهای بارز زبان برنامهنویسی پایتون است ،آنچنان ساده که حتی کودکان نیز قادر به آموختن آن هستند و قدرت در کنار این سادگی و خوانایی ،معجزه پایتون میباشد .از نگاه هر برنامهنویسی ،برنامههای پایتون مجموعهای از کدهای زیبا هستند ،بدون هیچ آشفتگی و پیچیدگی .جالب است بدانید مایکروسافت نیز این زبان را با نام IronPythonدر تکنولوژی .Netخود گنجانده است. هم اکنون پایتون در شرکت ها و سازمان های بزرگی مثل ناسا و گوگل و یاهو و … به صورت گسترده مورد استفاده قرار می گیرد .تا کنون نسخه های مختلفی از این زبان ارائه شده است که لیست آنها را در جدول زیر میشاهده می کنید: نسخه تاریخ پیدایش Python 1.0 January 1994 Python 1.2 April 10, 1995 Python 1.3 October 12, 1995 Python 1.4 October 25, 1996 Python 1.5 December 31, 1997 Python 1.6 September 5, 2000 Python 2.0 October 16, 2000 Python 2.1 April 17, 2001 Python 2.2 December 21, 2001 Python 2.3 July 29, 2003 Python 2.4 November 30, 2004 Python 2.5 September 19, 2006 Python 2.6 October 1, 2008 Python 2.7 July 3, 2010 Python 3.0 December 3, 2008 Python 3.1 June 27, 2009 Python 3.2 February 20, 2011 Python 3.3 September 29, 2012 Python 3.4 March 16, 2014 3 فصل اول :مبانی زبان پایتون Python 3.5 September 13, 2015 Python 3.6 December 23, 2016 حال که با پایتون به طور مختصر آشنا شدید ،در درس های بعد در مورد این زبان برنامه نویسی بیشتر توضیح می دهیم. دانلود و نصب Python 3.6 برای برنامه نویسی به زبان های مختلف محیط های توسعه ی یکپارچه یا IDEهای مختلفی وجود دارند که به برنامه نویسان در نوشتن و ویرایش کدها ،پیدا کردن خطاها ،نمایش خروجی ،و برخی موارد دیگر کمک می کنند .برای اجرای کدهای Pythonمحیط های مختلفی وجود دارد که ساده ترین آنها IDELمی باشد .برای دانلود این محیط کدنویسی ،بر روی لینک زیر کلیک کنید: https://www.python.org/downloads با کلیک بر روی لینک باال ،صفحه ای به صورت زیر باز می شود ،که در این صفحه همانطور که در شکل زیر مشاهده می کنید ،بر روی دکمه ای که با فلش نشان داده شده کلیک کرده ،تا آخرین نسخه IDELدانلود شود: بعد از دانل ود فایل مورد نظر به محل ذخیره آن رفته و بر روی فایل دو بار کلیک کنید .سپس در صفحه ای که به صورت زیر نمایش داده می شود ،تیک مورد نظر را زده و سپس بر روی گزینه Customize installiationکلیک کنید: فصل اول :مبانی زبان پایتون بعد از کلیک بر روی گزینه مذکور صفحه ای به صورت زیر نمایش داده می شود .در این صفحه بر روی دکمه Nextکلیک کنید: در صفحه بعد بر روی دکمه Installکلیک کرده و منتظر بمانید تا برنامه نصب شود: 4 5 فصل اول :مبانی زبان پایتون در آخر و بعد از نصب کامل برنامه پیغامی مبنی بر موفقیت آمیز بودن ،نصب برنامه به شما نمایش داده می شود و شما می توانید دکمه Closeرا بزنید: فصل اول :مبانی زبان پایتون 6 ساخت یک برنامه ساده اجازه بدهید یک برنامه بسیار ساده به زبان پایتون بنویسیم .این برنامه یک پیغام را نمایش میدهد .از منوی Startمحیط برنامه نویسی IDELرا به صورت زیر اجرا کنید: با کلیک بر روی IDELصفحه ای به صورت زیر نمایش داده می شود: 7 فصل اول :مبانی زبان پایتون در صفحه باز شده به صورت زیر بر روی منوی Fileو سپس گزینه New Fileکلیک کنید: با کلیک بر روی گزینه New Fileصفحه ای به صورت زیر نمایش داده می شود که شما می توانید کدهای خود را در داخل آن بنویسید: 8 فصل اول :مبانی زبان پایتون در پنجره باال کدهای زیر را بنویسید: ;)"!print("Welcome to Python Tutorials 9 مانند شکل زیر از منوی Fileگزینه Saveرا بزنید: سپس یک مسیر برای ذخیره فایل انتخاب کنید .ما در شکل زیر فایل را در درایو Cذخیره کرده ایم: فصل اول :مبانی زبان پایتون فصل اول :مبانی زبان پایتون بعد از ذخیره فایل به محیط کدنویسی بر گشته و از منوی Runگزینه Run Moduleو یا دکمه F5را بزنید: 01 11 فصل اول :مبانی زبان پایتون مشاهده می کنید که برنامه اجرا شده و پیغام !Welcome to Python tutorialsچاپ می شود: مثال باال سادهترین برنامه ای است که شما میتوانید در Pythonبنویسید .هدف در مثال باال نمایش یک پیغام در صفحه نمایش است. هر زبان برنامه نویسی دارای قواعدی برای کدنویسی است .پایتون دارای متدهای از پیش تعریف شده ای است که هر کدام برای مقاصد خاصی به کار می روند .هر چند که در آینده در مورد متدها بیشتر توضیح می دهیم ولی در همین حد به توضیح متد بسنده می کنیم که متدها مجموعه ای از کدها هستند که دارای یک نام بوده و در جلوی نام آنها عالمت () قرار می گیرد .یکی از این متدها ،متد)(print است .از متد )( printبرای چاپ یک رشته استفاده میشود .یک رشته گروهی از کاراکترها است ،که به وسیله دابل کوتیشن (“) محصور شده است .مانند .“!Welcome to Python Tutorials” :یک کاراکتر میتواند یک حرف ،عدد ،عالمت یا … باشد .در کل مثال باال نحوه استفاده از متد )( printاست .توضیحات بیشتر در درسهای آینده آمده است .پایتون فضای خالی باال را نادیده میگیرد و از کد زیر اشکال نمیگیرد: (print ;)"!"Welcome to Python Tutorials همیشه به یاد داشته باشید که Pythonبه بزرگی و کوچکی حروف حساس است .یعنی به طور مثال MANو manدر Pythonبا هم فرق دارند .رشته ها و توضیحات از این قاعده مستثنی هستند که در درسهای آینده توضیح خواهیم داد .مثالً کدهای زیر با خطا مواجه میشوند و اجرا نمیشوند: 02 فصل اول :مبانی زبان پایتون ;)"!Print("Welcome to Python Tutorials ;)"!PRINT("Welcome to Python Tutorials ;)"!PrinT("Welcome to Python Tutorials تغییر در بزرگی و کوچکی حروف از اجرای کدها جلوگیری میکند .اما کد زیر کامالً بدون خطا است: ;)"!print("Welcome to Python tutorials نکاتی در مورد کدنویسی در پایتون در زبان هایی مثل جاوا و سی شارپ ،از عالمت آکوالد ({}) برای ایجاد یک بالک کد Block { ;statement } ولی در زبان پایتون از ترکیب عالمت دو نقطه ( ):و تو رفتگی برای اینکار استفاده می شود: Block: ;statement ما با دونقطه به پایتون میگوییم که قصد داریم یک بلوک کد را آغاز کنیم و با تو رفتگی ابتدای خطوط دستورات آن بلوک را تعریف میکنیم. برای تورفتگی میتوانیم از 3یا 4یا 11فضای خالی استفاده کنیم .میزان این فضای خالی تا زمانی که در تمام کد رعایت شود ،اهمیتی ندارد .در کد زیر به اهمیت تو رفتگی ها پی می برید: Block1: ;statement ;statement Block2: ;statement Block3: ;statement ;statement Block4: ;statement ;statement ;statement 1 2 3 4 5 6 7 8 9 10 11 12 در کد باال ،بالک اول ) (Block1از خط 1تا 3را شام ل می شود .به این نکته توجه کنید که خطوط بعد از عالمت :حتما باید دارای تو رفتگی باشند .بالک دوم ) (Block2از خط 4شروع و به خط 11ختم می شود .نکته ای که باید در اینجا دوباره به آن اشاره کنیم این است که دستور یا بالک هایی که دارای فاصله های برابر از سمت چپ هست جزو یک بالک می باشند .مثال در کد باال خطوط 2و 3جز Block1هستند چون تو رفتگی آنها از سمت چپ برابر است و اگر مثال فاصله های خط 3از سمت چپ را حذف کنیم دیگر جز بالک محسوب نمی شود .یک بالک را می توان زیر مجموعه بالک دیگر کرد .مثال در خط Block3 ،6را زیر مجموعه Block2و در خط Block4 ،9 13 فصل اول :مبانی زبان پایتون را زیر مجموعه Block3کرده ایم .در نهایت خط 11جز هیچکدام از بالک ها نیست و مستقل اجرا می شود .گاهی اوقات و هنگام کدنویسی ،الزم است که رشته های طوالنی را در چند خط بنویسید .برای اینکار در پایتون می توان از عالمت \ به صورت زیر استفاده کنید: \ print("Welcome \ to \ Python ;)"!Tutorials توضیحات وقتی که کدی تایپ می کنید شاید بخواهید که متنی جهت یادآوری وظیفه آن کد به آن اضافه کنید .در ( Pythonو بیشتر زبانهای برنامه نویسی) می توان این کار را با استفاده از توضیحات انجام داد .توضیحات متونی هستند که توسط مفسر نادیده گرفته می شوند و به عنوان بخشی از کد محسوب نمی شوند. هدف اصلی از ایجاد توضیحات ،باال بردن خوانایی و تشخیص نقش کدهای نوشته شده توسط شما ،برای دیگران است .فرض کنید که می خواهید در مورد یک کد خاص ،توضیح بدهید ،می توانید توضیحات را در باالی کد یا کنار آن بنویسید .از توضیحات برای مستند سازی برنامه هم استفاده می شود .در برنامه زیر نقش توضیحات نشان داده شده است: #This line will print the message hello world ;)"!print("Hello World در کد باال ،خط اول کد باال یک توضیح درباره خط دو م است که به کاربر اعالم می کند که وظیفه خط دوم چیست ؟ با اجرای کد باال فقط جمله Hello Worldچاپ شده و خط اول در خروجی نمایش داده نمی شود چون مفسر توضیحات را نادیده می گیرد .همانطور که مشاهده می کنید برای درج توضیخات در پایتون از عالمت #استفاده می شود .برای توضیحات طوالنی هم باید در ابتدای هر خط از توضیح این عالمت درج شود: #This line will print #the message hello world ;)"!print("Hello World کاراکترهای کنترلی کاراکترهای کنترلی ،کاراکترهای ترکیبی هستند که با یک بک اسلش )\( شروع میشوند و به دنبال آنها یک حرف یا عدد میآید و یک رشته را با فرمت خاص نمایش می دهند .برای مثال برای ایجاد یک خط جدید و قرار دادن رشته در آن میتوان از کاراکتر کنترلی \n استفاده کرد: 04 فصل اول :مبانی زبان پایتون ;)"!print("Hello\nWorld Hello World مشاهده کردید که مفسر بعد از مواجهه با کاراکتر کنترلی \nنشانگر ماوس را به خط بعد برده و بقیه رشته را در خط بعد نمایش میدهد. جدول زیر لیست کاراکترهای کنترلی و کارکرد آنها را نشان میدهد: عملکرد کاراکتر کنترلی کاراکتر کنترلی عملکرد \f چاپ کوتیشن ’\ خط جدید \n چاپ دابل کوتیشن ”\ سر سطر رفتن \r چاپ بک اسلش \\ حرکت به صورت افقی \t چاپ فضای خالی \0 حرکت به صورت عمودی \v صدای بیپ \a چاپ کاراکتر یونیکد \u حرکت به عقب \b Form Feed ما برای استفاده از کاراکترهای کنترلی ،از بک اسلش )\( استفاده میکنیم .از آنجاییکه \ معنای خاصی به رشتهها میدهد برای چاپ بک اسلش )\( باید از )\\( استفاده کنیم: ;)"print("We can print a \\ by using the \\\\ escape sequence. We can print a \ by using the \\ escape sequence. یکی از موارد استفاده از \\ ،نشان دادن مسیر یک فایل در ویندوز است: ;)"print("C:\\Program Files\\Some Directory\\SomeFile.txt C:\Program Files\Some Directory\SomeFile.txt از آنجاییکه از دابل کوتیشن )“( برای نشان دادن رشتهها استفاده میکنیم برای چاپ آن از ”\ استفاده میکنیم: ;)"print("I said, \"Motivate yourself!\". I said, "Motivate yourself!". 15 فصل اول :مبانی زبان پایتون همچنین برای چاپ کوتیشن )‘( از ’\ استفاده میکنیم: ;)"print("The programmer\'s heaven. The programmer's heaven. برای ایجاد فاصله بین حروف یا کلمات از \tاستفاده میشود: ;)"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یا عالمت _ شروع شود. نمیتواند شامل کاراکترهای غیرمجاز مانند #, ?, ^, $, .باشد. نمیتوان از کلمات رزرو شده در پایتون برای نام متغیر استفاده کرد. نام متغیر نباید دارای فضای خالی ) (spacesباشد. اسامی متغیرها نسبت به بزرگی و کوچکی حروف حساس هستند .در پایتون دو حرف مانند aو Aدو کاراکتر مختلف به حساب میآیند. دو متغیر با نامهای myNumberو MyNumberدو متغیر مختلف محسوب میشوند چون یکی از آنها با حرف کوچک mو دیگری با حرف بزرگ Mشروع میشود .متغیر دارای نوع هست که نوع دادهای را که در خود ذخیره میکند را نشان می دهد .در درس بعد در مورد انواع داده ها در پایتون توضیح می دهیم .لیست کلمات کلیدی پایتون ،که نباید از آنها در نامگذاری متغیرها استفاده کرد در زیر آمده است: raise return try while with yield if import in is lambda nonlocal not or def del elif else except finally for from False None True and as assert break class pass global continue انواع داده انواع داده هایی که در پایتون وجود دارند عبارتند از: نوع توضیح عددی)(Numeric integer شامل اعداد مثبت و منفی صحیح می باشد. float شامل اعداد اعشاری می باشد. boolean شامل دو مقدار trueیا falseمی باشد. 17 رشته ای)(String لیست)(List تاپل)(Tuple دیکشنری)(Dictionary فصل اول :مبانی زبان پایتون به مجموعه ای از کاراکترها که بین دو عالمت کوتیشن یا دابل کوتیشن قرار گرفته باشند ،اطالق می شود. مجموعه ای از آیتم ها هستند که بین دو عالمت [] قرار گرفته و با عالمت کاما ( ),از هم جدا شده اند. مجموعه ای از آیتم ها هستند که بین دو عالمت () قرار گرفته و با عالمت کاما ( ),از هم جدا شده اند. مجموعه ای از آیتم ها هستند که به صورت کلید و مقدار بوده ،بین دو عالمت {} قرار گرفته ،و با عالمت کاما ( ),از هم جدا شده اند. در مورد انواع داده های باال و نحوه استفاده از آنها در متغیرها ،در درس بعد توضیح می دهیم. استفاده از متغیرها بر خالف زبان هایی مثل جاوا و سی شارپ ،که هنگام تعریف متغیر باید نوع متغیر را هم مشخص می کردیم ،در پایتون کافیست که فقط نام متغیر را نوشته و به وسیله عالمت مساوی یک مقدار به آن اختصاص دهیم: ;variableName = Value در مثال زیر نحوه تعریف و مقداردهی متغیرها نمایش داده شده است: ;10 ;12.5 ;True ;"!"Hello World ;][1,5,8 ;)"("Python","Programming","begginer }{'Name': 'jack', 'family': 'Scalia', 'Age': 7 ;)).format(intVar ;)).format(floatVar ;)).format(boolVar ;)).format(StringVar ;)).format(listVar ;)).format(tupleVar = = = = = = = intVar floatVar boolVar StringVar listVar tupleVar dictionaryVar "}print("intVar = {0 "}print("floatVar = {0 "}print("boolVar = {0 "}print("StringVar = {0 "}print("listVar = {0 "}print("tupleVar = {0 ;))print("dictionaryVar = {0}" .format(dictionaryVar 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 intVar = 10 floatVar = 12.5 boolVar = True !StringVar = Hello World 08 فصل اول :مبانی زبان پایتون ]listVar = [1, 5, 8 )'tupleVar = ('Python', 'Programming', 'begginer }dictionaryVar = {'Name': 'jack', 'family': 'Scalia', 'Age': 7 در خطوط ، 1-7متغیر ها تعریف شده اند .اما نوع این متغیرها چیست؟ پایتون نوع متغیرها را بسته به مقداری که به آنها اختصاص داده می شود در نظر می گیرد .مثال نوع متغیر StringVarدر خط 4از نوع رشته است ،چون یک مقدار رشته ای به آن اختصاص داده شده است .به خطوط 6 ،5و 7کد باال توجه کنید .در خط 5یک متغیر تعریف شده است و نوع داده ای که به آن اختصاص داده شده است از نوع listاست .همانطور که در درس قبل اشاره شد ،برای تعریف listعالمت [] به کار می رود و آیتم های داخل آن به وسیله کاما از هم جدا می شوند: ;]listVar = [1, 5, 8 در خط 6هم یک متغیر تعریف شده است و یک مقدار از نوع tupleبه آن اختصاص داده شده است .در تعریف tupleبه جای عالمت [] از () استفاده می شود .تفا وت بین این دو را در درس های آینده بیشتر توضیح می دهیم .و اما در خط 7یک نوع دیکشنری تعریف شده است .برای تعریف دیکشنری بین کلید و مقدار عالمت :و بین کلید/مقدارها هم عالمت ,قرار می گیرد: ;}dictionaryVar = {Key1:Value1, Key2:Value2, Key3:Value3 مثال در مثال باال یک دیکشنری تعریف کرده ایم که سه آیتم یا کلید/مقدار دارد که بین آنها عالمت کاما ( ),قرار داده ایم .ولی بین یک کلید و مقدار مربوط به آن عالمت :قرار گرفته است .برای اختصاص یک مقدار به چند متغیر می توان به صورت زیر عمل کرد: ;identifier2 = ... indentifierN = Value = identifier1 به مثال زیر توجه کنید: ;num1 = num2 = num3 = num4 = num5 = 10 ;"!message1 = message2 = message3 = "Hello World ;)print(num1 ;)print(num4 ;)print(message1 ;)print(message3 10 10 !Hello World !Hello World 19 فصل اول :مبانی زبان پایتون دقت کنید که برای مت غیرهای تعریف شده در حالت باال یک خانه حافظه تخصیص داده می شود ،یعنی مقدار 11در حافظه ذخیره شده و متغیرهای num1و num2و num3و num4و num5به آن خانه از حافظه اشاره می کنند .همچنین می توان چند متغیر را تعریف کرد و برای هر یک از آن ها مقدار جداگانه ای مشخص نمود : ;identifier1, identifier2, ... indentifierN = Value1, Value2, ... ValueN به مثال زیر توجه کنید: ;"!num1, num2, message1 = 10, 12.5, "Hello World ;)print(num1 ;)print(num2 ;)print(message1 10 12.5 !Hello World همانطور که در درس قبل هم اشاره کردیم ،یک رشته در اصل یک مجموعه از کاراکترهاست که در داخل عالمت “” یا ‘ ‘ قرار دارند .هر کدام از این کاراکترها دارای یک اندیس است که به وسیله آن اندیس قابل دسترسی هستند .اندیس کاراکترها در رشته از 1شروع می شود. به رشته زیر توجه کنید: ;"!message = "Hello World در رشته باال اندیس کاراکتر Oبرابر 4است .برای درک بهتر به شکل زیر توجه کنید: H e l l o ! W o r l d 0 1 2 3 4 5 6 7 8 9 10 11 حال برای چاپ یک کاراکتر (مثل )Wاز این رشته کافیست که به صورت زیر عمل کنیم: ;" !message = "Hello World ;)]print(message[6 W همانطور که در کد باال مشاهده می کنید کافیست که نام متغیر را نوشته ،در جلوی آن یک جفت کروشه و در داخل کروشه ها اندیس آن کاراکتری را که می خواهیم چاپ شود را بنویسیم .چاپ مقدار با استفاده از اندیس در مورد Listو Tupleهم صدق می کند: ;]listVar = [1, 5, 8 ;)"tupleVar = ("Python", "Programming", "begginer 21 فصل اول :مبانی زبان پایتون ;)]print(listVar[2 ;)]print(tupleVar[1 8 Programming و اما در مورد دیکشنری ،شما باید نام کلید را بنویسید تا مقدار آن برای شما نمایش داده شود: }dictionaryVar = {'Name': 'jack', 'Family': 'Scalia', 'Age': 7 ;)]'print(dictionaryVar['Family Scalia نکته ای که بهتر است در همینجا به آن اشاره کنیم این است که کلید/مقدارها در دیکشنری می توانند از هر نوعی باشند و شما برای چاپ مقدار مربوط به یک کلید باید نام کلید را دقیق بنویسید .به مثال زیر توجه کنید: }= {1:'Jack', '2':'Scalia', 3:7 dictionaryVar ;)]'print(dictionaryVar['2 Scalia در مثال باال ما مقدار کلید ‘ ’1را چاپ کرده ایم .حال اگر به جای ‘’ 1عدد 1را بنویسیم ،یعنی عالمت کوتیشن را نگذاریم با خطا مواجه می شویم: }dictionaryVar = {1:'Jack', '2':'Scalia', 3:7 ;)]print(dictionaryVar[2 Traceback (most recent call last): File "C:/MyFirstProgram.py", line 3, in ;)]print(dictionaryVar[2 KeyError: 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عملوند و عالمت +عملگر به حساب میآیند. زبانهای برنامه نویسی جدید دارای عملگرهایی هستند که از اجزاء معمول زبان به حساب میآیند .پایتون دارای عملگرهای مختلفی از جمله عملگرهای ریاضی ،تخصیصی ،مقایسهای ،منطقی و بیتی میباشد .از عملگرهای ساده ریاضی میتوان به عملگر جمع و تفریق اشاره کرد. سه نوع عملگر در پایتون وجود دارد : یگانی – ) (Unaryبه یک عملوند نیاز دارد دودویی – ) (Binaryبه دو عملوند نیاز دارد سه تایی – ) (Ternaryبه سه عملوند نیاز دارد انواع مختلف عملگر که در این بخش مورد بحث قرار میگیرند ،عبارتند از: عملگرهای ریاضی عملگرهای تخصیصی عملگرهای مقایسهای 22 مبانی زبان پایتون:فصل اول عملگرهای منطقی عملگرهای بیتی عملگرهای ریاضی : جدول زیر عملگرهای ریاضی پایتون را نشان میدهد.پایتون از عملگرهای ریاضی برای انجام محاسبات استفاده میکند نتیجه مثال دسته عملگر 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; Binary % var3 به توانvar2 برابر است با مقدارVar1 var1 = var2 ** var3; Unary ** var1 = var2 // var3; Unary // (نتیجه به صورتvar3 تقسیم برvar2 برابر است باVar1 .)صحیح نمایش داده می شود برای+ اگر از عملگر. اما استفاده از عملگرهای ریاضی برای نوع رشتهای نتیجه متفاوتی دارد.مثال باال در از نوع عددی استفاده شده است حال میتوانیم با ایجاد یک برنامه نحوه عملکرد عملگرهای ریاضی.رشتهها استفاده کنیم دو رشته را با هم ترکیب کرده و به هم میچسباند :در پایتون را یاد بگیریم 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 #Assign test values num1 = 5; num2 = 3; #Demonstrate use of mathematical operators print("The sum of {0} and {1} is {2}." print("The difference of {0} and {1} is {2}." print("The product of {0} and {1} is {2}." print("The quotient of {0} and {1} is {2:.2f}." print("The remainder of {0} divided by {1} is {2}." print("The result of {0} power {1} is {2}." print("The quotient of {0} and {1} is {2}." .format(num1, .format(num1, .format(num1, .format(num1, .format(num1, .format(num1, .format(num1, #Demonstrate concatenation on strings using the + operator msg1 = "Hello "; msg2 = "World!"; print(msg1 + msg2); The sum of 5 and 3 is 8. The difference of 5 and 3 is 2. num2, num2, num2, num2, num2, num2, num2, (num1 (num1 (num1 (num1 (num1 (num1 (num1 + * / % ** // num2))); num2))); num2))); num2))); num2))); num2))); num2))); 13 فصل اول :مبانی زبان پایتون The product of 5 and 3 is 15. The quotient of 5 and 3 is 1.67. The remainder of 5 divided by 3 is 2. The result of 5 power 3 is 125. The quotient of 5 and 3 is 1. !Hello World برنامه باال نتیجه هر عبارت را نشان میدهد .در این برنامه از متد )( printبرای نشان دادن نتایج در سطرهای متفاوت استفاده شده است .در خط 9برای اینکه ارقام کسری بعد از عدد حاصل دو رقم باشند از } {2:.2fاستفاده میکنیم {2:.2f} .در این جا بدین معناست که عدد را تا دو رقم اعشار نمایش بده .پایتون خط جدید و فاصله و فضای خالی را نادیده میگیرد .در خط 17مشاهده میکنید که دو رشته به وسیله عملگر +به هم متصل شدهاند .نتیجه استفاده از عملگر +برای چسباندن دو کلمه “ “Helloو ”“!World رشته ” “!Hello Worldخواهد بود .به فاصله های خالی بعد از اولین کلمه توجه کنید اگر آنها را حذف کنید از خروجی برنامه نیز حذف میشوند. عملگرهای تخصیصی ( جایگزینی) نوع دیگر از عملگرهای پایتون عملگرهای جایگزینی نام دارند .این عملگرها مقدار متغیر سمت راست خود را در متغیر سمت چپ قرار میدهند .جدول زیر انواع عملگرهای تخصیصی در پایتون را نشان میدهد: عملگر مثال نتیجه = ;var1 = var2 مقدار 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برابر است با حاصل تقسیم var1بر var2 از عملگر = +برای اتصال دو رشته نیز میتوان استفاده کرد .استفاده از این نوع عملگرها در واقع یک نوع خالصه نویسی در کد است .مثال ً شکل اصلی کد var1 += var2به صورت var1 = var1 + var2میباشد .این حالت کدنویسی زمانی کارایی خود را نشان میدهد که نام متغیرها طوالنی باشد .برنامه زیر چگونگی استفاده از عملگرهای تخصیصی و تأثیر آنها را بر متغیرها نشان میدهد: 24 فصل اول :مبانی زبان پایتون ;)"print("Assigning 10 to number... ;number = 10 ;))print("Number = {0}" .format(number ;)"print("Adding 10 to number... ;number += 10 ;))print("Number = {0}" .format(number ;)"print("Subtracting 10 from number... ;number -= 10 ;))print("Number = {0}" .format(number 1 2 3 4 5 6 7 8 9 10 11 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 = var2 == var3 =! var1 = var2 != var3 >< var1 = var2 <> var3 نتیجه var1در صورتی Trueاست که مقدار var2با مقدار var3برابر باشد در غیر اینصورت Falseاست var1در صورتی Trueاست که مقدار var2با مقدار var3برابر نباشد در غیر اینصورت Falseاست var1در صورتی Trueاست که مقدار var2با مقدار var3برابر نباشد در غیر اینصورت Falseاست 15 فصل اول :مبانی زبان پایتون var1در صورتی Trueاست که مقدار var2کوچکتر از var3مقدار باشد در غیر < var1 = var2 < var3 > var1 = var2 > var3 =< var1 = var2 <= var3 => var1 = var2 >= var3 اینصورت Falseاست var1در صورتی Trueاست که مقدار var2بزرگتر ازمقدار var3باشد در غیر اینصورت Falseاست var1در صورتی Trueاست که مقدار var2کوچکتر یا مساوی مقدار var3باشد در غیر اینصورت Falseاست var1در صورتی Trueاست که مقدار var2بزرگتر یا مساوی var3مقدار باشد در غیر اینصورت Falseاست برنامه زیر نحوه عملکرد این عملگرها را نشان میدهد: ;num1 = 10 ;num2 = 5 ;))num2 ;))num2 ;))num2 ;))num2 ;))num2 ;))num2 ;))num2 == =! =! < > =< => num1 num1 num1 num1 num1 num1 num1 num2, num2, num2, num2, num2, num2, num2, .format(num1, .format(num1, .format(num1, .format(num1, .format(num1, .format(num1, .format(num1, "}{2 "}{2 "}{2 "}{2 "}{2 "}{2 "}{2 : : : : : : : }{1 }{1 }{1 }{1 }{1 }{1 }{1 == =! >< < > =< => }print("{0 }print("{0 }print("{0 }print("{0 }print("{0 }print("{0 }print("{0 10 == 5 : False 10 != 5 : True 10 <> 5 : True 5 : False < 10 5 : True > 10 10 <= 5 : False 10 >= 5 : True در مثال باال ابتدا دو متغیر را که میخواهیم با هم مقایسه کنیم را ایجاد کرده و به آنها مقادیری اختصاص میدهیم .سپس با استفاده از یک عملگر مقایسهای آنها را با هم مقایسه کرده و نتیجه را چاپ میکنیم .به این نکته توجه کنید که هنگام مقایسه دو متغیر از عملگر == به جای عملگر = باید استفاده شود .عملگر = عملگر تخصیصی است و در عبارتی مانند x = yمقدار yرا در به xاختصاص میدهد. عملگر == عملگر مقایسهای است که دو مقدار را با هم مقایسه میکند مانند x==yو اینطور خوانده میشود xبرابر است با .y 26 فصل اول :مبانی زبان پایتون عملگرهای منطقی عملگر های منطقی بر روی عبارات منطقی عمل می کنند و نتیجه آنها نیز یک مقدار بولی است .از این عملگرها اغلب برای شرطهای پیچیده استفاده می شود .همانطور که قبال یاد گرفتید مقادیر بولی می توانند Falseیا Trueباشند .فرض کنید که var2و var3دو مقدار بولی هستند. مثال عملگر and ;var1 = var2 and var3 or ;var1 = var2 or var3 not ;)var1 = not (var1 عملگر منطقی and اگر مقادیر دو طرف عملگر True ،andباشند عملگر andمقدار Trueرا بر می گرداند .در غیر اینصورت اگر یکی از مقادیر یا هر دوی آنها Falseباشند مقدار Falseرا بر می گرداند .در زیر جدول درستی عملگر andنشان داده شده است: X and Y Y X True True True False False True False True False False False False برای درک بهتر تاثیر عملگر andیاد آوری می کنم که این عملگر فقط در صورتی مقدار Trueرا نشان می دهد که هر دو عملوند مقدارشان Trueباشد.در غیر اینصورت نتیجه تمام ترکیبهای بعدی Falseخواهد شد .استفاده از عملگر andمانند استفاده از عملگرهای مقایسه ای است .به عنوان مثال نتیجه عبارت زیر درست ) (Trueاست اگر سن ) (ageبزرگتر از 11و salaryکوچکتر از 1111باشد. ;)result = (age > 18) and (salary < 1000 عملگر andزمانی کارامد است که ما با محدود خاصی از اعداد سرو کار داریم .مثال عبارت 10 <= x <= 100بدین معنی است که x می تواند مقداری شامل اعداد 11تا 111را بگیرد .حال برای انتخاب اعداد خارج از این محدوده می توان از عملگر منطقی andبه صورت زیر استفاده کرد. ;)(number >= 100 inRange = (number <= 10) and 17 فصل اول :مبانی زبان پایتون عملگر منطقی or اگر یکی یا هر دو مقدار دو طرف عملگر ،orدرست ) (Trueباشد ،عملگر orمقدار Trueرا بر می گرداند .جدول درستی عملگر or در زیر نشان داده شده است : X or Y Y X True True True True False True True True False False False False در جدول باال مشاهده می کنید که عملگر orدر صورتی مقدار Falseرا بر میگرداند که مقادیر دو طرف آن Falseباشند .کد زیر را در نظر بگیرید.نتیجه این کد در صورتی درست ) (Trueاست که رتبه نهایی دانش آموز ) (finalGradeبزرگتر از 75یا یا نمره نهایی امتحان آن 111باشد. ;)isPassed = (finalGrade >= 75) or (finalExam == 100 عملگر منطقی not برخالف دو اپراتور orو andعملگر منطقی NOTیک عملگر یگانی است و فقط به یک عملوند نیاز دارد .این عملگر یک مقدار یا اصطالح بولی را نفی می کند .مثال اگر عبارت یا مقدار Trueباشد آنرا Falseو اگر Falseباشد آنرا Trueمی کند .جدول زیر عملکرد اپراتور NOTرا نشان می دهد: not X X False True True False نتیجه کد زیر در صورتی درست است که ( ageسن) بزرگتر یا مساوی 11نباشد. ;)isMinor = not(age >= 18 عملگرهای بیتی عملگرهای بیتی به شما اجازه میدهند که شکل باینری انواع داده ها را دستکاری کنید .برای درک بهتر این درس توصیه میشود که شما سیستم باینری و نحوه تبدیل اعداد دهدهی به باینری را از لینک زیر یاد بگیرید: 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نیاز دارد .به این نکته توجه کنید که اعداد باینری از سمت راست به چپ خوانده میشوند .عملگرهای بیتی پایتون در جدول زیر نشان داده شدهاند: مثال عملگر & ;x = y & z | ;x = y | z ^ ;x = y ^ z ~ ;x = ~y =& ;x &= y =| ;x |= y =^ ;x ^= y عملگر بیتی )&(AND عملگر بیتی ANDکاری شبیه عملگر منطقی ANDانجام میدهد با این تفاوت که این عملگر بر روی بیتها کار میکند .اگر مقادیر دو طرف آن 1باشد مقدار 1را بر میگرداند و اگر یکی یا هر دو طرف آن صفر باشد مقدار صفر را بر میگرداند .جدول درستی عمگر بیتی ANDدر زیر آمده است: X AND Y Y X 1 1 1 0 0 1 0 1 0 0 0 0 در زیر نحوه استفاده از عملگر بیتی ANDآمده است: ;result = 5 & 3 19 فصل اول :مبانی زبان پایتون ;)print(result 1 همانطور که در مثال باال مشاهده میکنید نتیجه عملکرد عملگر ANDبر روی دو مقدار 5و 3عدد یک میشود .اجازه بدهید ببینیم که چطور این نتیجه را به دست میآید: 00000000000000000000000000000101 5: 00000000000000000000000000000011 3: -----------------------------------00000000000000000000000000000001 1: ابتدا دو عدد 5و 3به معادل باینریشان تبدیل میشوند .از آنجاییکه هر عدد صحیح ) 31 (intبیت است از صفر برای پر کردن بیتهای خالی استفاده میکنیم .با استفاده از جدول درستی عملگر بیتی ANDمیتوان فهمید که چرا نتیجه عدد یک میشود. عملگر بیتی )|(OR اگر مقادیر دو طرف عملگر بیتی ORهر دو صفر باشند نتیجه صفر در غیر اینصورت 1خواهد شد .جدول درستی این عملگر در زیر آمده است: X Y X OR Y 1 1 1 1 0 1 0 1 1 0 0 0 نتیجه عملگر بیتی ORدر صورتی صفر است که عملوندهای دو طرف آن صفر باشند .اگر فقط یکی از دو عملوند یک باشد نتیجه یک خواهد شد .به مثال زیر توجه کنید: ;result = 7 | 9 ;)print(result 15 وقتی که از عملگر بیتی ORبرای دو مقدار در مثال باال ( 7و )9استفاده میکنیم نتیجه 15میشود .حال بررسی میکنیم که چرا این نتیجه به دست آمده است؟ 7: 00000000000000000000000000000111 9: 00000000000000000000000000001001 ----------------------------------15: 00000000000000000000000000001111 01 فصل اول :مبانی زبان پایتون با استفاده از جدول درستی عملگر بیتی ORمیتوان نتیجه استفاده از این عملگر را تشخیص داد .عدد 1111باینری معادل عدد 15صحیح است. عملگر بیتی )^(XOR جدول درستی این عملگر در زیر آمده است: X Y X XOR Y 1 1 0 1 0 1 0 1 1 0 0 0 در صورتیکه عملوندهای دو طرف این عملگر هر دو صفر یا هر دو یک باشند نتیجه صفر در غیر اینصورت نتیجه یک میشود .در مثال زیر تأثیر عملگر بیتی XORرا بر روی دو مقدار مشاهده میکنید: ;result = 5 ^ 7 ;)print(result 2 در زیر معادل باینری اعداد باال ( 5و )7نشان داده شده است. 5: 00000000000000000000000000000101 7: 00000000000000000000000000000111 ----------------------------------2: 00000000000000000000000000000010 با نگاه کردن به جدول درستی عملگر بیتی ،XORمیتوان فهمید که چرا نتیجه عدد 1میشود. عملگر بیتی )~(NOT این عملگر یک عملگر یگانی است و فقط به یک عملوند نیاز دارد .در زیر جدول درستی این عملگر آمده است: X NOT X 1 0 0 1 عملگر بیتی NOTمقادیر بیتها را معکوس میکند .در زیر چگونگی استفاده از این عملگر آمده است: 31 فصل اول :مبانی زبان پایتون ;result = 5 ^ 7 ;)print(result -8 به نمایش باینری مثال باال که در زیر نشان داده شده است توجه نمایید. 7: 00000000000000000000000000000111 ------------------------------------8: 11111111111111111111111111111000 عملگر بیتی تغییر مکان)(shift این نوع عملگرها به شما اجازه می دهند که بیتها را به سمت چپ یا راست جا به جا کنید .دو نوع عملگر بیتی تغییر مکان وجود دارد که هر کدام دو عملوند قبول می کنند .عملوند سمت چپ این عملگرها حالت باینری یک مقدار و عملوند سمت راست تعداد جابه جاییبیت ها را نشان میدهد. مثال عملگر نام >> تغییر مکان به سمت چپ ;x = y << 2 << تغییر مکان به سمت راست ;x = y >> 2 عملگر تغییر مکان به سمت چپ این عملگر بیتهای عملوند سمت چپ را به تعداد nمکان مشخص شده توسط عملوند سمت راست ،به سمت چپ منتقل میکند .به عنوان مثال: ;result = 10 << 2 ;)print(result 40 در مثال باال ما بیتهای مقدار 11را دو مکان به سمت چپ منتقل کردهایم ،حال بیایید تأثیر این انتقال را بررسی کنیم: 10: 00000000000000000000000000001010 -----------------------------------40: 00000000000000000000000000101000 02 فصل اول :مبانی زبان پایتون مشاهده میکنید که همه بیتها به اندازه دو واحد به سمت چپ منتقل شدهاند .در این انتقال دو صفر از صفرهای سمت چپ کم میشود و در عوض دو صفر به سمت راست اضافه میشود. عملگر تغییر مکان به سمت راست این عملگر شبیه به عمگر تغییر مکان به سمت چپ است با این تفاوت که بیتها را به سمت راست جا به جا میکند .به عنوان مثال: ;result = 100 >> 4 ;)print(result 6 با استفاده از عملگرتغییر مکان به سمت راست بیتهای مقدار 111را به اندازه 4واحد به سمت چپ جا به جا میکنیم .اجازه بدهید تأثیر این جا به جایی را مورد بررسی قرار دهیم: 100: 00000000000000000000000001100100 -----------------------------------6: 00000000000000000000000000000110 هر بیت به اندازه 4واحد به سمت راست منتقل میشود ،بنابراین 4بیت اول سمت راست حذف شده و چهار صفر به سمت چپ اضافه میشود. عملگرهای خاص عالوه بر عملگرهایی که تا کنون ذکر شد ،پایتون دارای عملگرهای خاص زیر نیز میباشد: عملگرهای membershipکه بررسی میکنند آیا متغیر مورد نظر در یک مجموعه ) (sequenceهمچون رشتهlist ،یا tupleوجود دارد یا خیر. عملگرهای Identityکه مکانهای قرار گیری دو شیء را با هم مقایسه میکند (بررسی میکنند آیا دوشی با هم برابر هستند یا خیر). در جدول زیر انواع عملگرهای membershipو Identityذکر شدهاند: توضیح عملگر در صورت یافتن متغیر مورد نظر در مجموعهی مشخص شده True ،و در غیر این Memberships operator in صورت Falseرا برمی گرداند. 33 فصل اول :مبانی زبان پایتون در صورت یافت نشدن متغیر مورد نظر در مجموعهی مشخص شده True ،و در not in غیر این صورت Falseرا برمی گرداند. اگر متغیرهای هر دو طرف عملگر به شی یکسان اشاره داشته باشند True ،و در is Identity operator غیر این صورت Falseرا برمی گرداند. چنانچه متغیر در دو طرف عملگر به شی یکسان اشاره داشته باشد False ،و در is not غیر این صورت Trueرا بر می گرداند. به مثالهای زیر توجه کنید: print(5 in ;)][3, 8, 5, 10 ;)]print(5 not in [3, 8, 5, 10 True False در خط اول کد باال ،چک میشود که آیا عدد 5در مجموعه ] [3, 8, 5, 10وجود دارد یا نه؟ و چون وجود دارد مقدار Trueبر گردانده میشود .در خط دوم هم که کامالً مشخص است که اگر عدد 5در مجموعه وجود نداشته باشد مقدار Trueبر گردانده میشود ولی چون عدد 5وجود دارد مقدار Falseبرگردانده میشود. ;number1 = 5 ;number2 = 6 print(number1 is ;)number2 ;)print(number1 is not number2 True False در مثال باال و در اولین مقایسه گفته شده است که آیا number1همان number2است و چون چنین نیست مقدار Falseو در مقایسه دوم هم گفته شده است که آیا number1برابر number2نیست؟ و چون برابر نیستند مقدار Trueبرگردانده شده است. گرفتن ورودی از کاربر پایتون متد ()inputرا برای گرفتن ورودی از کاربر ،در اختیار شما قرار میدهد .همانطور که از نام این متد پیداست ،تمام کاراکترهایی را که شما در محیط برنامه نویسی تایپ میکنید تا زمانی که دکمه enterرا میزنید ،میخواند .به برنامه زیر توجه کنید: ;)" = input("Enter your name: ;)" = input("Enter your age: name age 1 2 04 فصل اول :مبانی زبان پایتون ;)" height = input("Enter your height: #Print a blank line ;)(print #Show the details you typed ;))print("Name is {0}.".format(name ;))print("Age is {0}.".format(age ;))print("Height is {0}.".format(height 3 4 5 6 7 8 9 10 11 Enter your name: John Enter your age: 18 Enter your height: 160.5 Name is John. Age is 18. Height is 160.5. ابتدا 3متغیر را برای ذخیره داده در برنامه تعریف میکنیم (خطوط 1و 1و .)3برنامه از کاربر میخواهد که نام خود را وارد کند (خط .)1 در خط 1شما به عنوان کاربر نام خود را وارد میکنید .سپس برنامه از ما سن را سؤال میکند (خط .)3در خط 6هم یک خط فاصله به وسیله متد )( printایجاد کرده ایم تا بین ورودی های شما و خروجی فاصله ای جهت تفکیک ایجاد شود .حال برنامه را اجرا کرده و با وارد کردن مقادیر مورد نظر نتیجه را مشاهده کنید. ساختارهای تصمیم تقریبا همه زبانهای برنامه نویسی به شما اجازه اجرای کد را در شرایط مطمئن می دهند .حال تصور کنید که یک برنامه دارای ساختار تصمیم گیری نباشد و همه کدها را اجرا کند .این حالت شاید فقط برای چاپ یک پیغام در صفحه مناسب باشد ولی فرض کنید که شما بخواهید اگر مقدار یک متغیر با یک عدد برابر باشد سپس یک پیغام چاپ شود آن وقت با مشکل مواجه خواهید شد .پایتون راه های مختلفی برای رفع این نوع مشکالت ارائه می دهد .در این بخش با مطالب زیر آشنا خواهید شد: دستورif دستورif…else عملگر سه تایی دستور ifچندگانه دستور ifتو در تو عملگرهای منطقی 35 فصل اول :مبانی زبان پایتون دستور if میتوان با استفاده از دستور ifو یک شرط خاص که باعث ایجاد یک کد میشود یک منطق به برنامه خود اضافه کنید .دستور if سادهترین دستور شرطی است که برنامه میگوید اگر شرطی برقرار است کد معینی را انجام بده .ساختار دستور ifبه صورت زیر است: if (condition): code to execute قبل از اجرای دستور ifابتدا شرط بررسی میشود .اگر شرط برقرار باشد یعنی درست باشد سپس کد اجرا میشود .شرط یک عبارت مقایسهای است .میتوان از عملگرهای مقایسهای برای تست درست یا اشتباه بودن شرط استفاده کرد .اجازه بدهید که نگاهی به نحوه استفاده از دستور ifدر داخل برنامه بیندازیم .برنامه زیر پیغام Hello Worldرا اگر مقدار numberکمتر از 11و Goodbye Worldرا اگر مقدار numberاز 11بزرگتر باشد در صفحه نمایش میدهد: #Declare a variable and set it a value less than 10 ;number = 5 #If the value of number is less than 10 if (number < 10): ;)"print("Hello World. #Change the value of a number to a value which is greater than 10 ;number = 15 #If the value of number is greater than 10 if (number > 10): ;)"print("Goodbye World. 1 2 3 4 5 6 7 8 9 10 11 12 13 Hello World. Goodbye World. در خط 1یک متغیر با نام numberتعریف و مقدار 5به آن اختصاص داده شده است .وقتی به اولین دستور ifدر خط 1میرسیم برنامه تشخیص میدهد که مقدار numberاز 11کمتر است یعنی 5کوچکتر از 11است. منطقی است که نتیجه مقایسه درست میباشد ،بنابراین دستور ifدستور را اجرا میکند (خط )6و پیغام Hello Worldچاپ میشود. حال مقدار numberرا به 15تغییر میدهیم (خط .)9وقتی به دومین دستور ifدر خط 11میرسیم برنامه مقدار numberرا با 11مقایسه میکند و چون مقدار numberیعنی 15از 11بزرگتر است برنامه پیغام Goodbye Worldرا چاپ میکند (خط .)13به این نکته توجه کنید که دستور ifرا میتوان در یک خط نوشت: ;)"if (number > 10): print("Goodbye World. شما میتوانید چندین دستور را در داخل دستور ifبنویسید .کافیست که حواستان به تو رفتگی کدها باشد .نحوه تعریف چند دستور در داخل بدنه ifبه صورت زیر است: 06 فصل اول :مبانی زبان پایتون )if (condition ;statement1 ;statement2 . . . ;statementN این هم یک مثال ساده: ;x = 15 if (x > 10): ;)"print("x is greater than 10. ;)"print("This is still part of the if statement. در مثال باال اگر مقدار xاز 11بزرگتر باشد دو پیغام چاپ میشود .حال اگر به عنوان مثال ،تو رفتگی خط آخر را حذف کنیم و مقدار xاز 11 بزرگتر نباشد مانند کد زیر: ;x = 5 if (x > 10): ;)"print("x is greater than 10. ;)"print("This is not part of the if statement. کد باال در صورتی بهتر خوانده میشود که بین دستورات فاصله بگذاریم: ;x = 5 if (x > 10): ;)"print("x is greater than 10. ;)"print("This is not part of the if statement. میبیند که دستور آخر در مثال باال ،جز دستور ifنیست .اینجاست که چون ما فرض را بر این گذاشتهایم که مقدار xاز 11کوچکتر است پس خط)? This is not part of the if statement. (Reallyچاپ میشود .در نتیجه اهمیت وجود تو رفتگی مشخص میشود .به عنوان تمرین همیشه حتی اگر فقط یک دستور در بدنه ifداشتید برای آن یک تو رفتگی ایجاد کنید .فراموش نکنید که از قلم انداختن یک تو رفتگی باعث به وجود آمدن خطا شده و یافتن آن را سخت میکند .مثالی دیگر در مورد دستور :if ;)" firstNumber = input("Enter a number: ;)" secondNumber = input("Enter another number: if (firstNumber == secondNumber): ;))print("{0} == {1}".format(firstNumber, secondNumber if (firstNumber != secondNumber): 37 مبانی زبان پایتون:فصل اول print("{0} != {1}".format(firstNumber, secondNumber)); if (firstNumber < secondNumber): print("{0} < {1}".format(firstNumber, secondNumber)); if (firstNumber > secondNumber): print("{0} > {1}".format(firstNumber, secondNumber)); if (firstNumber <= secondNumber): print("{0} <= {1}".format(firstNumber, secondNumber)); if (firstNumber >= secondNumber): print("{0} >= {1}".format(firstNumber, secondNumber)); 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 ما از عملگرهای مقایسهای در دستور به این نکته توجه داشته باشید که شرطها مقادیر. اعداد با هم مقایسه میشوند و اگر شرط درست بود پیغامی چاپ میشود.میگیریم . می باشندFlase یاTrue یعنی دارای دو مقدار،بولی هستند if…else دستور اما زمانی که شما بخواهید. فقط برای اجرای یک حالت خاص به کار می رود یعنی اگر حالتی برقرار بود کار خاصی انجام شودif دستور if ساختار دستور. استفاده کنیدif else اگر شرط خاصی برقرار شد یک دستور و اگر برقرار نبود دستور دیگر اجرا شود باید از دستور : در زیر آمده استelse if (condition): code to execute if condition is true else: code to execute if condition is false; 08 فصل اول :مبانی زبان پایتون ً حتما باید با ifبه کار برده شود .اگر فقط یک کد اجرایی در داخل بدنه if از کلمه کلیدی elseنمیتوان به تنهایی استفاده کرد بلکه و بدنه elseدارید استفاده از آکوالد اختیاری است .کد داخل بلوک elseفقط در صورتی اجرا میشود که شرط داخل دستور if نادرست باشد .در زیر نحوه استفاده از دستور if…elseآمده است: ;number = 5 #Test the condition if (number < 10): ;)"print("The number is less than 10. else: ;)"print("The number is either greater than or equal to 10. #Modify value of number ;number = 15 #Repeat the test to yield a different result if (number < 10): ;)"print("The number is less than 10. else: ;)"print("The number is either greater than or equal to 10. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 The number is less than 10. The number is either greater than or equal to 10. در خط 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 در نهایت دستور 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 print("What's your favorite color?"); print("[1] Black"); print("[2] White"); print("[3] Blue"); print("[4] Red"); print("[5] Yellown"); choice = int(input("Enter your choice: ")); if (choice == 1): print("You might like my black t-shirt."); elif (choice == 2): print("You might be a clean and tidy person."); elif (choice == 3): print("You might be sad today."); elif (choice == 4): print("You might be inlove right now."); elif (choice == 5): print("Lemon might be your favorite fruit."); else: print("Sorry, your favorite color is not in the choices above."); What's your favorite color? [1] Black [2] White [3] Blue 41 مبانی زبان پایتون:فصل اول [4] Red [5] Yellow Enter your choice: 1 You might like my black t-shirt. What's your favorite color? [1] Black [2] White [3] Blue [4] Red [5] Yellow Enter your choice: 999 Sorry, your favorite color is not in the choices above. اگر. بسته به اینکه شما چه چیزی انتخاب میکنید پیغامهای مختلفی چاپ میشود. وابسته است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; : تو در تو را نشان دهیمif اجازه بدهید که نحوه استفاده از دستور 1 2 3 4 5 6 7 8 9 10 11 12 age = int(input("Enter your age: ")); gender = input("Enter your gender (male/female): "); if (age > 12): if (age < 20): if (gender == "male"): print("You are a teenage boy."); else: print("You are a teenage girl."); else: print("You are already an adult."); else: 11 فصل اول :مبانی زبان پایتون ;)"print("You are still too young. 13 Enter your age: 18 Enter your gender: male You are a teenage boy. Enter your age: 12 Enter your gender: female You are still too young. ا جازه بدهید که برنامه را کالبد شکافی کنیم .ابتدا برنامه از شما درباره سنتان سؤال میکند (خط .)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تو در تو در برنامه کمتر استفاده کنید چون خوانایی برنامه را پایین میآورد. استفاده از عملگرهای منطقی عملگرهای منطقی به شما اجازه می دهند که چندین شرط را با هم ترکیب کنید .این عملگرها حداقل دو شرط را در گیر میکنند و در آخر یک مقدار بولی را بر میگردانند .در جدول زیر برخی از عملگرهای منطقی آمده است : عملگر مثال تأثیر مقدار Zدر صورتی Trueاست که هر دو شرط دو طرف عملگر مقدارشان and )z = (x > 2) and (y < 10 or )z = (x > 2) or (y < 10 not )z = not(x > 2 Trueباشد .اگر فقط مقدار یکی از شروط Falseباشد مقدار False z ،خواهد شد. مقدار Zدر صورتی Trueاست که یکی از دو شرط دو طرف عملگر مقدارشان Trueباشد .اگر هر دو شرط مقدارشان Falseباشد مقدار z ، Falseخواهد شد . مقدار Zدر صورتی Trueاست که مقدار شرط Falseباشد و در صورتی Falseاست که مقدار شرط Trueباشد 42 فصل اول :مبانی زبان پایتون به عنوان مثال جمله )z = (x > 2) and (y < 10را به این صورت بخوانید“ :در صورتی مقدار zبرابر Trueاست که مقدار x بزرگتر از 2و مقدار yکوچکتر از 11باشد در غیر اینصورت Falseاست” .این جمله بدین معناست که برای اینکه مقدار کل دستور Trueباشد باید مقدار همه شروط Trueباشد .عملگر منطقی orتأثیر متفاوتی نسبت به عملگر منطقی andدارد .نتیجه عملگر منطقی orبرابر Trueاست اگر فقط مقدار یکی از شروط Trueباشد .و اگر مقدار هیچ یک از شروط Trueنباشد نتیجه Falseخواهد شد. میتوان عملگرهای منطقی andو orرا با هم ترکیب کرده و در یک عبارت به کار برد مانند: if ( (x == 1) and ( (y > 3) or z < 10) ) ): #do something here در اینجا استفاده از پرانتز مهم است چون از آن در گروه بندی شرطها استفاده میکنیم .در اینجا ابتدا عبارت )(y > 3) or (z < 10 مورد بررسی قرار میگیرد (به علت تقدم عملگرها) .سپس نتیجه آن بوسیله عملگر andبا نتیجه )(x == 1مقایسه میشود .حال بیایید نحوه استفاده از عملگرهای منطقی در برنامه را مورد بررسی قرار دهیم: ;))" age = int(input("Enter your age: ;)" gender = input("Enter your gender (male/female): if (age > 12 and age < 20): if (gender == "male"): ;)"print("You are a teenage boy. else: ;)"print("You are a teenage girl. else: ;)"print("You are not a teenager. 1 2 3 4 5 6 7 8 9 10 Enter your age: 18 Enter your gender (male/female): female You are a teenage girl. Enter you age: 10 Enter your gender (male/female): male You are not a teenager. برنامه باال نحوه استفاده از عملگر منطقی andرا نشان میدهد (خط .)4وقتی به دستور ifمیرسید (خط )4برنامه سن شما را چک میکند .اگر سن شما بزرگتر از 11و کوچکتر از 11باشد (سنتان بین 11و 11باشد) یعنی مقدار هر دو Trueباشد سپس کدهای داخل بلوک ifاجرا میشوند .اگر نتیجه یکی از شروط Falseباشد کدهای داخل بلوک elseاجرا میشود .عملگر andعملوند سمت چپ را مورد بررسی قرار میدهد .اگر مقدار آن Falseباشد دیگر عملوند سمت راست را بررسی نمیکند و مقدار Falseرا بر میگرداند .بر عکس عملگر orعملوند سمت چپ را مورد بررسی قرار میدهد و اگر مقدار آن Trueباشد سپس عملوند سمت راست را نادیده میگیرد و مقدار Trueرا بر میگرداند. if (x == 2 and y == 3): #Some code here 13 فصل اول :مبانی زبان پایتون )if (x == 2 or y == 3 #Some code here نکته مهم اینجاست که شما میتوانید از عملگرهای andو orبه عنوان عملگر بیتی استفاده کنید .تفاوت جزئی این عملگرها وقتی که به عنوان عملگر بیتی به کار میروند این است که دو عملوند را بدون در نظر گرفتن مقدار عملوند سمت چپ مورد بررسی قرار میدهند .به عنوان مثال حتی اگر مقدار عملوند سمت چپ Falseباشد عملوند سمت چپ به وسیله عملگر بیتی andارزیابی میشود .اگر شرطها را در برنامه ترکیب کنید استفاده از عملگرهای منطقی andو orبه جای عملگرهای بیتی andو orبهتر خواهد بود .یکی دیگر از عملگرهای منطقی عملگر notاست که نتیجه یک عبارت را خنثی یا منفی میکند .به مثال زیر توجه کنید: ))if (not(x == 2 ;)"print("x is not equal to 2. ا گر نتیجه عبارت x == 2برابر Falseباشد عملگر notآن را Trueمیکند. عملگر شرطی عملگر شرطی در پایتون مانند دستور شرطی if…elseعمل میکند .در زیر نحوه استفاده از این عملگر آمده است: condition_is_true if condition else condition_is_false عملگر شرطی تنها عملگر سه تایی پایتون است که نیاز به سه عملوند دارد ،یک مقدار زمانی که شرط درست باشد ،شرط و یک مقدار زمانی که شرط نادرست باشد .اجازه بدهید که نحوه استفاده این عملگر را در داخل برنامه مورد بررسی قرار دهیم: ;"pet1 = "puppy ;"pet2 = "kitten ;"type1 = "dog" if (pet1 == "puppy" ) else "cat ;"type2 = "cat" if (pet2 == "kitten") else "dog ;)print(type1 ;)print(type2 1 2 3 4 5 6 7 8 dog cat برنامه باال نحوه استفاده از این عملگر شرطی را نشان میدهد .خط 4به این صورت ترجمه میشود که مقدار dogرا در متغیر type1 قرار بده اگر مقدار pet1برابر با puppyبود در غیر این صورت مقدار catرا type1قرار بده .خط 5به این صورت ترجمه میشود که مقدار catرا در type2قرار بده اگر مقدار pet2برابر با kittenبود در غیر این صورت مقدار .dogحال برنامه باال را با استفاده از دستور if elseمینویسیم: 44 فصل اول :مبانی زبان پایتون if (pet1 == "puppy"): ;"type1 = "dog else: ;"type1 = "cat هنگامی که چندین دستور در داخل یک بلوک ifیا elseدارید از عملگر شرطی استفاده نکنید چون خوانایی برنامه را پایین میآورد. تکرار ساختارهای تکرار به شما اجازه می دهند که یک یا چند دستور کد را تا زمانی که یک شرط برقرار است تکرار کنید .بدون ساختارهای تکرار شما مجبورید همان تعداد کدها را بنویسید که بسیار خسته کننده است .مثالً شما مجبورید 11بار جمله ” “.Hello Worldرا تایپ کنید مانند مثال زیر: ;)"!World ;)"!World ;)"!World ;)"!World ;)"!World ;)"!World ;)"!World ;)"!World ;)"!World ;)"!World print("Hello print("Hello print("Hello print("Hello print("Hello print("Hello print("Hello print("Hello print("Hello print("Hello البته شما می توانید با کپی کردن این تعداد کد را راحت بنویسید ولی این کار در کل کیفیت کدنویسی را پایین میآورد .راه بهتر برای نوشتن کدهای باال استفاده از حلقهها است .حلقهها در پایتون عبارتند از: while for حلقه While ابتداییترین ساختار تکرار در پایتون حلقه Whileاست .ابتدا یک شرط را مورد بررسی قرار میدهد و تا زمانیکه شرط برقرار باشد کدهای درون بلوک اجرا میشوند .ساختار حلقه Whileبه صورت زیر است: while(condition): ;code to loop میبینید که ساختار Whileمانند ساختار ifبسیار ساده است .ابتدا یک شرط را که نتیجه آن یک مقدار بولی است مینویسیم اگر نتیجه درست یا trueباشد سپس کدهای داخل بلوک Whileاجرا میشوند .اگر شرط غلط یا falseباشد وقتی که برنامه به حلقه While برسد هیچکدام از کدها را اجرا نمیکند .برای متوقف شدن حلقه باید مقادیر داخل حلقه Whileاصالح شوند. 15 فصل اول :مبانی زبان پایتون ب ه یک متغیر شمارنده در داخل بدنه حلقه نیاز داریم .این شمارنده برای آزمایش شرط مورد استفاده قرار میگیرد و ادامه یا توقف حلقه به نوعی به آن وابسته است .این شمارنده را در داخل بدنه باید کاهش یا افزایش دهیم .در برنامه زیر نحوه استفاده از حلقه Whileآمده است: ;counter = 1 while (counter <= 10): ;)"!print("Hello World ;counter = counter + 1 !World !World !World !World !World !World !World !World !World !World Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello برنامه باال 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که در آینده توضیح خواهیم داد از حلقه خارج شوید. 46 فصل اول :مبانی زبان پایتون حلقه for یکی دیگر از ساختارهای تکرار حلقه forاست .این حلقه عملی شبیه به حلقه whileانجام میدهد .ساختار حلقه forبه صورت زیر است: for iterator_var in sequence: ;code to repeat iterator_varیک متغیر موقتی in ،کلمه کلیدی و sequenceهم یک سری مانند list ،tupleو … می باشد .می توان حلقه forرا اینگونه ترجمه کرد ،که به ازای یا به تعداد آیتم های موجود در سری ،فالن کارها یا کدها را تکرار کن .در زیر یک مثال از حلقهfor آمده است: for i in [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]: ;)print("Number ", i 1 2 3 4 5 6 7 8 9 10 Number Number Number Number Number Number Number Number Number Number برنامه باال اعداد 1تا 11را با استفاده از حلقه forمیشمارد .ابتدا یک متغیر موقتی ) ،(iسپس کلمه کلیدی inو در آخر یک سری از اعداد که در اینجا یک listمی باشد ،تعریف میکنیم .کد اجرا میشود .هر بار که حلقه اجرا می شود ،ابتدا یکی از آیتم های listدر متغیر iقرار گرفته و در خط بعد چاپ می شود .این کار تا چاپ آخرین آیتم ادامه می یابد .به جای listدر کد باال می توانید از tupleو dictionaryهم استفاده کنید: for i in (1, 2, 3, 4, 5, 6, 7, 8, 9, 10): یا for i in {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}: 17 فصل اول :مبانی زبان پایتون حلقه های تو در تو )(Nested Loops پایتون به شما اجازه میدهد که از حلقه ها به صورت تو در تو استفاده کنید .اگر یک حلقه در داخل حلقه دیگر قرار بگیرد ،به آن حلقه تو در تو گفته میشود .در این نوع حلقه ها ،به ازای اجرای یک بار حلقه بیرونی ،حلقه داخلی به طور کامل اجرا میشود .در زیر نحوه ایجاد حلقه تو در تو آمده است: for iterator_var in sequence: for iterator_var in sequence: )statements(s )statements(s while expression: while expression: )statement(s )statement(s نکتهای که در مورد حلقههای تو در تو وجود دارد این است که ،میتوان از یک نوع حلقه در داخل نوع دیگر استفاده کرد .مثالً میتوان از حلقه forدر داخل حلقه whileاستفاده نمود .در مثال زیر نحوه استفاده از این حلقهها ذکر شده است .فرض کنید که میخواهید یک مستطیل با 3سطر و 5ستون ایجاد کنید: for i in (1, 2, 3, 4): for j in (1, 2, 3, 4, 5): ;)' '=print("*", end ;)(print * * * * * * * * * * * * * * * * 1 2 3 4 * * * * در کد باال به ازای یک بار اجرای حلقه forاول (خط ،)1حلقه forدوم ( )1-3به طور کامل اجرا میشود .یعنی وقتی مقدار iبرابر عدد 1میشود ،عالمت * توسط حلقه دوم 5بار چاپ میشود ،وقتی iبرابر 1میشود ،دوباره عالمت * پنج بار چاپ میشود و … .در کل منظور از دو حلقه forاین است که در 4سطر عالمت * در 5ستون چاپ شود یا 4سطر ایجاد شود و در هر سطر 5بار عالمت * چاپ شود .خط 4هم برای ایجاد خط جدید است .یعنی وقتی حلقه داخلی به طور کامل اجرا شد ،یک خط جدید ایجاد میشود و عالمتهای * در خطوط جدید چاپ میشوند. 48 فصل اول :مبانی زبان پایتون خارج شدن از حلقه با استفاده از continue،breakو pass گاهی اوقات با وجود درست بودن شرط می خواهیم حلقه متوقف شود .سؤال اینجاست که چطور این کار را انجام دهید؟ با استفاده از کلمه کلیدی breakحلقه را متوقف کرده و با استفاده از کلمه کلیدی continueمیتوان بخشی از حلقه را رد کرد و به مرحله بعد رفت. برنامه زیر نحوه استفاده از break ،continueو passرا نشان میدهد: ;)"print("Demonstrating the use of break\n for x in (1, 2, 3, 4, 5, 6, 7, 8, 9, 10): if (x == 5): ;break ;)print("Number ", x ;)"print("\nDemonstrating the use of continue\n for x in (1, 2, 3, 4, 5, 6, 7, 8, 9, 10): if (x == 5): ;continue ;)print("Number ", x ;)"print("\nDemonstrating the use of pass\n for x in (1, 2, 3, 4, 5, 6, 7, 8, 9, 10): if (x == 5): ;pass 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 Demonstrating the use of break 1 2 3 4 Number Number Number Number Demonstrating the use of continue 1 2 3 4 6 7 8 9 10 Number Number Number Number Number Number Number Number Number 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