برای قرارداشتن در یک بازه باید هر دو شرط سمت پایین و بالا همزمان برقرار باشن. 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 خواهد بود.