0
respostas

Resolução: calculando o total de vendas

# Importa a funcionalidade List do módulo typing para definir tipos de dados em listas
from typing import List 

def verificar_valor_fornecido(mensagem: str) -> float:
    """
    Função que solicita um valor ao usuário e valida se é um número positivo válido.
    
    Parâmetros:
        mensagem (str): Texto que será exibido ao usuário ao pedir o valor
    
    Retorna:
        float: O valor numérico válido fornecido pelo usuário
    """
    
    # Inicia um loop infinito que só será interrompido quando o usuário digitar um valor válido
    while True:

        # Bloco try: tenta executar o código que pode gerar erros
        try:

            # Solicita um valor ao usuário, exibe a mensagem e converte a entrada para número decimal (float)
            valor = float(input(mensagem))

            # Verifica se o valor digitado é negativo (menor que zero)
            if valor < 0:
                
                # Se for negativo, exibe mensagem de erro e volta ao início do loop
                print('\nDigite apenas valores positivos!')
            
            # Verifica se o valor digitado é exatamente zero
            elif valor == 0:

                # Se for zero, exibe uma mensagem questionando (vendeu de graça?) e volta ao início do loop
                print('\nVendeu de graça?')
            
            # Se o valor não é negativo nem zero, então é um valor válido
            else:

                # Retorna o valor válido e encerra a função (sai do loop)
                return valor
            
        # Bloco except: captura erros quando o usuário digita algo que não pode ser convertido para número
        except ValueError:

            # Exibe mensagem de erro se o usuário digitou letras ou caracteres inválidos
            print('\nDigite apenas números!')


def solicitar_valor_da_venda() -> float:
    """
    Função que permite registrar múltiplas vendas e retorna a lista com todos os valores.
    
    Retorna:
        List[float]: Lista contendo todos os valores das vendas registradas
    """

    # Cria uma lista vazia que armazenará todos os valores das vendas
    vendas = []

    # Inicia um loop infinito que continuará até o usuário decidir parar
    while True:
        
        # Chama a função que valida e retorna um valor de venda válido
        valor = verificar_valor_fornecido('\nDigite o valor da venda: R$ ')

        # Adiciona o valor da venda no final da lista de vendas
        vendas.append(valor)

        # Pergunta ao usuário se deseja continuar registrando vendas e converte a resposta para maiúscula
        continuar = input('\nDeseja registrar mais uma venda? (S/N): ').upper()

        # Se a resposta for diferente de 'S' (qualquer tecla exceto S)
        if continuar != 'S':

            # Interrompe o loop (para de pedir vendas)
            break
        
    # Retorna a lista completa com todas as vendas registradas
    return vendas


def somar_vendas(vendas: List[float]) -> float:
    """
    Função que recebe uma lista de valores e calcula o total somando todos os elementos.
    
    Parâmetros:
        vendas (List[float]): Lista contendo os valores das vendas
    
    Retorna:
        float: Soma total de todas as vendas
    """

    # Inicializa uma variável com valor zero para acumular o total das vendas
    total_vendas = 0

    # Loop que percorre cada elemento (venda) dentro da lista de vendas
    for venda in vendas:
        
        # Adiciona o valor da venda atual ao total acumulado
        # É equivalente a: total_vendas = total_vendas + venda
        total_vendas += venda

    # Retorna o valor total acumulado de todas as vendas
    return total_vendas


def main():
    """
    Função principal que coordena a execução do programa.
    Chama as outras funções na ordem correta e exibe o resultado final.
    """

    # Chama a função que solicita as vendas e armazena a lista retornada na variável
    lista_vendas = solicitar_valor_da_venda()

    # Chama a função que soma todas as vendas e armazena o resultado total
    total_vendas = somar_vendas(lista_vendas)

    # Exibe o resultado formatado na tela
    # O :.2f formata o número para exibir 2 casas decimais (centavos)
    print(f'\nO total do faturamento foi de R$ {total_vendas:.2f}')


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