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

[Projeto] Calculando a gorjeta em um restaurante

import os

def gerar_gorjeta(porcentagem):
    def calcular_gorjeta(valor):
        return (valor * porcentagem)/100
    return calcular_gorjeta

def tratar_erro(mensagem):
    input(f"{mensagem} Aperte qualquer tecla para continuar ")
    main()

def validar_entradas():
    try:
        valor = float(input("Digite o valor da conta: "))
        porcentagem = float(input("Digite a porcentagem de gorjeta: "))
    except:
        tratar_erro("O valor informado não é um número válido.")
    else:
        mostrar_valores(valor, porcentagem)

def mostrar_valores(valor, porcentagem):
    calcula_gorjeta = gerar_gorjeta(porcentagem)
    gorjeta = calcula_gorjeta(valor)
    print(f"\nValor da gorjeta: R$ {gorjeta:.2f}")
    print(f"Total a pagar: R$ {(gorjeta + valor):.2f}")

def main():
    os.system("cls")
    validar_entradas() 

if __name__ == "__main__":
    main()
1 resposta
solução!

Oi, Christian! Como vai?

Você mandou bem no uso de funções aninhadas para gerar a gorjeta, deixando a logicar bem organizada e reutilizável, além da separação clara das responsabilidades entre validação e exibição dos valores. Uma dica interessante para o futuro e usar round para controlar o arredondamento e evitar pequenas variações de ponto flutuante, veja este exemplo:

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