{#control-flow}
برنامههایی که تا به حال مینوشتیم، یک مجموعهی از فراخوانیها بود که توسط پایتون به صورت مرتب از بالا به پایین اجرا میشدند. حال اگر بخواهید گردش را تغییر بدهید باید چه کرد؟ برای مثال اگر بخواهید برنامه کارهای مختلفی در موقعیتهای مختلف را انجام دهد. همانند چاپ در زمانهای مختلف روز 'شببخیر' و 'صبحبخیر' .
همان طور که شما حدس زدید این کنترل گردش است. در پایتون با سه روش میتوان این کار را انجام داد: دستورات - if
, for
و while
دستور if
برای بررسی شرط استفاده میشود. if(اگر) شرط برقرار است بلوک اجرا میشود(بلوک if فراخوانی میشود). else(وگرنه) بلوک مربوط به وگرنه(بلوک else فراخوانی میشود) بررسی میشود. بند else اختیاری است.
برای مثال (فایل if.py
را ذخیره کنید)
برای مشاهده برنامهها بهتر است به لینک زیر سر بزنید:
{% include "./programs/if.py" %}
خروجی:
{% include "./programs/if.txt" %}
چگونه و چطور
در این برنامه فرضیات کاربران را میگیریم و فرضیات را بررسی میکنیم. برای مثال ایا ورروی عدد است؟. حال متغییری با نام +number+ را با هر عدد صحیح که میخواهیم پر میکنیم. برای مثال عدد ۲۳
است. در گام بعدی در نظر میگیرم که کاربر از تابع input()
که برای ورودی گرفتن است، استفاده میکند. این تابعهابرنامههای هستند که از چندین بخش برنامههای کوچک ساخته شدهاند. دربارهی این موضوع در فصل تابعها بحث خواهیم کرد.
در گام رشته موجود را با استفاده از تابع input
میگیریم که برروی صفحهای نمایش نشان داده میشود و منتظر گرفتن ورودی از کاربر میشود. وقتی که که ما چیزی را وارد میکنیم و دکمه [enter] کیبورد را فشار میدهیم تابع input()
انچه که ما وارد کرده بودیم رابه صورت یک رشته برمیگرداند.بعد ما با استفاده از int
ان را به عدد تبدیل میکنیم و ان را در متغییر برای کاربر فرض کردیم ذخیره میکنیم.در صورتکه که int
کلاس است ولی چیزی که شما ان را باید بدانید ان است که شما میتوانید برای تبدیل رشته به عدد استفاده کنید(اگر رشته در حد مجاز عدد داشته باشد).
در گام بعدی ما فرض کاربر را با عددی که ما در نظر گرفته بودیم را بررسی میکنیم. اگر این اعداد مساوی هستند چاپ میکنیم صحیح است. این نکته را در نظر بگیرید که ما از فاصلههاو تورفتگیها استفاده میکنیم برای انکه به پایتون بگویم که کدام یک از فراخوانیها مال کدام یک از بلوکها هستند. امیدوارم که تورفتگیها و فاصلهها("consistent indentation") را در اینده رعایت کنید.
توجه داشته باشید که دستور if
در اخر داری دونقطه میباشدکه بعد از ان بلوک دستورات است(با تورفتگیها همچنین).
در گام بعدی بررسی میشود که اگر عدد گفته شده کمتر از عدد ما است به کاربر پیام میدهیم که باید عدد بالاتری را حدس برند.دستوری که ما در اینجا استفاده میکنیم elif
است.که دو دستور را if else-if else
با هم متصل میکند و به این صورت میشود if-elif-else
.این روش برنامهنویسی و همچنین تعداد تورفتگی ها را کمتر میکند.
دستور elif
و else
همچنین باید داری دو نقطه باشند.
در دستور if
میتوان از if
دیگر در داخل ان استفاده کرد به این روش if
های تودرتو میگویند.
یاداوری قسمتها elif
و else
ضروری نیست.if
تنها کوتاهترین روش است.
if True:
print('Yes, it is true')
بعد از اینکه پایتون دستور if
را همراه با بخشهای elif
و else
اجرا کرد، پایتون به بلوک بعدی میرود که در داخل if
است. در اینجا بلوک اصلی است(جاییکه برنامه اجرا میشود). در ادامه دستور print
و اتمام شرط استپایان
.
با اینکه این برنامه یک برنامه ساده است، به نکتههای مهم اشاره کردم. چیزهای گفتنی گفته شد. همانطور که میبینید بسیار ساده است (اگر بخواهیم با پشت صحنهی سی و سیپلاس پلاس مقایسه کنیم). دراین گام باید مفهوم این موضوع را درک کنید. بعد از تمرین این موضوع برایتان این یک امر ساده میشود.
نکته برای برنامههای سی و سیپلاس پلاس
در پایتون دستور
switch
نداریم. از دستورif..elif..else
میتوانید برای انجام همان کارها نیز استفاده کنید. همچنین گاهی اوقات هم از ساختاردادهها برای انجام این کار استفاده میکنند.
دستور while برای تکرار یک بلوک استفاده میشود، به شرط انکه شرطه گفته شده برقرار باشد. دستور while به نام looping(حلقه) همچنین مینامند. دستور while میتواند به صورت اختیاری قسمت else
را داشته باشد.
برای مثال(فایلی با نام while.py
ذخیره کنید)
برای مشاهده برنامهها بهتر است به لینک زیر سر بزنید:
{% include "./programs/while.py" %}
خروجی:
{% include "./programs/while.txt" %}
چگونه و چطوری
در این برنامههم ما بازی حدس بزن را بازی میکنیم ولی مزیتاش انیجاست که تا زمانی که درست حدس نزنید این مکان هست که ادامه بدهید. دیگر در اینجا نیاز نیست هر سری برنامه را برای حدس زدن اجرا کنیم(انچه که قبل انجام میدادیم).این به طور دقیق توانایی دستور while
را نمایش میدهد.
ما دستورهای input
و if
را به داخل حلقهی while
تغییر میدهیم و متغییر running
برابر با True
قبل از حلقهی while قرارمیدهیم.در اولین گام ما بررسی میکنیم که ایا متغییر running
برابر است با True
اگر درست است به بلوک حلقهی while میرویم.پس از انجام بلوک دوباره شرط بررسی میشود که در اینجا متغییر running
است. اگر درست است که بلوک ااجرا میشود وگرنه بلوک else که اختیاری است اجرا میشود.بعد ان هم به فراخوانیها گفته شده میرود.
بلوک else
زمانی اجرا میشود که داخل حلقه while
برابر با False
باشد.پس هر گاه شرط برقرار نباشد این بلوک اجرا میشود.این موضوع را هم در نظر داشته باشید که در حلقه while
این شرط پشت سرم هم اجرا میشود مگر انکه با دستور break
به ان خاتمه دهید.
به True
و False
نوع بولین میگویند و میتوان یک جورایی با 1
و 0
همسان دانست.
نکته برای برنامههای سی و سیپلاس پلاس
بخاطر داشته باشید که برای حلقهی
while
میتوانید ازelse
استفاده کنید.
دستور for..in
یک فراخوانی در حلقهها است که کار تکرار را انجام میدهد. ان هم به صورت ترتیبی این کار را انجام میدهد.ما جرییات بیشتر دربارهی sequences(ترتیب یا دنبالهها) در فصول بعدی خواهیم دید. شما باید این موضوع را درک کنید که دنبالهها فقط یک مجموعهی از دستورالعمل هستند.
مثال (فایلی با نام for.py
ذخیره کنید)
{% include "./programs/for.py" %}
خروجی:
{% include "./programs/for.txt" %}
چگونه و چطوری
در این برنامه ما دنبالهی از اعداد را چاپ میکنیم. ما این دنباله را با استفاده از تابع range
میسازیم.
کاری که ما اینجا انجام میدهیم باید دو عدد را در نظر بگیریم برای range
یک عدد برای شروع دنباله و عدد دوم برای پایان دنباله.برای مثال (range(1,5
نتیجهی دنبالهاش [1, 2, 3, 4]
میشود.در حالت عادی گامهای range
یکی یکی است. اگر بخواهیم این را تغییر بدهیم کافی عدد سومی را به range
اضافه کنیم. برای مثال (range(1,5,2
نتیجهی دنبالهاش [1,3]
میشود. این نکته را در نظر داشته باشید که range(دامنه) تا عدد دوم اضافه میشود.
این نکته را در نظر دشته باشید که ()range
هر بار یک عدد را میسازد. اگر شما لیست کامل را میخواهید باید ()list
را صدا بزنید. برای مثال ((list(range(5
که نتیجهاش [0, 1, 2, 3, 4]
میشود.list در بخش ساختار داده توضیح داده میشود.
حلقهی for
براساس این دامنه (for i in range(1,5
که همانند [for i in [1, 2, 3, 4
این دامنه است این کار را انجام میدهد.بدان معنی که هر عدد هر بار به ترتیب به i اضافه میشود.سپس دوباره به تعداد مقدار i ،بلوک for اجرا میشود. در این برنامه ما فقط مقدار بلوک را چاپ میکنیم.
به یاد داشته باشید که بخش else
اختیاری است. اگر شامل این بخش باشد، این بخش پس از یک بار اجرا شدن حلقهی for
اجرا میشود به شرط انکه از << دستور ,break>> استفاده نشده باشد.
به یاد داشته باشید که حقلهی for..in
برای هر دنبالهی کار میکند. در اینجا از range
برای ساختن اعداد استفاده کردیم ولی میتوانیم برای روشهای دیگر نیز استفاده کنیم. در مورد این موضوع در فصول بعدی بحث خواهیم کرد.
نکته برای برنامههای سی ، سیپلاسپلاس، جاوا ، سی شارپ
حلقهی
for
در پایتون از ریشه با برنامه سی و سیپلاسپلاس تفاوت دارند. ولی برنامهنویسان سیشارپ به این نکته توجه کنند که حلقهیfor
پایتون شبیه حلقهیforeach
سیشارپ است. برای برنامهنویسان جاوا هم همینطور است (حلقهیfor (int i : IntArray)
در جاوا ۱.۵).در برنامهنوسی سی وسیپلاسپلاس اگر شما میخواستید همچین حلقهی
(++for (int i = 0; i < 5; i
را بنویسید در پایتون کافی است این دستور را(for i in range(0,5
بنویسد. همانطور که میبینیدحلقهیfor
خیلی اسانتر وسادهتر شده است.همین موضوع باعث کمتر شدن خطا در پایتون میشود.
{#break-statement}
دستور break
برای قطع کردن حلقه و خارج شدن از حلقه استفاده میشود. حتی اگر در حلقه نتیجهاش False
نباشه ویا حلقه کامل اجرا نشده باشد، با این دستور از حلقه خارج میشوید.
توجه داشته باشید که اگر دستور break را در حلقههای for
یا while
استفاده میکنید دیگر بخش else
اجــرا نـــخواهد شـــد.
برای مثال (فایلی با نام break.py
ذخیره کنید)
{% include "./programs/break.py" %}
خروجی:
{% include "./programs/break.txt" %}
چگونه و چطوری
در این برنامه ما دوباره از کاربر ورودی میگیریم و طول ورودی را هر بار محاسبه میکنیم. اما شرطی قرار میدهیم که اگر ورودی کاربر 'quit'
بود از برنامه خارج شود.اینکار با استفاده از دستور breaking در حلقه انجام میشود.
اما طول رشته وروردی با استفاده از تابع len
محاسبه میشود.
این نکته را هم به یاد داشته باشید که دستور break
در حلقهی for
قابله استفاده است.
**Swaroop's : اشعار پایتون **
Programming is fun
(برنامهنویسی یک سرگرمیه)
When the work is done
(وقتی کار تمومه)
if you wanna make your work also fun:
(اگر میخواهید کارتون رو تبدیل به سرگرمی کنید:)
use Python!
(از پایتون استفاده کنید!)
{#continue-statement}
دستور continue
در پایتون برای نادیده گرفتن شروط در بلوک مربوطه استفاده میشود و دستورات بعدی را continue
را اجرا میکند.
برای مثال(فایلی با نام continue.py
ذخیره کنید)
{% include "./programs/continue.py" %}
خروجی:
{% include "./programs/continue.txt" %}
چگونه و چطوری
در این برنامه از ورودی کابر استفاده میکنیم. اما شرطی دارد ان هم که اگر رشتهی وروری کمتر ۳ کلمه طول داشته باشد و با استفاده از دستور len
طول رشته را به دست میاوریم و اگر طول رشته کمتر سه تا بود ان موقع ما بلوک بعدی continue
را نادیده میگیریم. در غیر این صورت دستور بلوک را ادامه میدهیم و عملیات مربوط ان بلوک را انجام میدهیم.
این نکته را هم در نظر داشته باشید که دستور continue
در حلقه for
نیز میتوان استفاده کرد.
ما دیدیم که چگونه از سه دستور if
، while
و for
همچنین break
و continue
استفاده کنیم. این یکی از بخشهای که خیلی در پایتون استفاده میشود و این موضوع باعث میشود برنامهها کمی راحتترکارکنند.
در فصول بعدی خواهیم دید که چگونه از تابعها استفاده کنیم.