Calculadora de NPS (Net Promoter Score)
- #Python
O que é NPS (Net Promoter Score)?
O Net Promoter Score (NPS) é uma métrica amplamente utilizada para medir a satisfação e lealdade dos clientes em relação a uma empresa, produto ou serviço. Ela é baseada em uma única pergunta: "Em uma escala de 0 a 10, o quanto você recomendaria nossa empresa/produto/serviço a um amigo ou colega?" Com base nas respostas, os clientes são classificados em três categorias: Promotores (notas 9-10), Passivos (notas 7-8) e Detratores (notas 0-6). O NPS é calculado subtraindo a porcentagem de detratores da porcentagem de promotores.
Propósito do Código:
O código é uma aplicação de desktop que permite aos usuários inserir respostas de clientes (notas de 0 a 10), calcular o Net Promoter Score (NPS) com base nessas respostas e salvar o resultado em um arquivo PDF. Ele oferece uma interface amigável para realizar essas tarefas.
Bibliotecas Necessárias:
tkinter
: É usada para criar a interface gráfica de usuário (GUI) da aplicação.messagebox
: Da biblioteca tkinter, utilizada para exibir mensagens de erro ou informações.filedialog
: Também da biblioteca tkinter, usado para abrir janelas de diálogo de seleção de arquivo para salvar o resultado em PDF.reportlab.lib.pagesizes
ereportlab.pdfgen.canvas
: Da biblioteca ReportLab, usadas para criar e gerar um arquivo PDF com o resultado do NPS.
Em resumo, o código cria uma aplicação que ajuda a calcular o NPS com base nas respostas dos clientes, exibe o resultado na GUI e permite ao usuário salvar esse resultado em um arquivo PDF. É uma aplicação útil para empresas que desejam medir a satisfação do cliente e documentar os resultados.
Observações:
Estou aberto às sugestões de melhorias para a calculadora e qualquer crítica construtiva, de como melhorar. A intenção com esse código era colocar em prática alguns conhecimentos adquiridos durante o bootcamp.
Código da Calculadora:
import tkinter as tk
from tkinter import messagebox, filedialog
from reportlab.lib.pagesizes import letter
from reportlab.pdfgen import canvas
nps = 0 # Defina nps como uma variável global com um valor inicial
def calcular_nps():
respostas = entrada_respostas.get()
try:
respostas = [int(x) for x in respostas.split()]
if not all(0 <= resposta <= 10 for resposta in respostas):
raise ValueError
except ValueError:
messagebox.showerror("Erro", "Insira respostas válidas (números inteiros de 0 a 10).")
return
promotores = sum(1 for resposta in respostas if resposta >= 9)
detratores = sum(1 for resposta in respostas if resposta <= 6)
total_respostas = len(respostas)
nps = (promotores - detratores) / total_respostas * 100
resultado_label.config(text=f"Net Promoter Score (NPS): {nps:.2f}%", font=("Arial", 24), fg="#EC7A25")
resultado_label.pack(pady=20)
# Salvar o resultado em um arquivo PDF
salvar_em_pdf(nps)
def salvar_em_pdf(nps):
nome_arquivo = filedialog.asksaveasfilename(defaultextension=".pdf", filetypes=[("PDF files", "*.pdf")])
if nome_arquivo:
c = canvas.Canvas(nome_arquivo, pagesize=letter)
c.drawString(100, 750, "Net Promoter Score (NPS) Resultado:")
c.drawString(100, 730, f"NPS: {nps:.2f}%")
c.save()
messagebox.showinfo("PDF Salvo", f"O resultado do NPS foi salvo em {nome_arquivo}")
# Configuração da janela principal
root = tk.Tk()
root.title("Calculadora de NPS")
root.geometry("{0}x{1}+0+0".format(root.winfo_screenwidth(), root.winfo_screenheight())) # Define para ocupar toda a tela
root.configure(bg="#B02050") # Define a cor de fundo da janela
# Descritivo sobre a aplicação
descricao_label = tk.Label(root, text="Calculadora de Net Promoter Score (NPS)\n\nO NPS é uma métrica que mede a satisfação dos clientes.\n"
"Insira as respostas dos clientes (de 0 a 10) e clique em 'Calcular NPS'.", bg="#B02050", fg="white", font=("Arial", 14))
descricao_label.pack(pady=20)
# Rótulo e entrada para as respostas dos clientes
entrada_respostas_label = tk.Label(root, text="Insira as respostas dos clientes (separadas por espaço):", bg="#B02050", fg="white", font=("Arial", 18))
entrada_respostas_label.pack(pady=20)
entrada_respostas = tk.Entry(root, font=("Arial", 18))
entrada_respostas.pack(pady=10)
# Botão para calcular o NPS
calcular_button = tk.Button(root, text="Calcular NPS", command=lambda: calcular_nps(), bg="#EC7A25", fg="white", font=("Arial", 18))
calcular_button.pack(pady=20)
# Rótulo para exibir o resultado do NPS
resultado_label = tk.Label(root, text="", bg="#B02050", fg="#EC7A25", font=("Arial", 24))
resultado_label.pack(pady=20)
# Botão para sair da janela do NPS
sair_button = tk.Button(root, text="Sair", command=root.quit, bg="#EC7A25", fg="white", font=("Arial", 18))
sair_button.pack(pady=20)
# Botão para salvar o resultado em um arquivo PDF
salvar_pdf_button = tk.Button(root, text="Salvar PDF", command=lambda: salvar_em_pdf(nps), bg="#EC7A25", fg="white", font=("Arial", 18))
salvar_pdf_button.pack(pady=20)
# Executa o loop principal da GUI
root.mainloop()