دستورات شرطی در پایتون (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

معنی دستور elif در پایتون این است که اگر if قبلی اجرا شود دیگر بلوک elif اجرا نخواهد شد و اگر بلوک elif اجرا شود بلوک‌هایی پایین leif مرتبط اجرا نخواهد شد.

دقت کنید که این دستور هم سطح با دستور 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

شرط تو در تو در پایتون

>>> 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

دیدگاه خود را بنویسید