حالت آفلاین — محتوا از حافظهٔ کش نمایش داده می‌شود
آموزش دیباگ و تست‌نویسی در پایتون؛ رفع خطا با تمرین

پیش‌بینی and و or در پایتون؛ شرط بازه بسته

باگ‌های منطقی پایتون؛ شرط، حلقه و بازگشت · 0٪

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

مثال ساعت مجاز رو با دو شرط و and می‌سنجه. در سؤال یک بررسی امتیاز داریم که به‌اشتباه or استفاده کرده. خطای رایج خواندن شرط از روی نیت برنامه‌نویسه، نه معنای واقعی عملگر. هر قسمت رو برای ورودی مشخص جدا حساب کن: اگر یکی True باشه، نتیجه or هم True می‌شه. برای عدد بزرگ‌تر از سقف، شرط پایین هنوز می‌تونه درست باشه و همین باگ رو نمایان می‌کنه. این سؤال فقط نتیجه واقعی کد موجود رو می‌پرسه، نه نتیجه‌ای که بهتر بود داشته باشیم. بعد از پاسخ می‌تونی صورت درست بازه رو با and کنار آن مقایسه کنی.

✍️ مثال حل‌شده:

def in_hours(hour):
    return hour >= 9 and hour <= 17

assert in_hours(20) is False

حالا نوبت توئه: تابع موجود return score >= 0 or score <= 100 دارد. برای score=150 چه مقدار برمی‌گرداند و چرا؟ امتیاز خارج بازه است، اما پاسخ را از روی اجرای همین شرط خراب بده؛ اصلاح منطقی بازه، استفاده از and خواهد بود.

فعالیت شما

تابع موجود return score >= 0 or score <= 100 دارد. برای score=150 چه مقدار برمی‌گرداند و چرا؟ امتیاز خارج بازه است، اما پاسخ را از روی اجرای همین شرط خراب بده؛ اصلاح منطقی بازه، استفاده از and خواهد بود.

مطالعهٔ این گام برای همه آزاد است

برای پاسخ‌دادن، بررسی پاسخ، ثبت پیشرفت و استفاده از دستیار باید شرایط شرکت در فعالیت‌ها را داشته باشید.

برای انجام فعالیت وارد شوید

فعالیت‌های این بخش به اشتراک فعال نیاز دارند. تهیهٔ اشتراک

برای انجام فعالیت‌ها ابتدا این دوره‌های پیش‌نیاز را تکمیل کنید:

کد اولیهٔ فعالیت

def valid_score(score):
    return score >= 0 or score <= 100

valid_score(150)

گزینه‌های پیش‌بینی خروجی

  1. True؛ شرط score>=0 درست است و برای or کافی است.
  2. False؛ چون ۱۵۰ خارج بازه است.
  3. ValueError؛ مقایسه عدد بیرون بازه خطا می‌دهد.