میوهخوری
سلیب که از برنامهنویسی خسته شده، تصمیم گرفته که به میوهخوری روی آورد و تا حد توانش میوه بخورد؛ ولی چون آدم حساسی است، به هر میوهای لب نمیزند و فقط میوههای خوب را میخورد. میوهی خوب، ویژگیهای زیر را دارد:
- شکل آن کروی (
'sphere') است. - جرم آن بین ۳۰۰ و ۶۰۰ گرم (شامل خود ۳۰۰ و ۶۰۰) است. (300 ≤ mass ≤ 600)
- حجم آن بین ۱۰۰ و ۵۰۰ سانتیمتر مکعب (شامل خود ۱۰۰ و ۵۰۰) است. (100 ≤ volume ≤ 500)
تابع good_fruits
تابع good_fruits را طوری بنویسید که میوههای خوب را برای سلیب پیدا کند. این تابع، تاپلی از میوهها را ورودی میگیرد. اطلاعات هر میوه در یک دیکشنری قرار گرفته و شامل نام ('name')، شکل ('shape')، جرم ('mass') بر حسب گرم و حجم ('volume') بر حسب سانتیمتر مکعب است.
این تابع باید در خروجی یک دیکشنری را برگرداند که در آن نام میوههای خوبِ یافتشده و تعداد هر میوهی خوب قرار دارد.
🎯 مثال
فرض کنید ۴ میوه بهصورت زیر داریم:
نام میوه | شکل | جرم | حجم | وضعیت سیب | کروی | ۳۵۰ | ۱۲۰ | میوهی خوب انبه | مربعی | ۱۵۰ | ۱۲۰ | میوهی بد لیمو | کروی | ۳۰۰ | ۱۰۰ | میوهی خوب سیب | کروی | ۵۰۰ | ۲۵۰ | میوهی خوب
ورودی
>>> good_fruits((
{'name':'apple', 'shape': 'sphere', 'mass': 350, 'volume': 120},
{'name':'mango', 'shape': 'square', 'mass': 150, 'volume': 120},
{'name':'lemon', 'shape': 'sphere', 'mass': 300, 'volume': 100},
{'name':'apple', 'shape': 'sphere', 'mass': 500, 'volume': 250}
))
خروجی
{'apple': 2, 'lemon': 1}
📖 توضیح مثال
در لیست ورودی، سه میوه معیار خوب بودن را دارند:
- اولین سیب (
'shape': 'sphere'،'mass': 350و'volume': 120) - لیمو (
'shape': 'sphere'،'mass': 300و'volume': 100) - دومین سیب (
'shape': 'sphere'،'mass': 500و'volume': 250)
انبه معیار شکل ('square') و جرم (150) را ندارد. بنابراین، خروجی شامل شمارش این میوههای خوب بر اساس نام است (۲ سیب و ۱ لیمو).
💡 راهنمایی
برای حل این تمرین، مراحل زیر را دنبال کنید:
- یک دیکشنری خالی برای ذخیرهی تعداد میوههای خوب ایجاد کنید.
- با استفاده از یک حلقه، هر میوه را از تاپل ورودی بررسی کنید.
- برای هر میوه، سه شرط را بررسی کنید: شکل کروی باشد (
'sphere') جرم بین ۳۰۰ تا ۶۰۰ باشد حجم بین ۱۰۰ تا ۵۰۰ باشد - اگر هر سه شرط برقرار بود، نام میوه را در دیکشنری خروجی بشمارید.
- در نهایت، دیکشنری خروجی را برگردانید.
def good_fruits(fruits):
good_fruit_count = {}
for fruit in fruits:
if (fruit['shape'] == 'sphere' and
300 <= fruit['mass'] <= 600 and
100 <= fruit['volume'] <= 500):
name = fruit['name']
if name in good_fruit_count:
good_fruit_count[name] += 1
else:
good_fruit_count[name] = 1
return good_fruit_count
میتوانید از متد
get()برای سادهتر کردن شمارش استفاده کنید:
good_fruit_count[name] = good_fruit_count.get(name, 0) + 1
- در این تمرین، نیازی به دریافت ورودی از کاربر یا چاپ خروجی در کنسول ندارید.
- شما فقط باید تابع
good_fruitsرا پیادهسازی کنید.- ورودی تابع از طریق آرگومان آن دریافت میشود و خروجی تابع باید از طریق دستور
returnبرگردانده شود.- نیازی به فراخوانی تابع در کد ارسالی نیست. سیستم بهطور خودکار تابع شما را با ورودیهای مختلف تست خواهد کرد.
✅ این تمرین را در ویرایشگر خود پیادهسازی کنید. به یاد داشته باشید که تابع باید یک دیکشنری از نام میوههای خوب و تعداد آنها برگرداند.
نمونهها
good_fruits((
{'name':'apple', 'shape': 'sphere', 'mass': 350, 'volume': 120},
{'name':'mango', 'shape': 'square', 'mass': 150, 'volume': 120},
{'name':'lemon', 'shape': 'sphere', 'mass': 300, 'volume': 100},
{'name':'apple', 'shape': 'sphere', 'mass': 500, 'volume': 250}
)){'apple': 2, 'lemon': 1}برای نوشتن پاسخ و دریافت امتیاز، ابتدا وارد حساب شوید.
ورود