--------------------------------------------------
میخواهیم تابعی بنویسیم که کارش چک کردن شرایط تعریف شده برای اشیاء (*objects*) مورد نظر است.
--------------------------------------------------
*کریم کچل، شطرنجباز حرفهای محله است که بعد از شرایط کرونا خود را در خانه قرنطینه کرده. اما متاسفانه مهرههای شطرنجش را گم کرده و بابت شرایط کرونا نمیتواند مهرهها را از بیرون سفارش دهد و تصمیم گرفته که با میوههایی که در خانه دارد مهرهها را بسازد.*
*او میفهمد که هر میوهای را نمیتواند به عنوان مهرهی شطرنج استفاده کند و تنها میوههای خوب را میتواند به عنوان مهرهی شطرنج استفاده کند.*
میوهای خوب است که شرایط زیر را داشته باشد:
- شکل آن به صورت کروی (*sphere*) باشد.
- جرم آن بین ۳۰۰ تا ۶۰۰ گرم باشد.
- حجم آن بین ۱۰۰ تا ۵۰۰ سانتیمتر مکعب باشد.
توجه کنید که جرم میوههای خوب، خود اعداد ۳۰۰ و ۶۰۰ و حجم آن، خود اعداد ۱۰۰ و ۵۰۰ هم میتواند باشد.
حال شما باید تابعی بنویسید که با گرفتن لیستی از میوهها، مشخص کند از هر نوع میوه چند تای آن خوب است.
# جزئیات
+ تابع شما که باید به نام `fruits` باشد به عنوان ورودی لیستی(*tuple*) از لغتنامهها(*Dictionary*) دریافت میکند که هر لغتنامه اطلاعات مربوط به یک میوه میباشد. این تابع در نهایت باید تعداد هر کدام از میوههای خوب را در قالب یک لغتنامه برگرداند.
+ نام و شکل هر میوه به ترتیب با عنوان `name` و `shape` و جرم و حجم هر میوه به ترتیب با عنوان `mass` و `volume` در یک لغتنامه ذخیره شده است.
+ فرض کنید ۴ عدد میوه به صورت زیر داریم:
| نام میوه | شکل | جرم | حجم | وضیعت |
|:--------:|:---------:|:----------:|:----------:|:----------:|
| سیب | کروی | ۳۵۰ | ۱۲۰ | میوه خوب |
| انبه | مربعی | ۱۵۰ | ۱۲۰ | میوه بد |
| لیمو | کروی | ۳۰۰ | ۱۰۰ | میوه خوب |
| سیب | کروی | ۵۰۰ | ۲۵۰ | میوه خوب |
سیستم داوری برای ورودی دادن میوههای بالا به تابع `fruits` این تابع را به صورت زیر صدا میزند.
```python
output = 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}))
```
در بین این میوهها، سه تا میوه خوب وجود دارد که ۲ تای آنها سیب، و یکی از آنها لیمو است. خروجی تابع شما به ازای چنین چیزی باید یک لغتنامه به صورت زیر باشد:
```python
{'apple': 2, 'lemon': 1}
```
ساختار تابع شما باید به شکل زیر باشد:
```python
def fruits(tuple_of_fruits):
pass
```
# نکات
+ برای ارسال باید یک فایل پایتون ارسال کنید که در آن تابع `fruits` به شکل گفته شده وجود داشته باشد.
+ میتوانید فایل اولیهی خام و کد تست نمونه را با استفاده از این [لینک](https://quera.ir/qbox/download/wlvI9vXrkU/initial.zip) دانلود کنید.
# قسمت آموزشی
در این قسمت راهنماییهای سوال به ترتیب در روزهای شنبه، دوشنبه و چهارشنبه ساعت ۱۸ اضافه میشود. مشکلاتتان در راستای حل سوال را میتوانید از بخش ["سوال بپرسید"](https://quera.ir/contest/clarification/18303/) مطرح کنید.
<details class="blue">
<summary>راهنمایی ۱</summary>
در قدم اول، سوال را ساده میکنیم و فرض میکنیم که میخواهیم تابعی بنویسیم که یک میوه را در قالب یک کتابخانه ورودی میگیرد و بررسی میکند خوب است یا نه.
برای این کار تلاش میکنیم چنین تابعی را با توجه به شرایط سوال کامل کنیم:
```python
def is_good(fruit):
#returns true if the fruit is good
```
اگر چنین تابعی را داشته باشیم میتوانیم میوهها را تکتک به آن بدهیم و بررسی کنیم خوب هستند یا نه.
</details>
<details class="blue">
<summary>راهنمایی ۲</summary>
تابع `is_good` را به شکل زیر پیادهسازی میکنیم
```python
def is_good(fruit):
if fruit['shape'] == 'sphere' and 300 <= fruit['mass'] <= 600 and 100 <= fruit['volume'] <= 500:
return True # Fruit is good
else:
return False # Fruit is bad
```
حالا باید در تابع خواسته شده در سوال تک به تک میوه ها رو با این روش بررسی کنیم تا ببینیم خوب هستند یا نه و لغتنامهمان را آپدیت کنیم:
```python
def fruits(fruits_list):
dict = {}
for fruit in fruits_list:
if is_good(fruit):
# Update dictionary
return dict
```
</details>
<details class="blue">
<summary>راهنمایی ۳</summary>
حالا که هم میتونیم میوههای خوب و بد رو از هم تشخیص بدیم و تک تک میوههامون رو هم بهش میدیم وقت این شده که لغتنامهمان را آپدیت کنیم!
برای اینکار اول چک میکنیم ببینیم میوه خوبمون وجود داره تو لغتنامه یا نه اگر از قبل وجود داشتش به مقدارش یدونه اضافه میکنیم اگر هم وجود نداشت با مقدار یک به لغتنامهمان اضافهش میکنیم!
در نهایت کدمون مثل کد پایین میشه:
```python
def is_good(fruit):
if fruit['shape'] == 'sphere' and 300 <= fruit['mass'] <= 600 and 100 <= fruit['volume'] <= 500:
return True # Fruit is good
else:
return False # Fruit is bad
def fruits(fruits_list):
dict = {}
for fruit in fruits_list:
if is_good(fruit):
if fruit['name'] in dict:
dict[fruit['name']] += 1
else:
dict[fruit['name']] = 1
return dict
```
موفق باشید :دی
</details>
ارسال پاسخ برای این سؤال
در حال حاضر شما دسترسی ندارید.