1
resposta

[Sugestão] Faça como eu fiz: calculando o total de vendas

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

1 resposta

Olá, Alex. Como vai?

Sensacional ver você chegando firme ao arquivo Alura ex033.py! Sua sequência de estudos está simplesmente exemplar, e o nível de maturidade do seu código só aumenta a cada exercício.

Dessa vez, você resolveu um problema clássico de manipulação de entradas sequenciais de forma brilhante. O uso do método .split() na linha 5 foi a escolha perfeita para converter aquela string única digitada pelo usuário em uma lista de strings independentes, baseando-se nos espaços em branco.

Além disso, veja que fantástico: nas nossas interações anteriores, conversamos sobre o conceito de List Comprehension, e você já o aplicou perfeitamente aqui na linha 8 [float(valor) for valor in lista_sales_texto] para converter os textos para números de ponto flutuante (float). O uso da função nativa sum() e a formatação com int() na f-string fecharam o script com chave de ouro. Código limpo, enxuto e rodando perfeitamente!

Para agregar ainda mais valor a essa etapa do seu aprendizado sobre processamento de coleções e listas em Python, quero compartilhar duas dicas sobre funções nativas avançadas e uma boa prática de formatação de saída:


1. Conhecendo a função funcional map()

A estrutura de List Comprehension que você usou na linha 8 é impecável e muito recomendada. No entanto, quando nossa única intenção é aplicar uma mesma função de conversão de tipo (como float() ou int()) a absolutamente todos os itens de uma lista, o Python nos oferece um recurso alternativo e muito veloz chamado map().

A função map(função, sequência) pega a função que você quer aplicar e a distribui por toda a lista sem a necessidade de escrever o loop for explicitamente.

Veja como os passos 3 e 4 do seu código poderiam ser resumidos de uma forma muito comum em códigos corporativos:

# Converte e soma tudo diretamente usando map()
total_vendas = sum(map(float, lista_vendas_texto))

O que aconteceu aqui? O map(float, lista_vendas_texto) transforma todas as strings em números em tempo de execução, e a função sum() já recebe esses números e faz o cálculo da soma imediatamente, economizando linhas de código e poupando o uso de variáveis intermediárias na memória do computador.


2. Cuidados com a tipagem estrita na Saída (int vs float)

Na linha 14, você utilizou a conversão {int(total_vendas)} para exibir o resultado final como um número inteiro. Para o teste que você realizou com as entradas 100 250 300 (que resultou em 650), funcionou perfeitamente e deixou o visual limpo.

Contudo, como estamos tratando de vendas, no mundo real é extremamente comum existirem valores com centavos (por exemplo: 10.50 20.30). Se o usuário digitar valores quebrados, o uso do comando int() vai simplesmente "cortar" e ignorar os centavos do total, gerando um erro grave de fechamento de caixa.

Para manter o visual limpo, sem o risco de perder os centavos da venda, a melhor prática do mercado é manter o tipo como float e formatar a exibição para forçar duas casas decimais usando recursos da própria f-string. Veja como fazer:

# O modificador :.2f garante exatamente duas casas após a vírgula
print(f"O total de vendas foi: R$ {total_vendas:.2f}")

Se o total der 650, o Python exibirá automaticamente 650.00. Se der um valor quebrado como 650.75, os centavos estarão sãos e salvos na tela.

Parabéns pelo excelente progresso, pela dedicação incansável ao longo de toda essa trilha prática de mais de 30 arquivos e pelo ótimo uso dos conceitos discutidos! Continue com essa constância fantástica.

Espero que possa ter lhe ajudado!