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

رفع خطای off-by-one در پایتون؛ جمع تا عدد n شامل مرز

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

خطای یکی‌کم یا یکی‌زیاد زمانی رخ می‌ده که محدوده حلقه با قرارداد مسئله دقیقاً هماهنگ نباشه. در range، انتهای بازه وارد خروجی نمی‌شه. بنابراین برای پیمودن ۱ تا n به‌صورت شامل، معمولاً باید پایان رو n+1 بنویسیم. این رفتار رو حفظ‌کردنی نبین؛ چند مقدار کوچک رو روی کاغذ بنویس تا مرز روشن بشه.

مثال جمع عددهای یک تا سه رو با range(1,4) به دست میاره. فعالیت از تو یک تابع عمومی می‌خواد و n صفر هم باید معنی مشخص داشته باشه. خطای رایج اضافه‌کردن n بعد از حلقه به‌عنوان وصله است؛ شاید جواب رو درست کنه، اما اگر بعداً بازه حلقه هم اصلاح بشه عدد آخر دوبار حساب می‌شه. یک تعریف واحد و روشن برای محدوده بنویس. accumulator یا جمع‌کننده رو قبل از حلقه صفر کن و در هر دور همان متغیر رو به‌روز کن. برای n=0، حلقه‌ای که هیچ دوری نمی‌زنه باید خروجی صفر باقی بذاره.

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

total = 0
for number in range(1, 4):
    total += number
assert total == 6

حالا نوبت توئه: inclusive_total(n) را کامل کن تا جمع عددهای صحیح ۱ تا n، شامل خود n، را برگرداند. n صحیح نامنفی است؛ n=0 خروجی 0، n=1 خروجی 1 و n=4 خروجی 10 دارد. حلقه و جمع‌کننده را نگه دار و مرز range را درست تعیین کن؛ خروجی باید عدد باشد.

فعالیت شما

inclusive_total(n) را کامل کن تا جمع عددهای صحیح ۱ تا n، شامل خود n، را برگرداند. n صحیح نامنفی است؛ n=0 خروجی 0، n=1 خروجی 1 و n=4 خروجی 10 دارد. حلقه و جمع‌کننده را نگه دار و مرز range را درست تعیین کن؛ خروجی باید عدد باشد.

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

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

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

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

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

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

def inclusive_total(n):
    total = 0
    for number in range(1, 1):  # پایان را کامل کن
        total += number
    return total