دوره H برنامه نویسی پایتون
فصل دوم: ساختار کنترلی
درس دوم: دستور if و else در پایتون
برنامهنویسی بدون شرط گذاری، عملا غیرممکن است و یا به عبارتی میتوان گفت که در 99.99% برنامهها، امکان ندارد از دستورات شرطی استفاده نکنیم! من قبلا در مورد مفهوم دستورات شرطی در برنامهنویسی، در «این لینک» توضیحاتی دادم؛ بنابراین ابتدا آن را مطالعه کرده و سپس در ادامه با ما همراه باشید.
دستور if
از دستور if میتوان برای بررسی شرط یا شرایط خاصی استفاده کرده و سپس در صورت صدق آن شرایط، کد خاصی اجرا شود. شکل کلی دستور شرطی در پایتون، به صورت زیر است:
if expression: statements
در اینجا لازم است که بدانید پایتون از indentation (فضای خالی ابتدای خط) برای تعریف بلوک کد یا بدنهی یک بخشی از کد استفاده میکند (منظور از این فضای خالی، فاصلهی قبل از دستورات بخش statement در ساختار بالا است). شاید در زبانهای دیگری همچون سیشارپ دیده باشید که این فاصلهها مهم نیستند و به جای آن، از { } استفاده میشود؛ ولی این فاصله در بدنهی دستورات شرطی پایتون اجباری بوده و اگر این فاصله را قرار ندهیم، کد بدرستی کار نمیکند و یا به عبارتی، دستور خارج از بدنهی شرط خواهد بود. همچنین در موارد دیگری از جمله حلقهها و توابع و … نیز از این فاصله برای تعریف بدنهی آن استفاده میشود که در آینده با آنها آشنا میشوید.
یک مثال ساده:
این کد را در یک New File نوشته و Run کنید.
if 10 > 5: print("10 greater than 5") print("Program ended")
- خط اول: شرطی نوشتهایم که در صورت بزرگ بودن 10 از 5، اجرا شود.
- خط دوم: بدنهی شرط است و درصورت درست بودن شرط، مقدار تعیین شده را پرینت میکند.
- خط سوم: چون ابتدای این خط فاصلهای قرار نگرفته است، پس ربطی به شرط نداشته و درصورت درست یا غلط بودن آن، اجرا میشود.
پس خروجی کد بالا، بصورت زیر میشود:
>>> 10 greater than 5 Program ended >>>
شروط تو در تو
میتوان از دستورات شرطی تو در تو نیز استفاده کرد. به این صورت که داخل بدنهی یک شرط، یک شرط دیگری بررسی شود. برای مثال:
num = 12 if num > 5: print("Bigger than 5") if num <=47: print("Between 5 and 47")
خروجی این کد:
>>> Bigger than 5 Between 5 and 47 >>>
به سادگی میتوان دریافت که شرط داخلی، بدنهاش باید فاصلهای جلو تر از خود شرط داشته باشد؛ چرا که در غیر اینصورت، جزء بدنهی آن شرط نمیشود.
دستور else
ممکن است که در زمان بررسی شرطی، نیاز داشته باشیم برای حالت برعکس آن شرط نیز کدی بنویسیم! برای مثال، اگر x بزرگتر از y بود، پیام Hi چاپ شود و اگر کوچکتر بود، پیام Bye چاپ شود. این دو شرط مخالف هم هستند و اگر بخواهیم به صورت قبل رفتار کنیم، کد ما به این شکل خواهد شد:
if x > y: print("Hi") if x < y: print("Bye")
اشکالات این کار:
- هر دو شرط بررسی میشود.
- ممکن است، داخل بدنهی شرط اول، مقدار متغیرها تغییر کند و در اینصورت، در ادامه، شاید شرط دوم نیز صحیح بوده و اجرا شود.
البته این بستگی به پروژه و منطق شما دارد؛ ولی اگر نخواهیم چنین چیزی اتفاق بیفتد، راه حل اصلی آن، استفاده از دستور else است.
دستور else به معنی «در غیر اینصورت» بوده و اگر شرط درست نباشد، اجرا میشود. به کد زیر دقت کنید:
x = 4 if x == 5: print("Yes") else: print("No")
در اینجا، در صورتی که بخش if درست نباشد، بخش else اجرا میشود. نتیجهی این کد، به صورت زیر خواهد بود:
>>> No >>>
if و else های تو در تو
به سادگی میتوان از دستورات if و else داخل هر if و else دیگری استفاده کرد. به مثال زیر دقت کنید:
num = 7 if num == 5: print("Number is 5") else: if num == 11: print("Number is 11") else: if num == 7: print("Number is 7") else: print("Number isn't 5, 11 or 7")
نتیجهی کد بالا بصورت زیر میشود:
>>> Number is 7 >>>
دستور elif
وقتی از if و else استفاده میکنیم، زمانی که if درست نباشد، بخش else بدون هیچ چون و چرایی (شرطی) اجرا میشود؛ اما شاید بخواهید زمانی که if درست نباشد، در بخش else ، ابتدا شرطی بررسی و سپس در صورت درست بودن آن شرط، کدی اجرا شود. البته میتوان بعد از نوشتن else، در بدنهی آن، از دستور if استفاده کرد؛ ولی برای این کار، دستور elif وجود دارد و نیاز به نوشتن یک if دیگر در بدنهی else نداریم. به مثال زیر دقت کنید:
num = 7 if num == 5: print("Number is 5") elif num == 11: print("Number is 11") elif num == 7: print("Number is 7") else: print("Number isn't 5, 11 or 7")
خروجی کد بالا:
>>> Number is 7 >>>
اگز به کد دقت کنید، متوجه میشوید که بعد از elif میتوان دوباره از else استفاده کرد و بدیهی است که بعد از else دیگر چیزی باقی نمیماند.
منطق بولی
همانطور که در بالا گفته شد، داخل قسمت نوشتن شرط، در نهایت باید مقدار بولین قرار بگیرد تا بررسی شود. حالا منطق بولی، برای ایجاد شرایط پیچیدهتری در زمانی که بخواهیم چند شرط را بررسی کنیم، مورد استفاده قرار میگیرد. عملگرهای بولی برای این کار، دستورات and ، or و not میباشند.
- زمانی که از and استفاده شود: یعنی باید دو شرطی که در دو طرف and نوشته شدهاند، هردو True باشند تا نتیجهی True برگردانده شده و بدنهی شرط اجرا شود.
- زمانی که از or استفاده شود: یعنی فقط کافیست یکی از دو طرف or، برابر با True باشد تا کلا مقدار True برگردانده شده و بدنهی شرط اجرا شود.
- زمانی که از not استفاده شود: شرطِ نوشته شده در مقابل نات، باید صدق نکند تا True برگردانده شود.
مثالی برای and:
>>> 1 == 1 and 2 == 2 True >>> 1 == 1 and 2 == 3 False >>> 1 != 1 and 2 == 2 False >>> 2 < 1 and 3 > 6 False
مثالی برای or:
>>> 1 == 1 or 2 == 2 True >>> 1 == 1 or 2 == 3 True >>> 1 != 1 or 2 == 2 True >>> 2 < 1 or 3 > 6 False
مثالی برای not:
>>> not 1 == 1 False >>> not 1 > 7 True
مثالی برای استفاده از اینها در دستورات شرطی:
x = 10 y = 1 if x > y and y > 0: print("great")
یک مثال برای استفاده از پرانتزها:
x = 10 y = 1 if (x > y and x > 0) or (y > 0 and y - 1 > 0): print("great")
حتی از محاسبه نیز در اینجا استفاده شده و شرط پیچیدهتر از همیشه شده است.
نظرات ثبت شده بدون دیدگاه