Semana 8 - Python - EJERCICIOS

Práctica de Condicionales en Python
Python Challenge

🚀 ¡Desafío de Condicionales! 🚀

Pon a prueba tus habilidades con `if`, `elif` y `match` en Python

¡Es hora de practicar! Has aprendido las herramientas para que tu código tome decisiones. Ahora, enfrenta estas misiones para convertirte en un maestro de los condicionales. ¡Intenta resolver cada desafío por tu cuenta antes de ver la solución!

Misión 1: 🧑‍ Clasificador de Generaciones

Crea una función llamada clasificar_edad(edad) que reciba un número (la edad de una persona) y devuelva un string indicando a qué generación pertenece, según estas reglas:

  • Si la edad es de 0 a 12: "Niñez"
  • Si la edad es de 13 a 19: "Adolescencia"
  • Si la edad es de 20 a 59: "Adultez"
  • Si la edad es 60 o más: "Adultez mayor"

Pista: ¡Esta misión es perfecta para usar if-elif-else!

Solución con `if-elif-else`

def clasificar_edad(edad):
    # Primero, verificamos la condición más baja.
    if edad <= 12:
        return "Niñez"
    
    # Si la primera no fue cierta, probamos con la siguiente.
    elif edad <= 19:
        return "Adolescencia"
        
    # Y así sucesivamente...
    elif edad <= 59:
        return "Adultez"
        
    # Si ninguna de las anteriores fue verdadera, esta es la única opción que queda.
    else:
        return "Adultez mayor"

# --- Probando la función ---
print(f"10 años: {clasificar_edad(10)}")  # Esperado: Niñez
print(f"17 años: {clasificar_edad(17)}")  # Esperado: Adolescencia
print(f"35 años: {clasificar_edad(35)}")  # Esperado: Adultez
print(f"70 años: {clasificar_edad(70)}")  # Esperado: Adultez mayor

Misión 2: 🤖 Asistente de Robot de Pizzas

Estás programando un robot que toma pedidos de pizza. Crea una función obtener_ingredientes(pizza) que reciba el nombre de una pizza (un string) y devuelva sus ingredientes principales. Usa match-case para resolverlo.

  • Si la pizza es "Margarita": "Tomate, Mozzarella, Albahaca"
  • Si la pizza es "Pepperoni": "Tomate, Mozzarella, Pepperoni"
  • Si la pizza es "Hawaiana": "Tomate, Mozzarella, Jamón, Piña"
  • Para cualquier otra pizza: "Lo siento, no tenemos esa pizza en el menú."

Solución con `match-case`

def obtener_ingredientes(pizza):
    # Usamos 'match' en la variable que queremos comparar.
    match pizza:
        # Cada 'case' es una de las opciones exactas.
        case "Margarita":
            return "Tomate, Mozzarella, Albahaca"
        case "Pepperoni":
            return "Tomate, Mozzarella, Pepperoni"
        case "Hawaiana":
            return "Tomate, Mozzarella, Jamón, Piña"
        # El case '_' es el comodín para cualquier otra cosa.
        case _:
            return "Lo siento, no tenemos esa pizza en el menú."

# --- Probando la función ---
print(f"Margarita: {obtener_ingredientes('Margarita')}")
print(f"Cuatro Quesos: {obtener_ingredientes('Cuatro Quesos')}")

Misión 3: 🎯 Acceso a la Bóveda Secreta

Crea una función verificar_acceso(usuario, nivel_seguridad). El acceso a la bóveda solo se concede si el usuario es "admin" Y su nivel de seguridad es mayor que 5. Si el usuario es "admin" pero su nivel no es suficiente, debe avisar. Si el usuario no es "admin", se le debe denegar el acceso directamente.

  • Si usuario es "admin" Y nivel > 5: "Acceso concedido"
  • Si usuario es "admin" Y nivel <= 5: "Nivel de seguridad insuficiente"
  • Si el usuario no es "admin": "Acceso denegado"

Pista: ¡Aquí necesitarás un if dentro de otro if (anidado)!

Solución con `if` anidados

def verificar_acceso(usuario, nivel_seguridad):
    # Primero, verificamos la condición principal: ¿es el usuario un admin?
    if usuario == "admin":
        # Si SÍ es admin, AHORA verificamos la segunda condición.
        if nivel_seguridad > 5:
            return "Acceso concedido"
        else:
            return "Nivel de seguridad insuficiente"
    # Si NO es admin, denegamos el acceso directamente.
    else:
        return "Acceso denegado"

# --- Probando la función ---
print(f"Admin con nivel 7: {verificar_acceso('admin', 7)}")     # Esperado: Acceso concedido
print(f"Admin con nivel 3: {verificar_acceso('admin', 3)}")     # Esperado: Nivel de seguridad insuficiente
print(f"Invitado con nivel 10: {verificar_acceso('invitado', 10)}") # Esperado: Acceso denegado
Versión alternativa: ¡También podrías resolver esto con if-elif y el operador and, sin anidar! A veces hay más de un camino correcto.
def verificar_acceso_alternativo(usuario, nivel_seguridad):
    if usuario == "admin" and nivel_seguridad > 5:
        return "Acceso concedido"
    elif usuario == "admin":
        return "Nivel de seguridad insuficiente"
    else:
        return "Acceso denegado"

Misión 4: ☀️ Recomendador de Actividades

Crea una función recomendar_actividad(clima, es_fin_de_semana). La variable clima será un string ("soleado", "lluvioso" o "nublado") y es_fin_de_semana será un booleano (True o False).

  • Si está "soleado": Recomendar "Ir a la playa".
  • Si está "lluvioso": Recomendar "Ver una película".
  • Si está "nublado" y es fin de semana (True): Recomendar "Hacer una caminata".
  • Si está "nublado" y no es fin de semana (False): Recomendar "Leer un libro".

Pista: ¡Esta es una gran oportunidad para combinar lo que has aprendido!

Solución combinando `if-elif` y `if` anidado

def recomendar_actividad(clima, es_fin_de_semana):
    if clima == "soleado":
        return "Ir a la playa"
    elif clima == "lluvioso":
        return "Ver una película"
    elif clima == "nublado":
        # Aquí, dentro del caso "nublado", necesitamos otra decisión.
        if es_fin_de_semana:
            return "Hacer una caminata"
        else:
            return "Leer un libro"
    else:
        return "Clima no reconocido. Mejor quédate en casa."

# --- Probando la función ---
print(f"Soleado: {recomendar_actividad('soleado', True)}")
print(f"Lluvioso: {recomendar_actividad('lluvioso', False)}")
print(f"Nublado en fin de semana: {recomendar_actividad('nublado', True)}")
print(f"Nublado en día de semana: {recomendar_actividad('nublado', False)}")

¡Felicitaciones por completar los desafíos!

La práctica constante es la clave para dominar la programación. ¡Sigue así!

Entradas populares de este blog