دستورات شرطی در پایتون (if…else در پایتون)
دستورات شرطی یکی از ارکان زبانهای برنامه نویسی هستند. اگر دستورات شرطی را از زبانهای برنامه نویسی حذف کنید برنامه نویسی تقریبا غیر ممکن خواهد بود.
شرطها و دستور if در پایتون
پایتون تمامی شرطهای منطقی ریاضی را پشتیبانی میکند.دستورات شرطی که در پایتون میتوان استفاده کرد را در زیر لیست کردهایم.
- شرط مساوی بودن دو مقدار:
a == b
- شرط مساوی نبودن یا مخالف بودن:
a != b
- شرط کوچکتر از:
a<b
- شرط کوچکتر یا مساوی:
a <= b
- شرط بزرگتر:
a > b
- شرط بزرگتر مساوی:
a >= b
دستورات شرطی مذکور در جاهای مختلف قابل استفاده خواهد بود. ساده ترین مورد استفادهی آنها دستورات if و حلقهها است.
یک دستور if با کلمهی کلیدی if
شروع میشود. به مثال زیر دقت کنید.
>>> a=10
>>> b=-2
>>> if a>b:
... print('a is greater thab b')
...
a is greater than b
در این مثال با استفاده از دستور if و یک دستور شرطی دو متغیر را باهم مقایسه کردیم.
دستور شرطی مورد استفاده a , b را با هم مقایسه میکند و در صورتی که a
از b
بزرگتر باشد دستور بلوک اجرا میشود و در غیر اینصورت دستور موجود در بلوک if اجرا نمیشود.
اما دستورات بلوک if چگونه مشخص میشود؟
همانطور که در مقاله نگاهی گذرا syntax زبان برنامه نویسی پایتون هم توضیح داده شده برخلاف سایر زبانهای برنامه نویسی که از آکلاد باز و بسته برای مشخص کردن بلوکهای متعدد استفاده میشود در پایتون از تو رفتگیها برای مشخص کردن بلوکهای حلقهها و دستورات if استفاده میشود. اگر در دستور بالا دقت کنید یک کاراکتر تب قبل از پرینت استفاده شده است که یک تو رفتگی ایجاد شده است و این نشان دهندهی این است که این دستور زیر مجموعهی بلوک if
است. به مثال زیر دقت کنید
a=33
>>> b=200
>>> if b>a:
... print('b is greater than a')
File "<stdin>", line 2
print('b is greater than a')
^
IndentationError: expected an indented block
دستور elif در پایتون
کلمهی کلیدی elif
برای ترکیب چند شرط if استفاده میشود. این کلمهی کلیدی همان کلمهی کلیدی elseif
در پیاچپی یا دستور ترکیبی else if
در زبانهای خانوادهی سی است.
این دستور بعد از یک دستور if میآید و بعد از این کلمه ی کلیدی یک دستور شرطی استفاده میشود.
اگر شرط if
قبلی صحیح باشد و بلوک if اجرا شود دیگر این دستور و بلوکش اجرا نمیشود در غیر اینصورت دستوری شرطی که بعد از elif
نوشته شده است ارزیابی میشود اگر حاصل این ارزیابی صحیح باشد بلوک مربوط که حاصل از تو رفتگی دستورات بعدی ایجاد شده اجرا میگردد در غیر این صورت دستورات بعدی اجرا میشوند.
>>> a = 33
>>> b = 33
>>> if b > a:
... print("b is greater than a")
... elif a == b:
... print("a and b are equal")
...
a and b are equal
دقت کنید که این دستور هم سطح با دستور if
است و تو رفتگی ندارد.
کلمه کلیدی Else در پیاتون
دستور else
همیشه پس از if
یا elif
استفاده میشود.در صورتی که شرط دستورهای if
, elif
برقرار نشود مجموعه دستورات بلوک else
اجرا خواهد شد. اما اگر با برقرار شدن یکی از شرطها if
یا elif
بلوک شرط مورد نظر اجرا شود دیگر بلوک else
اجرا نخواهد شد.
a = 200
b = 33
if b > a:
print("b is greater than a")
elif a == b:
print("a and b are equal")
else:
print("a is greater than b")
در این مثال اگر b
بزرگتر از a
باشد فقط بلوک if
اجرا خواهد شد و اگر a
مساوی b
باشد تنها بلوک elif
اجرا میشود و در صورتی که هیچ کدام از شرطهای مذکور برقرار نباشد بلوک else
اجرا خواهد شد.
همچنین میتوانید دستور else
را بدون elif
استفاده نمائید.
a = 200
b = 33
if b > a:
print("b is greater than a")
else:
print("b is not greater than a")
b is not greater than a
فرم کوتاه شده if
اگر بعد از دستور if
قرار فقط یک دستور اجرا بشه یا در بلوک if
فقط یک دستور دارید میتوانید آن دستور را بعد از دستور if
بنویسید. به مثال زیر نگاه کنید.
>> a=2
>>> b=3
>>> if a<b: print('b greater than a')
...
b greater than a
فرم کوتاه شده if … else
اگر فقط یک دستور بعد از if و یک دستور بعد از else داشته باشید میتوانید آنها را در یک خط بنویسید.
a = 2
b = 330
print("A") if a > b else print("B")
دقت کنید که دستوری که بعد از if
قراره اجرا بشه را قبل از if
نوشته شده است.
>>> a = 330
>>> b = 330
>>> print("A") if a > b else print("=") if a == b else print("B")
=
>>>
تکه کد بالا معادل تکه کد زیر میباشد:
if a>b:
print("A")
else:
if a == b:
print('=')
else:
print('B')
استفاده از عمگرهای منطقی در دستورهای شرطی
با استفاده از عملگرهای منطقی میتوانید شرطها را در دستورهای if
, elif
ترکیب نمائید.
>>> a = 200
>>> b=33
>>> c = 500
>>> if a > b and c > a:
... print("both conditions are true")
... else:
... print("one of conditions or both theme are false")
...
both conditions are true
جهت درک بهتر مقادیر a, b , c را تغییر دهید و تست نمائید.
>>> a = 200
>>> b = 33
>>> c = 500
>>> if a > b or a > c:
... print("At least one of the conditions is True")
...
At least one of the conditions is True
if تو در تو
>>> x=41
>>> if x > 10:
... print('above ten')
... if x > 20:
... print('and also above 20!')
... else:
... print('but not above 20.')
...
above ten
and also above 20!
دستور pass
به صورت پیش فرض بلوک دستور if
نمیتواند خالی باشد. اما پایتون راه حلی برای آن دارد. اگر میخواهید هیچ دستوری در بلوک if
اجرا شود دستور pass
را را در بلوک if
استفاده نمائید.
>>> a = 33
>>> b = 200
>>>
>>> if b > a:
... pass