Loading...
v.vasilev1 avatar v.vasilev1 3 Точки

03. Plant Discovery Python Problem

Здравейте група

Някой успя ли да реши тая задача?

Нещо ми куца и няколко дни ме мъчи  crying

 

Ето го кода ми. 

https://pastebin.com/wPghrQ8U

 

Ето го и условието

https://judge.softuni.bg/Contests/Practice/Index/2518#2

Тагове:
0
Fundamentals Module
MartinBG avatar MartinBG 4803 Точки
Best Answer

В решението забелязвам няколко пропуска: 

- неправилно изчисляване на рейтинга (заради counter-а)

- не се отчита рейтинга при сортирането

- очаква се всяко растение да е получило поне един рейтинг

- не се извежда "error" при въвеждане на рейтинг за несъществуващо растение.

 

Това е модифицираното решение, като съм използвал помощен клас:

class Plant:
    def __init__(self, name, rarity):
        self.name = name
        self.rarity = rarity
        self.ratings = []

    def rating(self):
        if self.ratings:
            return sum(self.ratings) / len(self.ratings)
        return 0


plants = {}

n = int(input())
for num in range(n):
    token = input().split('<->')
    plant_name = token[0]
    plant_rarity = token[1]
    plants[plant_name] = Plant(plant_name, int(plant_rarity))

command = input()
while command != 'Exhibition':
    token_2 = command.split(': ')
    token_3 = token_2[1].split(' - ')
    plant_name = token_3[0]
    command_type = token_2[0]

    if plant_name not in plants:
        print('error')

    elif command_type == 'Rate':
        rating = token_3[1]
        plants[plant_name].ratings.append(int(rating))

    elif command_type == 'Update':
        new_rarity = int(token_3[1])
        plants[plant_name].rarity = new_rarity

    elif command_type == 'Reset':
        plants[plant_name].ratings.clear()

    else:
        print('error')

    command = input()

sorted_plants = sorted(plants.values(), key=lambda p: (p.rarity, p.rating()), reverse=True)

print(f'Plants for the exhibition:')
for plant in sorted_plants:
    print(f'- {plant.name}; Rarity: {plant.rarity}; Rating: {plant.rating():.2f}')

 

0
09/10/2020 07:08:00
v.vasilev1 avatar v.vasilev1 3 Точки

Благодаря много за отговора. yes

Възможно ли е да се напише само с речници?

 

 

1
MartinBG avatar MartinBG 4803 Точки

Да, може да се реши и само с речници, но ще е с повече код, по-разхвърляна логика и повече места, на които може да се обърка нещо... Не се сещам за изчистено решение без клас, но и не пиша често на Python.

0
v.vasilev1 avatar v.vasilev1 3 Точки

Да, благодаря много. На фундаменталс ниво сме още. Струва ми се че скоро като вземем класове и обекти ще е една идея по лесно.

0
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.