Geekflare recibe el apoyo de nuestra audiencia. Podemos ganar comisiones de afiliación de los enlaces de compra en este sitio.
En Desarrollo Última actualización: 24 de septiembre de 2023
Compartir en:
Escáner de seguridad de aplicaciones web Invicti - la única solución que ofrece verificación automática de vulnerabilidades con Proof-Based Scanning™.

Vamos a aprender a crear una calculadora Tip and Split en Python.

Es un gran proyecto personal que puede crear para practicar sus conocimientos de Python. Además, este tutorial le enseñará a crear la aplicación de dos maneras, primero como una herramienta de línea de comandos y segundo como una herramienta GUI.

Vista previa

Vamos a construir la aplicación de dos maneras. En primer lugar, construiremos un sencillo script de shell en Python que solicite la entrada al usuario y escriba la salida.

Screenshot-from-2023-01-05-19-30-39

En segundo lugar, dotaremos al programa de una interfaz gráfica de usuario utilizando Tkinter.

Screenshot-from-2023-01-05-15-11-29

Especificación del programa

El programa recibe tres entradas:

  • El importe de la cuenta
  • El porcentaje de propina
  • El número de personas que comparten la cuenta

Utilizando estas entradas, el programa calculará la siguiente salida:

  • La contribución de cada persona a la cuenta
  • La contribución de cada persona a la propina
  • La contribución total de cada persona

Algoritmo

Para conseguirlo, la calculadora de propinas y dividendos seguirá un algoritmo muy sencillo que se describe a continuación:

  1. Reciba las entradas: importe_de_la_factura, porcentaje_de_la_propina, número_de_personas
  2. Calcule el importe de la propina multiplicando el importe_de_factura * porcentaje_de_propina / 100
  3. Divida el importe_de_la_factura por el número_de_personas para obtener la contribución de cada persona a la factura.
  4. Divida el importe_de_la_propina entre el número_de_personas para obtener la contribución de cada persona a la propina.
  5. Por último, sume las contribuciones a la cuenta y a la propina para obtener el importe total a pagar.

Requisitos previos

Para seguir este tutorial, debe conocer y comprender el lenguaje de programación Python. Para este tutorial, es necesario conocer los conceptos básicos, incluidas las funciones y las clases.

Además, debe tener Python instalado en su sistema. Si no es así, diríjase al sitio web de Python y descárguelo. Alternativamente, Geekflare tiene un compilador de Python en línea donde puede ejecutar su código Python en el navegador sin ninguna configuración del entorno.

Construir la calculadora con una interfaz de línea de comandos

Cree una carpeta de proyecto

Para empezar, navegue a una carpeta vacía en su sistema. En mi caso, estoy usando Ubuntu 22.04, así que para crear una carpeta y navegar a ella usando la terminal; necesito introducir el siguiente comando:

mkdir tip-calculator && cd tip-calculator

Crear el archivo Python

A continuación, cree el archivo script donde escribiremos el script Python. En mi caso, utilizaré el comando touch para hacerlo:

touch main.py

Abra el archivo de script con su editor de código favorito

Para comenzar a escribir el código del script, abra el archivo con su editor de código favorito. Voy a utilizar nano que es un editor de texto basado en terminal.

nano main.py

Recibir la Entrada

Con esto hecho, podemos añadir las siguientes líneas de código a la parte superior del archivo:

# Recibir la entrada para el importe de la factura como un número de coma flotante
bill_amount = float(input("Importe de la factura: ")) 

# Recibir la entrada para el porcentaje de propina como un número de coma flotante
tip_percentage = float(input("Porcentaje de propina: "))

# Recibir la entrada para el número de personas como un número entero
number_of_people = int(input("Número de personas: "))

Básicamente, esto recibe la entrada y convierte el tipo de datos de cada entrada de una cadena al tipo más apropiado.

Calcular el importe de la propina

A continuación, calculamos el importe de la propina multiplicando el porcentaje de propina por el importe de la cuenta.

importe_propina = importe_factura * porcentaje_propina / 100

Divida la cuenta y la propina para obtener la contribución de cada persona a las dos

# Calcular la contribución de cada persona a la cuenta
contribución_factura = importe_factura / número_de_personas

# Calcular la contribución de cada persona a la propina
contribución_propina = importe_propina / número_de_personas

Calcular la contribución total

A continuación, sume las contribuciones individuales para determinar la contribución total por persona.

contribución_total = contribución_factura contribución_propina

Mostrar los resultados

Por último, muestre los resultados al usuario.

# Displayinnng the results
print("Bill contribution per person: ", bill_contribution)
print("Tip contribution per person: ", tip_contribution)
print("Total contribution per person: ", total_contribution)

Prueba de la calculadora de propinas y contribuciones

Finalmente, su archivo de script debería tener el siguiente aspecto:

# Recibiendo la entrada para el importe de la factura como un número de coma flotante
bill_amount = float(input("Importe de la factura: ")) 

# Recibir la entrada para el porcentaje de propina como un número de punto flotante
tip_percentage = float(input("Porcentaje de propina: "))

# Recibir la entrada para el número de personas como un número entero
number_of_people = int(input("Número de personas: "))

tip_amount = bill_amount * tip_percentage / 100

# Calcular la contribución a la cuenta de cada persona
bill_contribution = bill_amount / number_of_people

# Calcular la contribución a la propina de cada persona
tip_contribution = tip_amount / number_of_people

total_contribution = bill_contribution tip_contribution

# Mostrar los resultados
print("Contribución a la cuenta por persona: ", factura_contribución)
print("Contribución de propina por persona: ", propina_contribución)
print("Contribución total por persona: ", total_contribución)

Llegados a este punto, siéntase libre de probar su aplicación utilizando el siguiente comando:

python3 main.py
Screenshot-from-2023-01-05-19-32-16

Construir la calculadora de propinas y repartos con GUI

En la siguiente parte de este tutorial, implementaremos la misma aplicación pero con una interfaz gráfica de usuario. Para construir la GUI, utilizaremos un paquete llamado Tkinter.

Configuración

Tkinter es un paquete integrado en la Biblioteca Estándar de Python. Esto significa que fue instalado por defecto cuando usted instaló Python.

Sin embargo, en máquinas Linux con Python instalado por defecto, TKinter no está preinstalado para ahorrar espacio. Por lo tanto, necesita instalarlo manualmente usando el siguiente comando:

sudo apt-get install python3-tk

Cree un archivo de proyecto

Para empezar, cree un archivo donde se almacenará el script de Python. Después de crear el archivo, ábralo con su editor de texto preferido.

toque gui.py

Importar Tkinter

A continuación, importe el paquete Tkinter añadiendo la siguiente línea en la parte superior del archivo.

import tkinter from tk

Cree la interfaz de usuario

A continuación, podemos empezar a crear la interfaz de usuario.

# Creación de la ventana
window = tk.Tk()

# Creación del título de la ventana
tk.Label(text="Calculadora de propinas y dividendos").pack()

# Creación de un campo de entrada
tk.Label(text="Introduzca el importe de la cuenta").pack()
ent_bill = tk.Entry(width=40)
ent_bill.pack()

# Creación y entrada para el porcentaje de la propina
tk.Label(text="Introduzca el porcentaje de propina").pack()
ent_tip = tk.Entry(width=40)
ent_tip.pack()

# Crear una entrada para el número de personas
tk.Label(text="Introduzca el número de personas").pack()
ent_people = tk.Entry(width=40)
ent_people.pack()

# Crear el botón Intro
btn_enter = tk.Button(text="Intro")

El código anterior ha creado una ventana que contiene todos los widgets de la interfaz de usuario. Además, creó una etiqueta que servirá como título de la ventana.

A continuación, creó etiquetas y campos de entrada para las tres entradas: importe_factura, porcentaje_propina y número_de_personas. Por último, creó un botón que el usuario pulsará para ejecutar el cálculo.

Cree una función para calcular las salidas

Después de esto, podemos crear una función para manejar el clic del botón Intro. Esta función tomará los valores de los campos de entrada y los utilizará para calcular las salidas utilizando el algoritmo mencionado anteriormente. Por último, creará una etiqueta para mostrar la salida y actualizará la ventana.

def handle_click(evento):
   # Recoge las entradas de los campos de entrada utilizando el método get
 # También tipifica las entradas a partir del tipo de datos string por defecto
 bill_amount = float(ent_bill.get())
 tip_percentage = float(ent_tip.get())
 number_of_people = int(ent_people.get())
    
 # Calcular el importe a pagar en concepto de propina
 importe_propina = importe_factura * porcentaje_propina / 100
    
 # Calcular la contribución a la factura de cada persona en la mesa
 contribución_factura = importe_factura / número_de_personas 

 # Calcular la contribución a la propina de cada persona en la mesa
 tip_contribution = tip_amount / number_of_people

 # Calcular la contribución total de cada persona
 total_contribution = bill_contribution tip_contribution

 # Crear la cadena de salida
 output = f'Factura por persona: {factura_contribución} \n Propina por persona: {contribución_propina} \n Total por persona: {contribución_total}'
    
 # Creación de una etiqueta para el texto de salida
 tk.Label(text=output).pack()

 # Actualización de la ventana para reflejar los cambios en la interfaz de usuario
 window.update()

El código de la función anterior se ha explicado mediante comentarios que explican cada paso principal.

Vinculación del manejador de eventos al botón

A continuación, vinculamos el manejador de eventos al evento de clic del botón. El evento de clic de botón en Tkinter está representado por la cadena<Button-1>. Para vincular el evento al manejador de eventos, utilizamos el método bind del botón. Añada esta línea de código debajo de la definición de la función:

btn_enter.bind('<Botón-1>', handle_click)
btn_enter.pack()

Por último, para mantener la ventana en funcionamiento, llamamos al método mainloop del objeto ventana.

window.mainloop()

¡Y ya hemos terminado!

Probando la calculadora de propinas y divisiones

Puede ejecutar la aplicación utilizando el siguiente comando:

python3 gui.py

Esto debería abrir la ventana como se muestra a continuación:

Screenshot-from-2023-01-05-20-27-26

Puede ejecutar la calculadora con una entrada de ejemplo:

Screenshot-from-2023-01-05-20-29-09

Palabras finales

En este tutorial, hemos creado una calculadora de propinas y dividendos de dos formas. La primera utiliza una herramienta CLI basada en terminal. La segunda es una herramienta GUI utilizando Tkinter de Python. Este tutorial muestra cómo construir un proyecto sencillo en Python. Si necesita refrescar o pulir sus conocimientos de Python, aquí tiene un curso de Datacamp.

A continuación, puede consultar cómo crear un generador de contraseñas aleatorias en Python.

  • Anesu Kafesu
    Autor
    Desarrollador web full stack y redactor técnico. Actualmente aprendiendo IA.
Gracias a nuestros patrocinadores
Más lecturas sobre desarrollo
Potencia tu negocio
Algunas de las herramientas y servicios que le ayudarán a hacer crecer su negocio.
  • Invicti utiliza el Proof-Based Scanning™ para verificar automáticamente las vulnerabilidades identificadas y generar resultados procesables en tan solo unas horas.
    Pruebe Invicti
  • Web scraping, proxy residencial, gestor de proxy, desbloqueador web, rastreador de motores de búsqueda, y todo lo que necesita para recopilar datos web.
    Pruebe Brightdata
  • Monday.com es un sistema operativo de trabajo todo en uno que te ayuda a gestionar proyectos, tareas, trabajo, ventas, CRM, operaciones, flujos de trabajo y mucho más.
    Prueba Monday
  • Intruder es un escáner de vulnerabilidades en línea que encuentra puntos débiles de ciberseguridad en su infraestructura, para evitar costosas violaciones de datos.
    Prueba Intruder