خطای یکیکم یا یکیزیاد زمانی رخ میده که محدوده حلقه با قرارداد مسئله دقیقاً هماهنگ نباشه. در 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 را درست تعیین کن؛ خروجی باید عدد باشد.