شرطها: if، elif، else
- با
if،elifوelseتصمیم بگیری - مقایسهها (
== != < > <= >=) وand،or،notرا به کار ببری - بدانی «درست» و «نادرست» در پایتون یعنی چه (مثلاً متن خالی)
- اهمیت تورفتگی (indent) را بفهمی
if: اگر … آنوقت
stock = 5
qty = 8
if qty > stock:
print("موجودی کافی نیست")
else:
print("فروش ثبت شد")
سه نکتهی مهم:
۱) آخر خط if و else علامت : میآید.
۲) خطهای داخل شرط تورفتگی دارند (۴ فاصله). پایتون از روی همین فاصلهها میفهمد کدام خطها مال شرط است.
۳) else اختیاری است.
مقایسهها
| عملگر | یعنی |
|---|---|
== | مساوی است (دو تا مساوی! یکی برای انتساب است) |
!= | مساوی نیست |
< > | کوچکتر، بزرگتر |
<= >= | کوچکتر یا مساوی، بزرگتر یا مساوی |
0 <= x < 10 | زنجیره: x بین ۰ و ۱۰ |
چند حالت: elif
خودت امتحان کن
پایتون از بالا شرطها را امتحان میکند و اولین شرطی که درست باشد اجرا میشود؛ بقیه رد میشوند. qty را عوض کن (۳ و ۹) و دوباره اجرا کن.
متد sell دقیقاً همین ترتیب را دارد: اول خط ۵۳ پروژه تعداد مثبت را چک میکند، بعد خط ۵۶ پروژه موجودی را.
and، or، not
خودت امتحان کن
درست و نادرست (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".
دیدن راهحل (اول خودت تلاش کن)
stock = 5 qty = 8 if qty <= 0: msg = "تعداد باید مثبت باشد" elif qty > stock: msg = "موجودی کافی نیست" else: msg = "ok"
نام خالی
اگر name خالی بود، error را "نام خالی است" بگذار، وگرنه None. از not استفاده کن.
دیدن راهحل (اول خودت تلاش کن)
name = "" if not name: error = "نام خالی است" else: error = None
قیمت معتبر
ok را True بگذار اگر price بین صفر (خودش هم قبول) و بینهایت باشد. از مقایسهی زنجیرهای استفاده کن. بینهایت در پایتون float('inf') است.
دیدن راهحل (اول خودت تلاش کن)
price = -5 ok = 0 <= price < float('inf')
جاهای خالی را پر کن
این کد چک میکند کالا قبلاً ثبت نشده باشد:
if name name products:
print('نام خالی یا تکراری است')
اشتباه رایج: if x = 5: خطا میدهد. برای مقایسه == لازم است. و فراموش کردن : آخر خط هم SyntaxError میدهد.
آزمون این درس
برای گذراندن این درس حداقل ۸۰٪ جواب درست لازم است. هر چند بار خواستی میتوانی دوباره امتحان بدهی.