traceback زنجیره فراخوانیهایی رو نشون میده که به خطا رسیدن. پایینترین پیام، نوع استثنا و توضیح کوتاهش رو میگه. بالاتر از اون، آخرین عملیات برنامه خودت رو پیدا میکنی. خواندن از پایین معمولاً کمک میکنه قبل از دنبالکردن کل مسیر، بدونی دنبال چه نوع مشکل میگردی. بعد باید به کد و ورودی واقعی برگردی.
در مثال، تبدیل یک رشته به int معتبره، اما خود فهرست رو نمیتونیم یکباره به int تبدیل کنیم. فعالیت همین تفاوت رو در یک تابع جمع نشان میده. فرض کن پایین traceback نوشته TypeError و گفته مقدار list قابل تبدیل به int نیست. خطای رایج تبدیل فهرست به رشته و بعد تلاش دوباره برای int کردنه؛ شکل نمایش فهرست عدد معتبر نیست. باید هر عضو جدا تبدیل بشه و عددهای حاصل جمع بشن. فهرست خالی هم یک حالت واقعی است و جمعش باید صفر باشه، نه اینکه اولین عضو رو بیبررسی بخونیم.
✍️ مثال حلشده:
values = ["5", "7"]
total = sum(int(item) for item in values)
assert total == 12
حالا نوبت توئه: تابع sum_texts(values) را کامل کن. ورودی فهرست رشتههای عدد صحیح معتبر است؛ خروجی جمع عددی آنهاست. برای ["3", "4"] عدد 7 و برای [] عدد 0 برگردان؛ رشته منفی مثل "-2" هم معتبر است. خود فهرست را به int تبدیل نکن و چیزی چاپ نکن.
فعالیت شما
تابع sum_texts(values) را کامل کن. ورودی فهرست رشتههای عدد صحیح معتبر است؛ خروجی جمع عددی آنهاست. برای ["3", "4"] عدد 7 و برای [] عدد 0 برگردان؛ رشته منفی مثل "-2" هم معتبر است. خود فهرست را به int تبدیل نکن و چیزی چاپ نکن.