بررسی شرط‌های چندگانه

شاید بخواهید چند شرط را همزمان بررسی کنید. برای نمونه گاهی برای انجام عملی به True بودن همزمان دو شرط نیاز دارید. زمانی دیگر ممکن است ارضا شدن تنها یکی از دو شرط کافی باشد. دو کلیدواژه‌ی and و or می‌تواند شما را در این شرایط یاری کند.

به‌کارگیری and برای بررسی شرط‌های چندگانه

برای بررسی درست (True) بودنِ همزمانِ دو شرط از کلیدواژه‌ی and برای ترکیب دو آزمون شرطی استفاده کنید. اگر هر دو آزمون موفق باشند عبارت کلّی درست (True) خواهد بود. در صورتی که یکی یا هر دوی آزمون‌ها ناموفّق باشند، عبارت کلی نیز نادرست (False) خواهد بود.

برای مثال می‌توانید هنگام بررسی سن دو نفر بفهمید که آیا هر دو بالای ۲۱ سال هستند یا نه:

1
2
3
4
5
6
7
>>> age_0 = 22
>>> age_1 = 18
>>> age_0 >= 21 and age_1 >= 21
False
>>> age_1 = 22
>>> age_0 >= 21 and age_1 >= 21
True

در ۱ دو سن age_0 و age_1 را تعریف می‌کنیم. در ۲ بررسی می‌کنیم که آیا هر دو بالای ۲۱ اند یا نه؟ آزمون سمت چپ موفق است امّا راستی نه، پس کل عبارت نادرست (False) است. در ۳ age_1 را به ۲۲ تغییر می‌دهیم. اکنون مقدار age_1 بیشتر از ۲۱ است پس از دو آزمون شرطی موفّق‌اند، این باعث می‌شود که کل عبارت شرطی درست (True) تلقّی شود.

برای بهبود خوانایی می‌توانید دو طرف هر آزمون شرطی پرانتز قرار دهید، هر چند این کار الزامی نیست. اگر از پرانتز استفاده کنید آزمون شما شبیه به این خواهد بود:

1
(age_0 >= 21) and (age_1 >= 21)

به‌کارگیری or برای بررسی شرط‌های چندگانه

کلیدواژه‌ی or هم امکان بررسی چند شرط را برای شما فراهم می‌آورد با این تفاوت که این بار اگر یکی یا هر دوی شرط‌ها برقرار باشند، کل عبارت پذیرفته می‌شود.

مثال مربوط به سن را در نظر بگیرید. این بار به دنبال این هستیم که بفهمیم آیا تنها یکی از دو نفر بالای ۲۱ سال هست یا نه:

1
2
3
4
5
6
7
>>> age_0 = 22
>>> age_1 = 18
>>> age_0 >= 21 or age_1 >= 21
True
>>> age_0 = 18
>>> age_0 >= 21 or age_1 >= 21
False

از تعریف دو متغیّر مربوط به سن در ۱ شروع می‌کنیم. از آن‌جایی که آزمون مربوط به age_0 درست است، کل عبارت ۲ درست (True) ارزیابی می‌شود. سپس age_0 را به ۱۸ کاهش می‌دهیم. در آزمون ۳، هر دو آزمون رد می‌شوند و عبارت کلّی نادرست (False) تعبیر خواهد شد.

بررسی وجود یک مقدار در یک لیست

گاهی مهم است که پیش از انجام کاری بررسی کنیم که یک لیست مقدار خاصّی را شامل می‌شود یا نه. برای نمونه پیش از تکمیل ثبت نام کاربر در یک وب‌سایت، شاید نیاز داشته باشید که بررسی کنید آیا نام کاربریِ انتخابیِ کاربر در لیست نام‌های کاربری قبلی وجود دارد یا نه.

برای دریافتن این که آیا مقدار خاصّی در لیست وجود دارد از کلیدواژه‌ی in استفاده می‌کنیم. فرض کنید می‌خواهید برای یک پیتزافروشی برنامه‌ای بنویسید. لیستی از مواد درخواستی مشتری برای روی پیتزا تهیّه می‌کنیم و سپس بررسی می‌کنیم که آیا آن‌ها در لیست ما وجود دارد یا نه.

1
2
3
4
5
>>> requested_toppings = ['mushrooms', 'onions', 'pineapple']
>>> 'mushrooms' in requested_toppings
True
>>> 'pepperoni' in requested_toppings
False

در ۱ و ۲، کلیدواژه‌ی in از پایتون می‌خواهد وجود ‘mushrooms’ و ‘pepperoni’ را در لیستِ requested_toppings بررسی کند. این تکنیک بسیار قدرتمند است زیرا می‌توانید به کمک آن لیستی از مقادیر ضروری درست کنید و سپس به آسانی بررسی کنید که مقداری مورد نظر شما با یکی از مقادیر داخل لیست برابری می‌کند یا نه.

بررسی وجود نداشتن یک مقدار در یک لیست

زمانی دیگر ممکن است بخواهید وجود نداشتن مقداری را در لیستی بررسی کنید. در این شرایط می‌توانید از کلیدواژه‌ی not استفاده کنید. برای مثال لیستی از کاربران را در نظر بگیرید که از ارسال نظر در یک انجمن منع شده‌اند. می‌خواهید پیش از ثبت یک نظر بررسی کنید که آیا کاربرِ نظردهنده در لیست کاربران ممنوع وجود دارد یا نه.

1
2
3
4
5
6
banned_users = ['andrew', 'carolina', 'david']

user = 'marie'

if user not in banned_users:
    print(f"{user.title()}, you can post a response if you wish.")

خط ۱ به آسانی خوانده می‌شود. اگر مقدار user در لیست banned_users نبود، پایتون True برمی‌گرداند و کد تورفته را اجرا می‌کند.

کاربر ‘marie’ در لیست ‘banned_users’ نیست پس پیامی می‌بیند که از او برای ارسال نظرش دعوت می‌کند:

1
Marie, you can post a response if you wish.

عبارت‌های بولی

در طی آموختن برنامه‌نویسی جایی به عبارت بولی برخواهید خورد. عبارت بولی تنها نامی دیگر برای آزمون شرطی است. مقدار بولی همانندِ مقدارِ یک عبارتِ شرطی پس از ارزیابی، یا درست (True) است یا نادرست (False).

مقدارهای بولی غالباً برای پیگیری و دنبال کردن شرط‌ها به کار می‌رود، مانند این که آیا بازی می‌تواند اجرا شود یا آیا کاربری می‌تواند مطلب خاصّی را روی وب‌سایت ویرایش کند یا نه:

1
2
game_active = True
can_edit = False

مقدارهای بولی برای پیگیری وضعیّت برنامه یا شرط خاصّی که در برنامه مهم است، راهی موثّر ارائه می‌کنند.

خودآزمایی

آزمون‌های شرطی

تعدادی آزمون شرطی بنویسید. گزاره‌ای برای شرح هر آزمون و پیش‌بینی شما از نتیجه‌ی هر کدام چاپ کنید. کد شما باید چیزی شبیه به این باشد:

1
2
3
4
5
6
7
car = 'subaru'

print("Is car == 'subaru'? I predict True.")
print(car == 'subaru')

print("\nIs car == 'audi'? I predict False.")
print(car == 'audi')
  • به دقّت به نتایج خود نگاه کنید و مطمئن شوید که دلیل True یا False شدن هر خط را متوجّه می‌شوید.
  • دستِ کم ده آزمون بسازید طوری که حدّاقل پنج تای آن‌ها True و پنج‌تای دیگر False شود.

آزمون‌های شرطی بیشتر

نباید خود را به ساختن تنها ده آزمون شرطی محدود کنید. اگر می‌خواهید مقایسه‌های بیشتری بکنید، آزمون‌های بیشتری بنویسید و آن‌ها را به conditional_tests.py بیفزایید. دست کم یک نتیجه‌ی True و یک نتیجه‌ی False برای هر کدام از موارد زیر داشته باشید:

  • آزمون برابری و نابرابری برای رشته‌ها
  • آزمون‌هایی با متد lower()
  • آزمون‌های عددی شامل برابری و نابرابری، بزرگتری و کوچکتری، بزرگتری و تساوی و کوچکتری و تساوی.
  • آزمون‌هایی شامل کلیدواژه‌های and و or
  • آزمون وجود عضوی در یک لیست
  • آزمون وجود نداشتن عضوی در یک لیست