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.
def melhor_filme(filmes, classific):
    # actualiza
    nome = classific[0]
    valores = classific[1:]
    filmes[nome] = filmes.setdefault(nome,[]) + valores
    # calcula melhor
    m_filme = ''
    m_pont = 0
    for nome,pontos in filmes.items():
        comp = len(pontos)
        if comp < 3:
            continue
        media = (sum(pontos)/comp)
        if media > m_pont:
            m_filme = nome
            m_pont = media
    return (m_filme, m_pont)

Sem comentários:

Enviar um comentário