ساختارهای کنترل جریان (Control Flow) چکونگی ترتیبی که برنامه باید اجرا شود را کنترل می کنند. در زبان های برنامه سازی ساختارهای شرطی if، حلقه ها و فراخوانی توابع جریان اجرای برنامه ها را تعیین می کنند. زبان پایتون عبارت شرطی if و حلقه های for و while را پشتیبانی می کند ولی از do while و switch ها پشتیبانی نمی کند.

ساختار شرطی if

اگر می خواهید عبارتی بر اساس بر آورده شدن یک شرط انجام شود، باید از ساختار شرطی if استفاده کنید. پایتون از ساختار شرطی if در ترکیب با else و elif استفاده می کند. کد زیر حالت کلی از ساختار شرطی if را نشان می دهد.

  • بخش های elif و else اختیاری هستند و می توان از آنها بر اساس شرایط کد نویسی خود صرف نظر کنید.
  • در جلوی if و elif شروط قرار می گیرند و در انتهای شروط علامت : باید قرار داشته باشد. بر خلاف زبان هایی مانند C نیاز به قرار دادن شروط در پرانتزها نیست.
  • هر یک از بدنه های if, elif و else می توانند یک یا چند عبارت داشته باشند.
  • بدنه هر بخش با یک فاصله مشخص می شود. برای اطلاع بیشتر اینجا را مطالعه کنید.

مثال ۱ – از ورودی یک عدد توسط تابع ()raw_input دریافت کنید و سپس چک کنید که آیا عدد وارد شده زوج است یا نه و در صورت زوج بودن پیغام مناسب نشان داده شود. ورودی که توسط تابع ()raw_input دریافت می شود به صورت رشته در متغیر ذخیره خواهد شد، بنابراین از تابع ()int برای تبدیل آن به عدد صحیح استفاده می کنیم. همچنین فقط می خواهیم در صورت زوج بودن پیغام نشان داده شود. عددی زوج است که باقیمانده تقسیم آن بر ۲ برابر صفر باشد.

مثال ۲ – کد مثال ۱ را به صورتی باز نویسی کنید که اگر عدد فرد بود، پیغام مناسب نشان داده شود.

مثال ۳ – مثال های ۱ و ۲ را به صورتی باز نویسی کنید که بررسی شود آیا عدد منفی است یا مثبت، اگر عدد منفی بود پیغام مناسب نشان داده شود، در غیر این صورت عدد مثبت است و باید بررسی شود که آیا عدد زوج یا فرد است. از مثال های ۱ و ۲ و ۳ مشخص است که بخش else و همچنین elif اختیاری است و می توان از آنها بر اساس کدی که می خواهید بنویسید، صرف نظر کنید

 ساختارهای شرطی if تو در تو

ساختارهای شرطی می توانند به صورت تو در تو استفاده شوند. در این حالت چیزی که اهمیت دارد، فاصله گذاری درست  است تا هر یک از بلاک ها به صورت درست تعیین شوند.

مثال ۴ – یک عدد اعشاری از ورودی دریافت کنید و سپس چک کنید که آیا عدد مثبت یا منفی است. اگر عدد مثبت بود مجدد بررسی شود که آیا عدد صفر یا غیر صفر است و  برای هر یک پیامی مناسب نشان داده شود.

مثال ۵ – در این مثال نشان داده می شود که هر یک از ساختارهای شرطی می توانند بیش از یک عبارت درون خود داشته باشند.

استفاده از عبارت pass در ساختار شرطی if

می توان عبارت pass را در ساختار شرطی if استفاده کرد. pass عملگر Null است و وقتی اجرا می شود، هیچ چیزی اتفاق نمی افتد. عبارت pass همچنین در تعریف توابع و کلاس ها نیز کاربرد دارد، به طوری که نام تابع و کلاس تعریف شده است ولی هنوز بدنه و عبارت های درون تابع و کلاس را نمی خواهیم تعریف کنیم.

مثال ۶ – دو عدد صحیح از ورودی دریافت شود و اگر عدد اول از عدد دوم کوچکتر بود هیچ اتفاقی نیافتد و در غیر این صورت عدد اول از عدد دوم کم و نتیجه تفریق نشان داده شود.

ساختار حلقه while

 حلقه while برای تکرار کردن یک یا چند عبارت بر اساس یک شرط استفاده می شود. تکرار شدن عبارات تا زمانی انجام می شود که شرط حلقه while بر آورده شود، در غیر این صورت تکرار به اتمام می رسد. حلقه while از بخش های else و break و continue پشتیبانی می کند. فرم کلی استفاده از حلقه تکرار while به صورت زیر است.

  • شرط حلقه در جلوی while نوشته می شود و پس از اتمام شرط حلقه علامت : قرار می گیرد. نیازی به قار دادن شرط حلقه میان پرانتزهای باز و بسته نیست.
  • عبارت های درون بلاک while باید با یک فاصله مشخص شده باشند. برای اطلاع بیشتر اینجا را مطالعه کنید.

مثال ۷ – مجموع ۱۰ عدد اول از اعداد طبیعی را محاسبه کنید. اعداد طبیعی اعدادی هستند از عدد ۱ شروع و تا بی نهایت ادامه دارند.

شرط حلقه تا زمانی درست (True) است که مقدار متغیر counter کوچکتر یا مساوی مقدار متغیر number باشد. متغیر number همان ۱۰ عدد اول را مشخص می کند و چون counter در ابتدا ۱ است پس به معنی مجموع ۱۰ عدد اول از ۱ تا ۱۰ خواهد بود. در خط ۶ مجموع اعداد محاسبه می شود و در خط ۷ نیز یکی به شمارنده counter اضافه می شود. دستور print نیز خارج از حلقه قرار دارد و پس از نقض شرط حلقه یعنی counter > number یا به عبارتی ۱۰ < ۱۱، پیغام دستور print نشان داده خواهد شد.

مثال ۸ – توسط ساختار شرطی if و حلقه while یک منو ایجاد کنید. در این منو با ورود اعداد ۱ و ۲ و ۳ یک یا مجموعه ای از عبارت ها و یا یک تابع اجرا می شوند. در قطعه کد ۸ از تابع ()raw_input برای دریافت ورودی و دخیره آن در یک متغیر استفاده می شود.

ساختار حلقه for

در پایتون for با دیگر زبان های پیشین خودش مانند سی، سی پلاس پلاس، سی شارپ و جاوا تفاوت دارد. الگوی زیر ساختار کلی for در پایتون را نشان می دهد که در آن container همان متغیری است که می خواهیم بر روی عنصرهای آن پیمایش کنیم و item در هر بار به هر کدام از عنصرهای container اشاره دارد.

در کد زیر می خواهیم به کمک حلقه for همه کاراکترهای درون یک رشته را در یک خط نشان دهیم. حلقه تا زمانی ادامه دارد که هنوز به واپسین (آخرین) کاراکتر رشته نرسیده باشد. پس از رسیدن به واپسین کاراکتر، آن چاپ شده و سپس حلقه به پایان می رسد. بنابراین انجام حلقه ها تا واپسین عنصر درون container ادامه خواهد داشت.