2
respostas

[solução] Monitorando vendas no comércio

def pega_int(pergunta: str, opcoes: list[int] = []) -> int:
    """
    Solicita uma entrada do usuário, garantindo que seja um número inteiro
    e, opcionalmente, que esteja dentro de uma lista de opções válidas.

    Args:
        pergunta: A mensagem (prompt) a ser exibida ao usuário.
        opcoes: Uma lista de inteiros válidos. Se a lista estiver vazia
            (padrão), qualquer inteiro é aceito.

    Returns:
        O número inteiro digitado pelo usuário.

    Raises:
        ValueError: Se a entrada não puder ser convertida para int.
        ValueError: Se o inteiro digitado não estiver na lista de opções válidas.
    """

    resposta: int = 0
    
    try:
        resposta = int(input(pergunta))
    except ValueError:
        raise ValueError('Entrada inválida!')
    
    if opcoes == []:
        return resposta
    
    if resposta in opcoes:
        return resposta
    raise ValueError('Opção inválida!')

def main() -> None:
    """
    Função principal do programa para monitorar vendas de frutas.

    Solicita ao usuário a quantidade de maçãs e bananas vendidas,
    utilizando a função `pega_int` para garantir que as entradas sejam válidas.
    
    Compara as quantidades e imprime qual produto teve o maior volume
    de vendas ou se houve um empate.
    """
    
    produtos: dict [str, int] = {
        'maça': 0,
        'banana': 0
    }

    for produto in produtos:
        while True:
            try:
                produtos[produto] = pega_int(f'\nDigite a quantidade de {produto}(s) vendida(s): ')
                break
            except ValueError as e:
                print(e)

    if produtos['maça'] > produtos['banana']:
        print('As maçãs tiveram mais vendas.')
    elif produtos['maça'] < produtos['banana']:
        print('As bananas tiveram mais vendas.')
    else:
        print('As vendas de maçãs e bananas foram iguais.')


if __name__ == '__main__':
    main()

Garanta sua matrícula hoje e ganhe + 2 meses grátis

Continue sua jornada tech com ainda mais tempo para aprender e evoluir

Quero aproveitar agora
2 respostas

Oi, Mozert! Como vai?

Agradeço por compartilhar.

Gostei da forma como você estruturou a função pega_int, deixando o código mais organizado e garantindo entradas válidas. Sua solução para comparar as vendas de maçãs e bananas está clara e bem prática.

Continue praticando dessa forma, pois esse cuidado em validar entradas fortalece bastante sua lógica de programação.

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

Olá, Lorena!
Obrigado pelo feedback!

Adicionei uma função para classificar o produto mais vendido ou os mais vendidos (empatado) e fiz uma lógica para funcionar com qualquer quantidade de produtos adicionados ao dicionário de produtos.

def indica_vencedor(competidores: dict[str, int]) -> dict[str, int]:
    """
    Indica o(s) vencedor(es) ou competidores empatados com a pontuação máxima
    a partir de um dicionário de competidores e suas pontuações.

    Args:
        competidores: Um dicionário onde a chave é o nome do competidor (str)
                      e o valor é a sua pontuação (int).

    Returns:
        Um dicionário contendo apenas o(s) competidor(es) com a pontuação máxima.
        Retorna um dicionário vazio se 'competidores' for vazio.
    """

    if not competidores:
        return {}

    vencedores: dict[str, int] = {}
    pontuacao_maxima: int = 0

    pontuacao_maxima = max(competidores.values())

    for nome, pontuacao in competidores.items():
        if pontuacao == pontuacao_maxima:
            vencedores[nome] = pontuacao

    return vencedores


def main() -> None:
    """
    Função principal do programa para monitorar vendas de frutas.

    Solicita ao usuário a quantidade de maçãs e bananas vendidas,
    utilizando a função `pega_int` para garantir que as entradas sejam válidas.
    
    Compara as quantidades e imprime qual produto teve o maior volume
    de vendas ou se houve um empate.
    """

    quantidade_vencedores: int = 0
    vencedores: dict[str, int] = {}    
    produtos: dict[str, int] = {
        'maça': 0,
        'banana': 0
    }

    for produto in produtos:
        while True:
            try:
                produtos[produto] = pega_int(f'\nDigite a quantidade de {produto}(s) vendida(s): ')
                break
            except ValueError as e:
                print(e)

    vencedores = indica_vencedor(produtos)
    quantidade_vencedores = len(vencedores)
    
    if quantidade_vencedores == 1:
        print(f'O produto vencedor de vendas é: \n{'\n'.join(list(vencedores.keys()))}')
    elif quantidade_vencedores > 1:
        print(f'Os produtos empatados em vendas são: \n{'\n'.join(list(vencedores.keys()))}')
    else:
        print('Erro ao identificar o produto vencedor de vendas.')