✍️ همه طولهای عددی یک پنجره واقعی نمیسازند. طول صفر یا منفی در این مسئله معتبر نیست؛ طول بزرگتر از تعداد اعضا هم پنجره کامل ندارد. اگر این شرط را پیش از برش کنترل نکنیم، پایتون ممکن است بیسروصدا جمع یک تکه ناقص را حساب کند و ما آن را جواب معتبر تصور کنیم.
برای مثال، در [5, 2] با طول چهار هیچ پنجره چهارعضوی وجود ندارد؛ جمع هفت پاسخ این قرارداد نیست. از طرف دیگر، طول دو دقیقاً معتبر است و باید هفت بدهد. همین برابری معمولاً در شرطهای مرزی خراب میشود: >= به جای > تنها پنجره کامل را هم رد میکند.
تابع این تمرین فقط جمع اولین پنجره را برمیگرداند تا خطای اعتبارسنجی را جدا ببینیم. برای طول نامعتبر None میدهیم، نه صفر؛ صفر ممکن است جمع یک پنجره معتبر باشد. شرط کد اولیه را اصلاح کن و حواست به k منفی باشد. خطای رایج، تکیه کردن به رفتار برش برای تشخیص اعتبار است؛ برش منفی یا بیشازحد در پایتون الزاماً خطا نمیدهد، ولی معنی مسئله را هم خودکار رعایت نمیکند.
تابع آماده course_check فقط برای ارزیابی است: تابع اصلی را صدا میزند و حفظ ورودی را بررسی میکند. آن را تغییر نده؛ پاسخ تو همان تابع خواستهشده است.
فعالیت شما
تابع first_window_sum(nums,k) فهرست اعداد صحیح و طول صحیح میگیرد. اگر 1<=k<=len(nums)، جمع k عضو اول را برگرداند؛ در k<=0 یا k>len(nums)، از جمله خالی، None بده. k=len معتبر است و جمع صفر با None فرق دارد. first_window_sum([5,2],2)=7؛ ورودی تغییر نکند. تابع آماده course_check فقط برای ارزیابی است: تابع اصلی را صدا میزند و حفظ ورودی را بررسی میکند. آن را تغییر نده؛ پاسخ تو همان تابع خواستهشده است.