Importante

Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!

1
resposta

[Sugestão] Contador de cédulas únicas

1 resposta

Fala, Marinaldo! Tudo bom?

Agradeço por trazer sua solução para o fórum!

Curti demais como trabalhou a programação dinâmica para calcular a menor quantidade de cédulas em Python, entendeu perfeitamente a importância da validação robusta da entrada para evitar erros de formato e usou bem a função formatar_reais para deixar a saída amigável ao usuário.

Algo bem legal para complementar é simplificar a reconstrução da solução usando collections.Counter, deixando o código mais enxuto. Dessa maneira:

from collections import Counter

def calcular_cedulas(valor):
    minimo = [float("inf")] * (valor + 1)
    ultima_cedula = [0] * (valor + 1)
    minimo[0] = 0

    for total in range(1, valor + 1):
        for cedula in CEDULAS:
            if cedula <= total:
                quantidade = minimo[total - cedula] + 1
                if quantidade < minimo[total]:
                    minimo[total] = quantidade
                    ultima_cedula[total] = cedula

    if minimo[valor] == float("inf"):
        return None

    resultado = []
    restante = valor
    while restante:
        cedula = ultima_cedula[restante]
        resultado.append(cedula)
        restante -= cedula

    return Counter(resultado)

Isso faz com que a contagem das cédulas seja automática e mais legível.

E algumas boas práticas que você pode adotar são:

  • Legibilidade: separar funções auxiliares em arquivos diferentes, como utils.py.
  • Eficiência: limitar o conjunto de cédulas testadas para valores grandes, evitando cálculos desnecessários.
  • Interatividade: permitir que o usuário escolha se quer ver apenas o total ou também o detalhamento das cédulas.

Continue postando as suas soluções! Além de ganhar pontos de XP na plataforma, você pode ajudar outros estudantes no fórum.

Ah, uma pergunta: você prefere evoluir esse projeto para simular um caixa eletrônico completo com múltiplos usuários ou manter apenas o cálculo de cédulas para focar na lógica de programação dinâmica?

Fico à disposição! E se precisar, conte sempre com o apoio do fórum.

Abraço e bons estudos!

Alura Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!