Ejercicio if anidados II

Ejercicio — Clasificador de candidatos a un puesto de trabajo

Una empresa quiere automatizar el primer filtro de selección de personal. Tu tarea es escribir un programa que evalúe a un candidato y decida en qué categoría queda según tres criterios aplicados en orden.


Los datos del candidato

Declara estas cuatro variables al inicio del programa con los valores que quieras para probar:

  • nombre — nombre completo del candidato (texto)
  • años_experiencia — años de experiencia laboral (número entero)
  • nivel_ingles — nivel según el Marco Europeo: «A2», «B1», «B2», «C1»  (texto)
  • disponibilidad_inmediata — si puede incorporarse ya o no (booleano)

Las reglas de evaluación

El programa debe aplicar los criterios en este orden, de forma que si no se supera uno no se comprueba el siguiente:

Primer filtro — Experiencia. Si el candidato tiene 3 o más años de experiencia, pasa al siguiente filtro. Si tiene entre 1 y 2 años, queda descartado y el mensaje debe indicar cuántos años le faltan para volver a aplicar. Si tiene 0 años, queda descartado con un mensaje que le recomienda empezar por prácticas.

Segundo filtro — Nivel de inglés. Solo llegan aquí los candidatos que superaron el primer filtro. Si el nivel es C1  se considera avanzado y pasa al tercer filtro. Si el nivel es B2 se considera intermedio-alto y también pasa, pero con una nota de mejora. Si el nivel es B1 o inferior queda descartado por nivel insuficiente.

Tercer filtro — Disponibilidad. Solo llegan aquí los que superaron los dos filtros anteriores. Si tiene disponibilidad inmediata y nivel de inglés C1, TOP, si tiene B2 B. Si no la tiene y C1 A, si tiene B2 C


Las categorías posibles

Según el camino recorrido, el candidato debe quedar en una de estas categorías:

  • Candidato TOP — experiencia suficiente, inglés avanzado y disponibilidad inmediata
  • Candidato A — experiencia suficiente, inglés avanzado pero sin disponibilidad inmediata
  • Candidato B — experiencia suficiente, inglés intermedio-alto y disponibilidad inmediata
  • Candidato C — experiencia suficiente, inglés intermedio-alto pero sin disponibilidad inmediata
  • Candidato descartado — no supera el filtro de experiencia o de idioma

El formato de salida

El programa debe imprimir por pantalla una ficha con este aspecto (los valores cambiarán según los datos):

EVALUACIÓN DE CANDIDATO: [nombre]
========================================
Experiencia: APTA  /  NO APTA
Inglés: AVANZADO  /  INTERMEDIO-ALTO  /  INSUFICIENTE
----------------------------------------
Categoría: [categoría asignada]
Decisión:  [mensaje explicativo]

La línea de inglés solo debe aparecer si el candidato superó el filtro de experiencia.


Prueba tu solución con estos cuatro casos

Una vez escrito el programa, cambia los valores de las variables y comprueba que obtienes el resultado correcto en cada caso:

Caso años_experiencia nivel_ingles disponibilidad_inmediata Categoría esperada
1 5 C1 True Candidato TOP
2 4 B2 False Candidato C
3 2 C1 True Descartado
4 0 B1 True Descartado
# Una empresa quiere automatizar el primer filtro de selección de personal.
# Tu tarea es escribir un programa que evalúe a un candidato y decida en qué categoría
# queda según tres criterios aplicados en orden.

# Candidato TOP — experiencia suficiente, inglés avanzado y disponibilidad inmediata
# Candidato A — experiencia suficiente, inglés avanzado pero sin disponibilidad inmediata
# Candidato B — experiencia suficiente, inglés intermedio-alto y disponibilidad inmediata
# Candidato C — experiencia suficiente, inglés intermedio-alto pero sin disponibilidad inmediata
# Candidato descartado — no supera el filtro de experiencia o de idioma

# EVALUACIÓN DE CANDIDATO: [nombre]
# ========================================
# Experiencia: APTA  /  NO APTA
# Inglés: AVANZADO  /  INTERMEDIO-ALTO  /  INSUFICIENTE
# ----------------------------------------
# Categoría: [categoría asignada]
# Decisión:  [mensaje explicativo]

# inicializo las variables
nombre = "Jotapé"
anos_experiencia =5
nivel_ingles="C1"
disponibilidad_inmediata = True

# Imprimo la cabecera
print("EVALUACIÓN DE CANDIDATO: ",nombre)
print("="*40)

# El primer filtro es la experiencia
if anos_experiencia<3:
    # Si tiene menos de 3 años de experiencia no es apto
    print("Experiencia: NO APTA")
    # Comprobamos si tiene 0 o más años
    if anos_experiencia==0:
        # Si no tiene ninguna experiencia lo mandamos a prácticas
        print("Decisión: Te recomendamos empezar por prácticas")
    else:
        # Si tiene experiencia le decimos que vuelva cuando tenga 3 años
        # Lo calculamos restando 3 menos sus años de experiencia
        print(f"Decisión: Aplica en {3-anos_experiencia} años")
else:
    # Si tiene más de 3 años de experiencia seguimos con los siguientes filtros
    print("Experiencia: APTA")
    # Comprobamos el nivel de inglés
    if nivel_ingles=="C1":
        # Si el nivel de inglés es C1 ponemos avanzado y comprobamos la disponibilidad para
        # teerminar de afinar laa categoría
        print("Inglés: AVANZADO")
        # como disponibilidad_inmediata es booleana no hace falta que lo igualemos a True
        if disponibilidad_inmediata:
            print("Categoría: TOP")
        else:
            print("Categoría: A")
        print("Decisión: Aceptado")
    else:
        if nivel_ingles=="B2":
            print("Inglés: INTERMEDIO-ALTO")
            if disponibilidad_inmediata:
                print("Categoría: B")
            else:
                print("Categoría: C")
            print("Decisión: Aceptado")
        else:
            print("Inglés: INSUFICIENTE")
            print("Decición: No admitido por nivel de inglés")

Publicado por

Juan Pablo Fuentes

Formador de programación y bases de datos