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!')