Fundamentos de Programación

Ejercicios Unidad 02

EJERCICIO 1

María es la dueña de una pequeña tienda de ropa, y para atraer más clientes en el fin de semana, ha decidido poner en oferta una de las secciones más populares del local. Como tiene que mandar a hacer la publicidad para la tienda y no debe haber errores, quiere hacer uso de un programa que le permita ingresar el precio original y el porcentaje de descuento para calcular rápidamente el precio final de venta y así mandar a realizar todo sin ningún contratiempo.

RESOLUCIÓN

# Pedimos al usuario que ingrese el precio y el descuento del artículo.
precio = input("Introduce el precio original del producto: ")
descuento = input("Introduce el porcentaje de descuento a aplicar: ")
# Calculamos cuánto dinero se va a rebajar y cuál es el costo final, sin olvidarnos de convertir los valores del input (str) a números (float).
monto_descuento = float(precio) * (float(descuento) / 100)
precio_final = float(precio) - monto_descuento
# Usamos un f-string para presentar la información de forma clara.
print(f"Precio Original: ${precio}")
print(f"Descuento Aplicado ({descuento}%): -${monto_descuento}")
print(f"Precio Final: ${precio_final}")

EJERCICIO 2

Cuatro amigos están planeando hacer un viaje por carretera, y quieren crear una playlist donde cada uno va a sugerir como máximo tres de sus temas favoritos. Para ello necesitan un programa que recoja las canciones de cada uno (separadas por comas sin espacios) y las combine en una sola lista. Finalmente, el programa tendrá que mostrar la playlist ordenada alfabéticamente y cuántas canciones hay en total.

RESOLUCIÓN

# Pedimos a cada amigo su lista de canciones.
canciones1 = input("Ingresa tus 3 canciones: ")
canciones2 = input("Ingresa tus 3 canciones: ")
canciones3 = input("Ingresa tus 3 canciones: ")
canciones4 = input("Ingresa tus 3 canciones: ")
# Usamos .split(“,”) para convertir cada string en una lista de canciones.
lista1 = canciones1.split(“,”)
lista2 = canciones2.split(“,”)
lista3 = canciones3.split(“,”)
lista4 = canciones4.split(“,”)
# Unimos las 4 listas en una sola lista.
playlist = lista1 + lista2 + lista3 + lista4
# Se crea y muestra la versión ordenada alfabéticamente mediante la función sorted().
playlist_ordenada = sorted(playlist)
# Usamos "\n".join() para mostrar cada canción en una nueva línea.
print("\n".join(playlist_ordenada))
# Se muestra el total de las canciones en la playlist.
print(f"La playlist tiene un total de {len(playlist)} canciones.")

EJERCICIO 3

El profesor Darwin quiere organizar un partido de fútbol con los 18 estudiantes de su clase de Educación Física. Para que el encuentro sea equitativo y justo, necesita de un programa que, a partir de su lista de asistencia ordenada alfabéticamente, divida a la clase en dos equipos de forma aleatoria.

RESOLUCIÓN

# Importamos el módulo random usando import (solo o con el alias rd).
import random
lista_clase = ['Alvarez, Sofia', 'Benitez, Daniel', 'Castillo, Inés', 'Delgado, Beatriz', 'García, Ana', 'García, Luis', 'Gómez, Fernando', 'Herrera, Raquel', 'Jiménez, Hugo', 'López, Carlos', 'Martínez, Elena', 'Molina, Javier', 'Ortega, Simón', 'Pérez, Karla', 'Pérez, Marta', 'Ramírez, Nicolás', 'Rojas, Gabriela', 'Soto, Pedro']
# Recomiendo hacer una copia de la lista para no alterar la original.
estudiantes = lista_clase
# Mezclamos la lista.
random.shuffle(estudiantes)
# Calculamos el tamaño de cada equipo (la mitad de la clase).
tamano_equipo = len(lista_clase) // 2
# Usamos slicing para dividir la lista barajada en dos equipos.
equipo1 = estudiantes[:tamano_equipo]
equipo2 = estudiantes [tamano_equipo:]
# Mostramos los integrantes de cada equipo y usamos "\n".join() para mostrar a cada integrante en una nueva línea.
print("\nEquipo 1:")
print("\n".join(equipo1))
print("\nEquipo 2:")
print("\n".join(equipo2))

EJERCICIO 4

Lucía trabaja como jefe de bodega de una librería y necesita una forma rápida de verificar cuántas copias de un libro específico hay en el inventario. Sus empleados le entregan una cadena de registro que contiene todos los títulos de los libros separados por guiones, y como a veces hay varias copias del mismo libro, hay títulos que se encuentran repetidos. Por ello necesita un programa que, a partir de esa lista, pueda decirle el total de libros contabilizados y la cantidad exacta de unidades que hay del libro específico que se ingrese.

RESOLUCIÓN

inventario = "Don Quijote-La Sombra del Viento-Cien Años de Soledad-Rayuela-El Señor de los Anillos-1984-Don Quijote-Un Mundo Feliz-El Principito-Fahrenheit 451-Crónica de una Muerte Anunciada-La Sombra del Viento-El Alquimista-Don Quijote-El Código Da Vinci-Matar a un Ruiseñor-El Gran Gatsby-Cien Años de Soledad-Orgullo y Prejuicio-El Hobbit-La Metamorfosis-Drácula-Frankenstein-El Retrato de Dorian Gray-1984"
# Convertimos el string en una lista usando el guion como separador y la normalizamos.
l_inventario = inventario.lower().split('-')
# Mostramos cuando libros hay en el inventario.
print(f"Se han contabilizado {len(l_inventario)} libros en el inventario.")
# Pedimos al usuario el libro que quiere buscar.
libro = input("¿Qué libro quieres buscar?: ")
# Normalizamos la entrada del usuario usando .strip() y .lower().
libro_n = libro.strip().lower()
# Usamos el método .count() para contar las ocurrencias en la lista.
cantidad = l_inventario.count(libro_n)
# Mostramos la cantidad de copias que hay del libro ingresado.
print(f"\nHay {cantidad} copias de {libro_n.title()} en el inventario.")

EJERCICIO 5

Una cadena de hoteles en Ecuador necesita generar un código de reserva único para cada cliente. Para ello requieren de un programa que reciba el nombre y apellido del cliente (Ej: Manuel Carrillo) y la provincia donde está el hotel de la reservación (Ej: Pichincha), para así crear un código completamente en mayúsculas y que esté formado por cuatro secciones separadas por guiones:

  • una sección aleatoria de 3 letras del apellido del cliente (ril)
  • una sección aleatoria de 3 letras del nombre del cliente invertido (eun)
  • la primera sección de 3 letras de la provincia del hotel (PIC)
  • un número aleatorio de 4 cifras (2039)

EJEMPLO DE CÓDIGO FINAL: RIL-EUN-PIC-2039

RESOLUCIÓN

# Importamos el módulo random usando import (solo o con el alias rd).
import random
# Pedimos el nombre completo y la provincia al usuario.
nombre_completo = input("Ingrese el nombre y apellido del cliente: ").strip()
provincia = input("Ingrese la provincia del hotel: ").strip()
# Dividimos el nombre completo en una lista de palabras.
nombre, apellido = nombre_completo.split()
# Calculamos el rango válido para el inicio de la sección aleatoria.
max _apellido = max(0, len(apellido) - 3)
inicio_apellido = random.randint(0, max_apellido)
seccion_apellido = apellido[inicio_apellido : inicio_apellido + 3]
# Invertimos el nombre usando slicing [::-1].
nombre_invertido = nombre[::-1]
# Calculamos el rango válido para la sección aleatoria del nombre invertido.
max_nombre = max(0, len(nombre_invertido) - 3)
inicio_nombre = random.randint(0, max_nombre)
seccion_nombre = nombre_invertido[inicio_nombre : inicio_nombre + 3]
# Tomamos las tres primeras letras de la provincia.
seccion_provincia = provincia[:3]
# Generamos un número de 4 cifras (entre 1000 y 9999).
numero_aleatorio = random.randint(1000, 9999)
# Unimos y mostramos todas las partes, convirtiéndolas a mayúsculas y separándolas con guiones.
codigo_final = f"{seccion_apellido.upper()}-{seccion_nombre.upper()}-{seccion_provincia.upper()}-{numero_aleatorio}"
print(f"Código de cliente: {codigo_final}")