1
resposta

Faça como eu fiz: calculando o total de vendas

Carlos trabalha em um comércio e precisa saber o valor total de vendas realizadas no dia. As vendas são informadas em uma única linha separadas por espaços.

Sua tarefa é criar um programa que receba essa linha, converta os valores para números e exiba o total.

Exemplo de entrada:

Digite os valores das vendas: 100 250 300 

Saída esperada:

O total de vendas foi: 650 
from datetime import date

total = 0.0

print("Digite os valores das vendas do dia separadamente.")
print("Quando terminar, digite 'fim'.")

while True:
    entrada = input("Valor da venda: ")
    if entrada.lower() == "fim":
        break
    try:
        valor = float(entrada)
        total += valor
    except ValueError:
        print("Entrada inválida. Digite um número ou 'fim' para encerrar.")

data_hoje = date.today()

print(f'O total de vendas do dia {data_hoje.day}-{data_hoje.month}-{data_hoje.year}:R$ {total:.2f}')

Digite os valores das vendas do dia separadamente.
Quando terminar, digite 'fim'.
Valor da venda: 317.98
Valor da venda: 259.65
Valor da venda: 891.55
Valor da venda: 210.02
Valor da venda: fim
O total de vendas do dia 22-5-2026:R$ 1679.20
1 resposta

Olá, Andressa. Como vai?

Que excelente resolução! O seu código ficou ótimo e a sua iniciativa de trazer o módulo datetime para carimbar a data exata do relatório (22-5-2026) agregou um valor comercial fantástico ao script. Isso mostra que você já está pensando em como estruturar dados para sistemas do mundo real.

A sua estrutura defensiva utilizando o laço while True com try/except para tratar o ValueError está irretocável. Ela blinda o programa contra erros de digitação e garante que o fechamento do caixa não seja interrompido por um caractere inválido.

Uma oportunidade de otimização focada no enunciado

O seu programa é extremamente robusto e excelente para um caixa que lança as vendas um por vez. Contudo, se analisarmos o enunciado específico deste desafio técnico:

"As vendas são informadas em uma única linha separadas por espaços."
*Exemplo: 100 250 300*

Para bater exatamente com o requisito de receber tudo em uma única linha (o que poupa muito tempo do usuário), nós podemos utilizar os conceitos de manipulação de strings e as funções embutidas do Python para processar os dados em lote.

A lógica ideal para resolver esse processamento em lote segue o seguinte fluxo de transformação de dados:

Podemos reescrever essa lógica em pouquíssimas linhas de código, fazendo com que o Python receba a linha inteira, quebre os espaços e realize a soma de uma só vez:

from datetime import date

# 1. Recebe todos os valores em uma única linha separados por espaços
entrada = input("Digite os valores das vendas: ")

# 2. Transforma a linha em uma lista de números flutuantes e calcula a soma total
# O método .split() corta o texto nos espaços e o map() converte cada pedaço para float
total = sum(map(float, entrada.split()))

# 3. Exibe o resultado formatado com a data
data_hoje = date.today()
print(f"O total de vendas do dia {data_hoje.day}/{data_hoje.month}/{data_hoje.year} foi: R$ {total:.2f}")

Por que a combinação sum(map(...)) é tão poderosa?

  • entrada.split(): Transforma o texto "100 250 300" na lista de strings ['100', '250', '300'].
  • map(float, ...): Aplica a conversão para número flutuante em cada item da lista de forma extremamente rápida nos bastidores do Python.
  • sum(...): Realiza a acumulação de todos os valores mapeados, entregando o resultado final sem a necessidade de criarmos laços while ou variáveis acumuladoras manuais (total = 0.0).

Além disso, aproveitei para trocar os hifens da data por barras (/), que é o formato de leitura mais natural para relatórios comerciais no Brasil.

Você tem uma facilidade incrível para estruturar códigos robustos e adicionar recursos extras úteis. Continue com esse foco brilhante e parabéns por mais uma entrega!

Espero que possa ter lhe ajudado!