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

رفع باگ جمع‌کننده حلقه در پایتون؛ شروع تازه برای هر ردیف

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

محل مقداردهی اولیه متغیر مهمه. یک جمع‌کننده که باید برای هر گروه از صفر شروع بشه، باید داخل حلقه گروه‌ها و قبل از حلقه عضوها مقدار بگیره. اگه اون رو فقط یک‌بار بیرون حلقه اصلی صفر کنیم، نتیجه گروه قبلی وارد گروه بعدی می‌شه. برنامه همچنان اجرا می‌شه ولی جواب‌ها به هم نشت می‌کنن.

مثال تعداد حرف‌های هر دسته رو مستقل حساب می‌کنه. تمرین جمع عددهای هر ردیف یک جدول رو می‌خواد. خطای رایج صفرکردن total داخل حلقه تک‌تک عددهاست؛ در اون حالت فقط آخرین عدد هر ردیف باقی می‌مونه. جای درست بین دو حلقه است: به ازای هر ردیف یک شروع تازه و به ازای هر عدد یک افزایش. ردیف خالی هم باید جمع صفر داشته باشه و جاش در خروجی حفظ بشه. با یک ردیف تنها، باگ انباشته‌شدن ممکنه دیده نشه؛ دو ردیف با مقدارهای متفاوت و یک ردیف خالی قدرت بررسی بیشتری دارن.

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

groups = [["ab", "c"], ["xy"]]
lengths = []
for group in groups:
    total = 0
    for word in group:
        total += len(word)
    lengths.append(total)
assert lengths == [3, 2]

حالا نوبت توئه: row_sums(rows) برای هر ردیف فهرست عددهای صحیح، جمع مستقل همان ردیف را برگرداند؛ [[1,2],[4]]=>[3,4]، [[],[5]]=>[0,5] و []=>[]. باگ total مشترک را اصلاح کن؛ ترتیب ردیف‌ها و خود ورودی نباید تغییر کند. جمع‌کننده هر ردیف باید از صفر شروع شود.

فعالیت شما

row_sums(rows) برای هر ردیف فهرست عددهای صحیح، جمع مستقل همان ردیف را برگرداند؛ [[1,2],[4]]=>[3,4]، [[],[5]]=>[0,5] و []=>[]. باگ total مشترک را اصلاح کن؛ ترتیب ردیف‌ها و خود ورودی نباید تغییر کند. جمع‌کننده هر ردیف باید از صفر شروع شود.

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

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

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

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

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

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

def row_sums(rows):
    result = []
    total = 0
    for row in rows:
        for number in row:
            total += number
        result.append(total)
    return result