Probando ejercicio de hotel en Python
Hoy vamos a resolver un ejercicio de Python sobre calcular el precio que se cobra al cliente por su estancia en determinado hotel. Los datos se deben extraer de una cadena. El ejercicio dice algo así:
En el Hotel “ejemplo”, a los pasajeros que ingresan se les asigna un código que corresponde a un número con exactamente 16 cifras. El significado de estas cifras es el siguiente:
Se pide:
Escribe un código fuente en Python que reciba el código de un pasajero, y que imprima por pantalla la siguiente información:
Veamos ahora el ejercicio resuelto.
Sin más que agregar, dejo el código fuente de este ejercicio de análisis de cadenas en Python. Lo coloco aquí y lo explico más abajo:
"""
____ _____ _ _ _
| _ \ | __ \ (_) | | |
| |_) |_ _ | |__) |_ _ _ __ _____| |__ _ _| |_ ___
| _ <| | | | | ___/ _` | '__|_ / | '_ \| | | | __/ _ \
| |_) | |_| | | | | (_| | | / /| | |_) | |_| | || __/
|____/ \__, | |_| \__,_|_| /___|_|_.__/ \__, |\__\___|
__/ | __/ |
|___/ |___/
Blog: https://parzibyte.me/blog
Ayuda: https://parzibyte.me/blog/contrataciones-ayuda/
Contacto: https://parzibyte.me/blog/contacto/
Copyright (c) 2020 Luis Cabrera Benito
Licenciado bajo la licencia MIT
El texto de arriba debe ser incluido en cualquier redistribución
"""
PRECIO_POR_NOCHE = 70000
TIPO_ESTADIA_SOLO_DESAYUNO = "1"
TIPO_ESTADIA_TODO_INCLUIDO = "2"
def calcular(codigo):
fecha_ingreso = codigo[0:8]
anio = fecha_ingreso[0:4]
mes = fecha_ingreso[4:6]
dia = fecha_ingreso[6:8]
fecha_sin_anio = mes + dia
numero_noches = int(codigo[8:10])
habitacion = int(codigo[10:13])
servicios = codigo[13:14]
veces_alojado = int(codigo[14:])
precio_alojamiento = PRECIO_POR_NOCHE * numero_noches
aumento = 0
if habitacion % 2 == 0:
aumento += precio_alojamiento * 0.1
if servicios == TIPO_ESTADIA_TODO_INCLUIDO:
aumento += precio_alojamiento * 0.15
if ("1220" <= fecha_sin_anio <= "0305") or ("0910" <= fecha_sin_anio <= "0920"):
aumento += precio_alojamiento * 0.2
descuento = (precio_alojamiento * 0.03) * veces_alojado
total = precio_alojamiento - descuento + aumento
print(f"Fecha de ingreso: {dia}-{mes}-{anio}")
print(f"Tipo de estadía: {servicios}")
print(f"Tiempo de estadía: {numero_noches} días")
print(f"Número de habitación: {habitacion}")
print(f"Número de veces que ha alojado: {veces_alojado}")
print(f"Valor de estadía completa: ${total}")
def main():
codigo = input("Ingresa el código del pasajero: ")
calcular(codigo)
main()
Lo primero que hacemos es usar split para separar cadenas en Python; con eso podemos extraer una subcadena gracias a las operaciones para cortar listas.
Después simplemente hacemos matemáticas, aumentamos o restamos según sea el caso y las comparaciones.
Una cosa importante es el rango de fechas, pues debemos verificar si la fecha se encuentra entre un período u otro.
Para ello simplemente comparé las fechas como si de cadenas se tratara, pues afortunadamente las cadenas son comparadas lexicográficamente y a su vez cronológicamente.
Al final simplemente imprimo los resultados (con las f strings para evitar concatenar). Como puedes ver, todo está encerrado en una función que recibe el código que se debe analizar, mismo que se obtiene en la función main
del código fuente.
He colocado este ejercicio en línea. Puedes acceder en este enlace. Algunos códigos para probar pueden ser:
La salida es como se ve en la imagen:
¿Te gusta la programación con Python? en mi blog tengo varios tutoriales sobre ese lenguaje de programación.
El día de hoy vamos a ver cómo restablecer la impresora térmica GOOJPRT PT-210 a…
Hoy voy a enseñarte cómo imprimir en una impresora térmica conectada por USB a una…
En este post voy a enseñarte a programar un servidor web en Android asegurándonos de…
En este post te quiero compartir un código de C++ para listar y cancelar trabajos…
Gracias a WebAssembly podemos ejecutar código de otros lenguajes de programación desde el navegador web…
Revisando y buscando maneras de imprimir un PDF desde la línea de comandos me encontré…
Esta web usa cookies.