image

Bootcamps ilimitados + curso de inglês para sempre

80
%OFF
Article image
Vinicius Carvalho
Vinicius Carvalho05/10/2023 18:48
Compartilhe

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:

  1. tkinter: É usada para criar a interface gráfica de usuário (GUI) da aplicação.
  2. messagebox: Da biblioteca tkinter, utilizada para exibir mensagens de erro ou informações.
  3. filedialog: Também da biblioteca tkinter, usado para abrir janelas de diálogo de seleção de arquivo para salvar o resultado em PDF.
  4. reportlab.lib.pagesizes e reportlab.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()

Compartilhe
Recomendados para você
Suzano - Python Developer
BairesDev - Machine Learning Practitioner
Santander - Cibersegurança #2
Comentários (1)
Tiago Hilario
Tiago Hilario - 05/10/2023 19:24

Parabéns. Muito Legal