1
resposta

[Projeto] Total de vendas

from decimal import Decimal, InvalidOperation
from typing import List


def inserir_vendas() -> List[str]:
    entrada = input("Digite os valores das vendas separados por espaço (ex: 250,50 300 405,10): ")
    return entrada.strip().split()


def validar_vendas(valores: List[str]) -> List[Decimal]:
    valores_convertidos = []
    
    for valor in valores:
        valor = valor.replace(",", ".")
        try:
            decimal_valor = Decimal(valor)
            if decimal_valor < 0:
                raise ValueError("Valor negativo não é permitido.")
            valores_convertidos.append(decimal_valor)
        except (InvalidOperation, ValueError) as e:
            raise ValueError(f"Valor inválido encontrado: '{valor}'. {e}")
    return valores_convertidos


def somar_vendas():
    while True:
        try:
            valores_str = inserir_vendas()
            valores_decimal = validar_vendas(valores_str)
            total = sum(valores_decimal)
            print(f'Total de vendas: R$ {total:.2f}')
            break
        except ValueError as erro:
            print(f'Erro: {erro}')
            print('\nTente novamente.')


def main():
    somar_vendas()


if __name__ == '__main__':
    main()
1 resposta

Boa noite, Matheus! Como está?

Incrível! Continue resolvendo os desafios e compartilhando com a comunidade Alura.

Notei que você utilizou o módulo decimal para garantir precisão em cálculos financeiros, aplicou de forma eficaz o tratamento de erros com try/except para validar as entradas e compreendeu a importância do uso de while True com controle de fluxo para garantir uma interação com o usuário.

Permaneça postando as suas soluções, com certeza isso ajudará outros estudantes e tem grande relevância para o fórum.

Ícone de sugestão Para saber mais:

Sugestão de conteúdo para você mergulhar ainda mais sobre o tema:

Alguns materiais estão em inglês, mas é possível compreendê-los usando o recurso de tradução de páginas do próprio navegador.

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

Abraço e bons estudos!

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