Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

[Projeto] Calculando a gorjeta de um restaurante

Segue sugestão de código.

O ideal ainda era substituir float por uma tipagem própria para valores financeiros, mas acabei mantendo nesse projeto pela simplicidade.

import os

def calc_gorjeta(vlr,perc):
    gorjeta = round((vlr * (perc/100)),2)
    return gorjeta

def total_compra (vlr, gorjeta):
    totalCompra = round(vlr + gorjeta,2)
    return totalCompra

try:
    os.system('cls') #limpar terminal
    vlrCompra = float(input('Digite o valor da compra: ').replace(",","."))
    percGorgeta = float(input('Digite o percentual de gorjeta: ').replace("%",""))

    gorjeta = calc_gorjeta(vlrCompra,percGorgeta)
    novoTotal = total_compra(vlrCompra,gorjeta)

    print(f'Valor da Gorjeta: R$ {gorjeta}'.replace(".",","))
    print(f'Total a pagar: R$ {novoTotal}'.replace(".",","))
    

except ValueError:
    print('Operação cancelada, digite somente números!')
1 resposta
solução!

Olá, Kelvin! Como vai?

Parabéns pela resolução da atividade!

Observei que você explorou a função para organizar os cálculos com Python, utilizou muito bem o round para controlar a precisão dos valores e ainda compreendeu a importância da tratativa de exceção para evitar erros de entrada.

Uma dica interessante para o futuro é trabalhar com o módulo decimal, que é mais indicado para cálculos financeiros. Assim:

from decimal import Decimal, ROUND_HALF_UP

def calc_gorjeta(vlr, perc):
    vlr = Decimal(str(vlr))
    perc = Decimal(str(perc))
    gorjeta = (vlr * (perc / Decimal("100"))).quantize(Decimal("0.01"), rounding=ROUND_HALF_UP)
    return gorjeta

def total_compra(vlr, gorjeta):
    total = (vlr + gorjeta).quantize(Decimal("0.01"), rounding=ROUND_HALF_UP)
    return total

vlrCompra = Decimal(input('Digite o valor da compra: ').replace(",", "."))
percGorgeta = Decimal(input('Digite o percentual de gorjeta: ').replace("%", ""))

gorjeta = calc_gorjeta(vlrCompra, percGorgeta)
novoTotal = total_compra(vlrCompra, gorjeta)

print(f'Valor da Gorjeta: R$ {gorjeta}'.replace(".", ","))
print(f'Total a pagar: R$ {novoTotal}'.replace(".", ","))

Isso faz os cálculos com maior precisão e evita problemas comuns do float em operações financeiras.

Conteúdos relacionados

Alguns materiais podem estar 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!