بازگشت به نقشهٔ راه

برنامه‌نویسی ۱ · شرط‌ها و آزمون‌ها

با مقایسه شاخه را انتخاب کنید، اجرای تابع را ردگیری کنید و آزمون‌هایی برای کشف خطا در مرز بنویسید. ابتدا متغیرها و مقایسهٔ عددی را مرور کنید.

درس و خلاصه

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

t < 0?
بله ↓
cold
خیر ↓
t < 100?
بله ↓
moderate
خیر ↓
hot
نمودار را از بالا به پایین بخوانید. مقایسهٔ دوم فقط زمانی اجرا می‌شود که شرط اول نادرست باشد.

مثال حل‌شده

def classify(t):
    if t < 0:
        return "cold"
    elif t < 100:
        return "moderate"
    else:
        return "hot"

برای دمای منفی ۱ شرط اول درست است. در صفر شرط اول نادرست و شرط دوم درست است. در ۱۰۰ هر دو نادرست‌اند. آزمون‌های منفی ۱، صفر، ۹۹ و ۱۰۰ دو طرف هر مرز را بررسی می‌کنند. تغییر شرط دوم به کوچک‌تر یا مساوی ۱۰۰، آزمون مرزی ۱۰۰ را خراب می‌کند.

اشتباه رایج

بررسی شرط کلی‌تر در ابتدا ممکن است شاخهٔ بعدی را دست‌نیافتنی کند. شرط دمای کمتر از ۱۰۰ همهٔ مقادیر منفی را قبل از بررسی شرط کمتر از صفر می‌گیرد.

تمرین

خروجی را برای منفی ۳، صفر، ۷۰ و ۱۰۱ پیدا کنید. یک دستور assert برای کشف خطا در مرز ۱۰۰ بنویسید.

پاسخ تمرین

خروجی‌ها به‌ترتیب cold، moderate، moderate و hot هستند. دستور مرزی assert classify(100) == "hot" است.

آزمون کوتاه · ۱۰ نمره

پمپ زیر ۲۰ خاموش، از ۲۰ تا کمتر از ۸۰ آماده، و از ۸۰ به بالا فعال است. تابع طبقه‌بندی را بنویسید (۶ نمره). دو طرف هر مرز را همراه خروجی مورد انتظار بیازمایید (۴ نمره).

پاسخ‌نامهٔ آزمون

برای خاموش شرط x < 20، برای آماده شرط بعدی x < 80 و برای فعال شاخهٔ else را به کار ببرید. ۱۹ خاموش، ۲۰ و ۷۹ آماده و ۸۰ فعال‌اند. برای هر حالت مرزی درست یک نمره بدهید.

MIT OCW · Programming in Python

آزمایش مجازی · آزمون یک برنامهٔ شرطی

ورودی‌هایی انتخاب کنید که خطای مرزی شرط را آشکار کنند.

ابزار رایگان در همین صفحه. در مرورگر و بدون حساب کاربری یا دانلود استفاده کنید.

روش انجام

منفی ۱، صفر، ۹۹ و ۱۰۰ را یکی‌یکی وارد کنید. خروجی اول شرط t < 100 و خروجی دوم شرط اشتباه t ≤ 100 را مدل می‌کند. هر دو ابتدا t < 0 را می‌سنجند. ورودی متمایزکنندهٔ دو نسخه را پیدا کنید.

نتایج مورد انتظار و بررسی پاسخ

در ۱۰۰ نسخهٔ درست hot و نسخهٔ معیوب moderate برمی‌گرداند. سه حالت دیگر یکسان‌اند. آزمون خود مرز این خطا را آشکار می‌کند.

این ابزار دو نسخهٔ شرط را مدل می‌کند. برای اجرا و ویرایش کد واقعی درس از مفسر پایتون استفاده کنید.

Python Tutor · تابع درس را وارد کنید، فراخوانی مانند print(classify(100)) را اضافه کنید و شرط‌ها را گام‌به‌گام دنبال کنید.

© CurriVerse Xدانش آزاد · همکاری باز