انشعاب شرطی را با دستور if در پایتون توضیح دهید.
- مبانی دستورات if (if، elif، else)
- شرایط را با عملگرهای مقایسه و غیره مشخص کنید.
- شرایط را بر اساس شماره، فهرست و غیره مشخص کنید.
- چند شرط یا نفی را با عملگرهای منطقی مشخص کنید (و، یا، نه)
- عبارات شرطی در خطوط جدید و چند خط
همچنین یک عملگر سه تایی وجود دارد که یک شاخه شرطی را در یک خط توصیف می کند. مقاله زیر را ببینید.
مبانی دستورات if (if، elif، else)
شکل اصلی دستور if به صورت زیر است
if Conditional expression 1:
`Processing to be performed if Expression 1 is True.`
elif Conditional expression 2:
`Processing to be performed when expression 1 is false and expression 2 is true.`
elif Expression 3:
`Process when expression 1 and 2 are false and expression 3 is true.`
...
else:
`Processing when all conditionals are false.`
“elif” مربوط به “else if” در زبان C و سایر زبانها است و ممکن است هر تعداد “elif” وجود داشته باشد.
اگر فقط یک عبارت شرطی یا پردازش وجود داشته باشد که false لازم نباشد، بلوکهای “elif” و “else” را میتوان حذف کرد.
شرایط را با عملگرهای مقایسه و غیره مشخص کنید.
با عملیاتی که نوع bool (درست، نادرست) را برمی گرداند، مانند عملگر مقایسه، شرط را مشخص کنید.
عملگرهای مقایسه پایتون به شرح زیر است
اپراتور | نتیجه |
---|---|
x < y | اگر x کمتر از y باشد درست است |
x <= y | اگر x کمتر یا مساوی y باشد درست است |
x > y | درست است اگر x بزرگتر از y باشد |
x >= y | درست است اگر x بزرگتر یا مساوی y باشد |
x == y | درست است اگر مقادیر x و y برابر باشند |
x != y
x is y
x is not y
x in y
x not in y
مثال. برای راحتی، به عنوان تابعی با دستور def تعریف می شود.
def if_test(num):
if num > 100:
print('100 < num')
elif num > 50:
print('50 < num <= 100')
elif num > 0:
print('0 < num <= 50')
elif num == 0:
print('num == 0')
else:
print('num < 0')
if_test(1000)
# 100 < num
if_test(70)
# 50 < num <= 100
if_test(0)
# num == 0
if_test(-100)
# num < 0
موارد زیر را می توان به گونه ای نوشت که مختص پایتون است. برای جزئیات بیشتر به مقاله زیر مراجعه کنید.a < x < b
def if_test2(num):
if 50 < num < 100:
print('50 < num < 100')
else:
print('num <= 50 or num >= 100')
if_test2(70)
# 50 < num < 100
if_test2(0)
# num <= 50 or num >= 100
#ERROR!
!=
موارد فوق مقایسه ای از مقادیر است. برای مقایسه هویت اشیا، از موارد زیر استفاده کنید
is
is not
به عنوان مثال، هنگام مقایسه یک عدد صحیح و یک عدد ممیز شناور، “==” اگر مقادیر معادل باشند، true را برمی گرداند، اما “is” false را برمی گرداند زیرا آنها اشیاء متفاوتی هستند.
i = 10
print(type(i))
# <class 'int'>
f = 10.0
print(type(f))
# <class 'float'>
print(i == f)
# True
print(i is f)
# False
همچنین می توان این شرط را ایجاد کرد که یک لیست یا یک رشته حاوی یک عنصر خاص (کاراکتر) باشد.
in
:عبارتند ازnot in
:شامل نمیشود
def if_test_in(s):
if 'a' in s:
print('a is in string')
else:
print('a is NOT in string')
if_test_in('apple')
# a is in string
if_test_in('melon')
# a is NOT in string
شرایط را بر اساس شماره، فهرست و غیره مشخص کنید.
عبارت شرطی یک دستور if می تواند یک عدد، لیست یا شی دیگری باشد که از نوع bool (true، false) نیست.
if 10:
print('True')
# True
if [0, 1, 2]:
print('True')
# True
در عبارت شرطی دستور Python if، اشیاء زیر نادرست در نظر گرفته می شوند.
- ثابت هایی که به صورت نادرست تعریف شده اند:
None
،false
- صفر در نوع عددی:
0
،0
،0j
،Decimal(0)
،Fraction(0, 1)
- دنباله یا مجموعه خالی:
'
،()
،[]
،{}
،set()
،range(0)
Truth Value Testing — Built-in Types — Python 3.10.4 Documentation
اعدادی که صفر، رشته های خالی، لیست ها و غیره را نشان می دهند نادرست در نظر گرفته می شوند. همه بقیه درست در نظر گرفته می شوند.
نحوه قضاوت شی را می توان با bool() بررسی کرد.
print(bool(10))
# True
print(bool(0.0))
# False
print(bool([]))
# False
print(bool('False'))
# True
برای مثال وقتی لیست خالی است از این می توان برای نوشتن فرآیند استفاده کرد.
def if_test_list(l):
if l:
print('list is NOT empty')
else:
print('list is empty')
if_test_list([0, 1, 2])
# list is NOT empty
if_test_list([])
# list is empty
توجه داشته باشید که رشته “False” نیز درست خواهد بود، زیرا همانطور که در مثال بالا نشان داده شده است، هر رشته ای که در رشته خالی نباشد درست خواهد بود. برای تبدیل یک رشته خاص مانند ‘True’ یا ‘False’ به 1,0، از strtobool() در ماژول distutils.util استفاده کنید.
چند شرط یا نفی را با عملگرهای منطقی مشخص کنید (و، یا، نه)
عملگرهای منطقی (و، یا، نه) را می توان برای رسیدگی به پیوند منطقی، تفکیک منطقی و نفی شرایط چندگانه استفاده کرد.
اپراتور | (نتیجه (در بیان شرطی یک دستور if) |
---|---|
x and y | درست است اگر هر دو x و y درست باشند |
x or y | درست است اگر x یا y درست باشد |
not x | غلط اگر x درست باشد درست است اگر x نادرست باشد |
def if_test_and_not(num):
if num >= 0 and not num % 2 == 0:
print('num is positive odd')
else:
print('num is NOT positive odd')
if_test_and_not(5)
# num is positive odd
if_test_and_not(10)
# num is NOT positive odd
if_test_and_not(-10)
# num is NOT positive odd
در واقع، «x و y» و «x یا y» True یا False را برمیگردانند، بلکه x یا y را برمیگردانند. تا زمانی که آنها در عبارات شرطی در دستورات if استفاده می شوند، نیازی به نگرانی در مورد آنها نیست، زیرا آنها به True یا False ارزیابی می شوند. برای جزئیات بیشتر به مقاله زیر مراجعه کنید.
امکان استفاده و یا بیش از یک بار وجود دارد.
def if_test_and_not_or(num):
if num >= 0 and not num % 2 == 0 or num == -10:
print('num is positive odd or -10')
else:
print('num is NOT positive odd or -10')
if_test_and_not_or(5)
# num is positive odd or -10
if_test_and_not_or(10)
# num is NOT positive odd or -10
if_test_and_not_or(-10)
# num is positive odd or -10
عبارات شرطی در خطوط جدید و چند خط
زمانی که از چند عبارت شرطی با اتصال آنها به «و» یا «یا» استفاده می شود و هر خط طولانی می شود، گاهی لازم است عبارت شرطی را شکسته و روی چند خط بنویسیم.
با استفاده از بک اسلش یا با محصور کردن کل خط در پرانتز می توان یک خط شکستگی ایجاد کرد.
def if_test_and_backslash(num):
if num >= 0 \
and not num % 2 == 0:
print('num is positive odd')
else:
print('num is NOT positive odd')
if_test_and_backslash(5)
# num is positive odd
def if_test_and_brackets(num):
if (num >= 0
and not num % 2 == 0):
print('num is positive odd')
else:
print('num is NOT positive odd')
if_test_and_brackets(5)
# num is positive odd
می توانید از بک اسلش برای شکستن یک خط هر چند بار که دوست دارید استفاده کنید. به همین ترتیب، می توانید یک خط را هر چند بار در داخل پرانتز بشکنید. هیچ محدودیتی برای تورفتگی وجود ندارد.
توجه داشته باشید که این تکنیکی است که می تواند در هر جایی از کد پایتون استفاده شود، نه فقط در دستورات if.