quinta-feira, 8 de janeiro de 2015

Teste Final - Pergunta 3

Guardamos num dicionário as classificações que diversos filmes receberam dos críticos (um valor entre 1 e 5). Queremos manter o dicionário actualizado e saber qual o filme com melhor pontuação média. Só podem ser candidatos a melhor filme os que tiverem pelo menos 3 valores.

Solução:

A solução abaixo usa o setdefault para actualizar o dicionário das classificações. Deste modo fica resolvida a questão de incluir uma primeira classificação ou simplesmente actualizar. Actualizado o dicionário, ele é percorrido, item a item, para determinar o melhor, prevendo o caso de não ter as 3 classificações.
01.def melhor_filme(filmes, classific):
02.    # actualiza
03.    nome = classific[0]
04.    valores = classific[1:]
05.    filmes[nome] = filmes.setdefault(nome,[]) + valores
06.    # calcula melhor
07.    m_filme = ''
08.    m_pont = 0
09.    for nome,pontos in filmes.items():
10.        comp = len(pontos)
11.        if comp < 3:
12.            continue
13.        media = (sum(pontos)/comp)
14.        if media > m_pont:
15.            m_filme = nome
16.            m_pont = media
17.    return (m_filme, m_pont)

Sem comentários:

Enviar um comentário