Python Learningاز صفر تا نوشتن پروژه از حفظ
درس ۳ · پایه‌ها

شرط‌ها: if، elif، else

حدود ۴۰ دقیقه۴ تمرین۶ سؤال آزمون
بعد از این درس می‌توانی:
  • با if، elif و else تصمیم بگیری
  • مقایسه‌ها (== != < > <= >=) و and، or، not را به کار ببری
  • بدانی «درست» و «نادرست» در پایتون یعنی چه (مثلاً متن خالی)
  • اهمیت تورفتگی (indent) را بفهمی

if: اگر … آن‌وقت

Python
stock = 5
qty = 8
if qty > stock:
    print("موجودی کافی نیست")
else:
    print("فروش ثبت شد")

سه نکته‌ی مهم:

۱) آخر خط if و else علامت : می‌آید.

۲) خط‌های داخل شرط تورفتگی دارند (۴ فاصله). پایتون از روی همین فاصله‌ها می‌فهمد کدام خط‌ها مال شرط است.

۳) else اختیاری است.

مقایسه‌ها

عملگریعنی
==مساوی است (دو تا مساوی! یکی برای انتساب است)
!=مساوی نیست
< >کوچک‌تر، بزرگ‌تر
<= >=کوچک‌تر یا مساوی، بزرگ‌تر یا مساوی
0 <= x < 10زنجیره: x بین ۰ و ۱۰

چند حالت: elif

اجرا کن

خودت امتحان کن

Ctrl + Enter

پایتون از بالا شرط‌ها را امتحان می‌کند و اولین شرطی که درست باشد اجرا می‌شود؛ بقیه رد می‌شوند. qty را عوض کن (۳ و ۹) و دوباره اجرا کن.

در پروژه‌ی فروشگاه

متد sell دقیقاً همین ترتیب را دارد: اول خط ۵۳ پروژه تعداد مثبت را چک می‌کند، بعد خط ۵۶ پروژه موجودی را.

and، or، not

اجرا کن

خودت امتحان کن

Ctrl + Enter

درست و نادرست (truthy / falsy)

این مقدارها در شرط «نادرست» حساب می‌شوند: False، 0، 0.0، متن خالی ""، لیست خالی []، دیکشنری خالی {} و None. بقیه «درست» هستند. برای همین if not name: یعنی «اگر نام خالی است».

در پروژه‌ی فروشگاه

خط ۲۹ پروژه: if not name or name in self.products: یعنی «اگر نام خالی است یا قبلاً ثبت شده». و خط ۱۲۲ پروژه: if not selection: یعنی «اگر چیزی انتخاب نشده».

تمرین

پیام فروش

متغیر msg را با if/elif/else بساز: اگر qty صفر یا کمتر بود "تعداد باید مثبت باشد"، اگر از stock بیشتر بود "موجودی کافی نیست"، وگرنه "ok".

Ctrl + Enter
دیدن راه‌حل (اول خودت تلاش کن)
stock = 5
qty = 8
if qty <= 0:
    msg = "تعداد باید مثبت باشد"
elif qty > stock:
    msg = "موجودی کافی نیست"
else:
    msg = "ok"
تمرین

نام خالی

اگر name خالی بود، error را "نام خالی است" بگذار، وگرنه None. از not استفاده کن.

Ctrl + Enter
دیدن راه‌حل (اول خودت تلاش کن)
name = ""
if not name:
    error = "نام خالی است"
else:
    error = None
تمرین

قیمت معتبر

ok را True بگذار اگر price بین صفر (خودش هم قبول) و بی‌نهایت باشد. از مقایسه‌ی زنجیره‌ای استفاده کن. بی‌نهایت در پایتون float('inf') است.

Ctrl + Enter
دیدن راه‌حل (اول خودت تلاش کن)
price = -5
ok = 0 <= price < float('inf')
جای خالی

جاهای خالی را پر کن

این کد چک می‌کند کالا قبلاً ثبت نشده باشد:

if  name  name  products:
    print('نام خالی یا تکراری است')
حواست باشد

اشتباه رایج: if x = 5: خطا می‌دهد. برای مقایسه == لازم است. و فراموش کردن : آخر خط هم SyntaxError می‌دهد.

آزمون این درس

برای گذراندن این درس حداقل ۸۰٪ جواب درست لازم است. هر چند بار خواستی می‌توانی دوباره امتحان بدهی.

۱. کدام مقدار در شرط «نادرست» است؟
۲. خروجی: x = 7 و بعد if x > 5: print('A') / elif x > 3: print('B')
۳. == با = چه فرقی دارد؟
۴. not "" چیست؟
۵. 0 <= -2 < 10 چیست؟
۶. چرا خط‌های داخل if تورفتگی دارند؟