محاسبهگر
محمد لیستی از اعداد به نام ls به طول n و یک عدد صحیح مثبت m در اختیار دارد. او میخواهد ارزش این لیست را طبق مراحل زیر محاسبه کند و برای این کار، به کمک شما نیاز دارد.
مرحله ۱: گروهبندی
لیست ls را به گروههای متوالی با اندازهی m تقسیم کنید. به این صورت که m عنصر اول لیست در گروه اول، m عنصر بعدی در گروه دوم و الی آخر قرار میگیرند.
گروه آخر ممکن است کمتر از
mعضو داشته باشد اگر تعداد کل عناصر لیست برmبخشپذیر نباشد.
مرحله ۲: محاسبهی جمع هر گروه
یک لیست جدید ایجاد کنید که هر عنصر آن، حاصل جمع اعداد موجود در گروه متناظر از مرحلهی قبل باشد.
مرحله ۳: محاسبهی ارزش شطرنجی
ارزش نهایی لیست با محاسبهی جمع و تفریق متناوب (شطرنجی) عناصر لیست جدید به دست میآید. به این صورت که عنصر اول لیست جدید، منهای عنصر دوم، بهعلاوهی عنصر سوم، منهای عنصر چهارم و ... تا انتهای لیست جدید محاسبه میشود.
تابع calculator
تابع calculator(n, m, ls) را پیادهسازی کنید که n (تعداد اعضای لیست)، m (اندازهی هر گروه) و ls (لیست اعداد ورودی) را بهعنوان آرگومان دریافت کند و ارزش نهایی محاسبهشده طبق مراحل بالا را برگرداند.
🎯 نمونه
نمونهی ۱
>>> calculator(8, 3, [1, 2, 3, 4, 5, 6, 7, 8])
6
گروهبندی: گروه ۱: [1, 2, 3] گروه ۲: [4, 5, 6] گروه ۳: [7, 8] جمع هر گروه: [6, 15, 15] ارزش شطرنجی: 6 − 15 + 15 =
6
نمونهی ۲
>>> calculator(8, 1, [1, 2, 3, 4, 5, 6, 7, 8])
-4
گروهبندی: گروهها تکعضوی میشوند: [1], [2], [3], [4], [5], [6], [7], [8] جمع هر گروه: [1, 2, 3, 4, 5, 6, 7, 8] (همان لیست اولیه) ارزش شطرنجی: 1 − 2 + 3 − 4 + 5 − 6 + 7 − 8 =
-4
💡 راهنمایی
برای حل این تمرین، مراحل زیر را دنبال کنید:
- یک لیست خالی برای ذخیرهی جمع گروهها ایجاد کنید.
- با استفاده از یک حلقه، لیست ورودی را به گروههای
mتایی تقسیم کنید و جمع هر گروه را محاسبه کنید. - با استفاده از یک حلقه، جمعهای گروهها را بهصورت شطرنجی با هم جمع/تفریق کنید.
def calculator(n, m, ls):
group_sums = []
for i in range(0, n, m):
group = ls[i:i + m]
group_sums.append(sum(group))
result = 0
for i, value in enumerate(group_sums):
if i % 2 == 0:
result += value
else:
result -= value
return result
میتوانید از List Comprehension برای گروهبندی استفاده کنید:
group_sums = [sum(ls[i:i + m]) for i in range(0, n, m)]
میتوانید از تابع
sum()با یک عبارت شرطی استفاده کنید:
result = sum(value if i % 2 == 0 else -value for i, value in enumerate(group_sums))
- در این تمرین، نیازی به دریافت ورودی از کاربر یا چاپ خروجی در کنسول ندارید.
- شما فقط باید تابع
calculatorرا پیادهسازی کنید.- ورودی تابع از طریق آرگومانهای آن دریافت میشود و خروجی تابع باید از طریق دستور
returnبرگردانده شود.- نیازی به فراخوانی تابع در کد ارسالی نیست. سیستم بهطور خودکار تابع شما را با ورودیهای مختلف تست خواهد کرد.
✅ این تمرین را در ویرایشگر خود پیادهسازی کنید. به یاد داشته باشید که تابع باید ارزش نهایی را بهعنوان یک عدد برگرداند.
نمونهها
calculator(8, 3, [1, 2, 3, 4, 5, 6, 7, 8])
6
calculator(8, 1, [1, 2, 3, 4, 5, 6, 7, 8])
-4
برای نوشتن پاسخ و دریافت امتیاز، ابتدا وارد حساب شوید.
ورود