edad=25
socio=True
bien_vestido=True
# Para entrar en el club tienes que tener más de 18 años y ser socio
if edad>=18 and socio and bien_vestido:
print("Puedes entrar")
else:
print("Lo siento, no tienes permitida la entrada")
if edad<18:
print("Lo siento, no tienes permitida la entrada")
elif not socio:
print("Lo siento, no tienes permitida la entrada")
elif not bien_vestido:
print("Lo siento, no tienes permitida la entrada")
else:
print("Puedes entrar")
dia_semana="lunes"
if dia_semana=="sabado" or dia_semana=="domingo":
print("Fin de semana")
else:
print("Día laborable")
departamento="marketing"
directivo=False
# Hay un requerimiento para los que sean de marketing y no sean directivos
if departamento=="marketing" and not directivo:
print("Te envío mail")
# ¿Voy a la casa de la playa? Si es fin de semana y no están mis padres
dia_semana="sabado"
estan_padres=False
if (dia_semana=="sabado" or dia_semana=="domingo") and not estan_padres:
print("¡P'a la casa de la playa!!!")
else:
print("Me quedo aburriéndome")
Autor: Juan Pablo Fuentes
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")
Ejercicio bucles anidados
Tenemos una empresa de autocares y queremos saber si un conductor puede o no conducir
Si lleva más de 5 horas trabajando ese día, no puede
Si tiene menos, se tienen en cuenta dos cosas
Si lleva trabajados más de 56 horas en la semana, tampoco puede conducir
Si tiene menos de 56 horas, si lleva más de 3 días seguidos trabajando, tampoco puede conducir
Variables:
horas_hoy
horas_semana
dias_consecutivos
Resultado:
«Puede conducir» / «NO puede conducir»
Python bucles anidados
# Promoción para clientes:
# Si tienen una antigüedad de más de 5 años
# Si son de Barcelona un 5% de descuento y si no un 2%
# Si no tienen esa antigüedad, si son de Barcelona un 3% de descuento
antiguedad=3
ciudad="Barcelona"
descuento=0
if antiguedad>=5:
print("El cliente es antiguo")
if ciudad=="Barcelona":
print("El cliente es de Barcelona")
descuento=.05
else:
print("El cliente NO es de Barcelona")
descuento=.02
else:
print("El cliente NO es antiguo")
if ciudad=="Barcelona":
print("El cliente es de Barcelona")
descuento=.03
print(f"El descuento es {descuento:.0%}")
Ejemplos condicionales
nota=5
if nota>9:
print("sobresaliente")
else:
if nota>7:
print("notable")
else:
if nota>5:
print("aprobado")
else:
print("suspenso")
if nota>9:
print("sobresaliente")
elif nota>7:
print("notable")
elif nota>=5:
print("aprobado")
else:
print("suspenso")
# El coste de envío para paquetes es el siguiente:
# Hasta 10 kg: 10 €
# de 10 a 20: 20 €
# de 20 a 40: 25 €
# Más de 40: 30 €
peso=30
if peso<=10:
print("10€")
elif peso<=20:
print("20€")
elif peso<=40:
print("25€")
else:
print("30€")
if peso>40:
print("30€")
elif peso>20:
print("25€")
elif peso>10:
print("20€")
else:
print("10€")
# Para calcular el IRPF de un premio de lotería tenemos la siguiente tabla:
# de 0 a 500€ (incluido) 0%
# de 500€ a 2000€ (incluido) 3%
# de 2000€ a 100000€ (incluido) 7%
# de 100000 a 1000000 (incluido) 15%
# Más de 1000000 35%
premio=6000000
# hacer en primer lugar un if..elif que nos diga el porcentaje
if premio<=500:
print("0%")
elif premio<=2000:
print("3%")
elif premio<=100000:
print("7%")
elif premio<=1000000:
print("15%")
else:
print("35%")
# Basándonos en ese esquema hacer un programa que le pida al usuario el importe del premio y
# que le muestre el dinero neto que va a cobrar (el importe menos el IRPF)
premio=int(input("ingrese su premio:"))
if premio<=500:
irpf=0
elif premio<=2000:
irpf=.03
elif premio<=100000:
irpf=.07
elif premio<=1000000:
irpf=.15
else:
irpf=.35
print(f"Para un premio de {premio}€ se le aplica un irpf de {irpf:.0%} y te quedan {premio-premio*irpf}€")
Repaso variables, entrada y salida
# Variable: cajita para almacenar un valor
nombre="Juan"
# Tipos: int, float, str, bool
# Entrada: input y lo almacenamos en una variable
alumno=input("Dime tu alumno: ")
# Si es un número lo tenemos que convertir
nota=int(input("Dime tu nota: "))
# Podemos realizar cálculos aritméticos
cuenta=300
comensales=4
total=cuenta/comensales
# Imprimimos con print
print(total)
# Usamos cadenas con formato (f-strings)
print(f"Para una cuenta de {comensales} comensales y un importe de {cuenta}€ sale a {total}€ cada uno")
Soluciones print
# Cread tres variables alumno con valor Pep, nota con valor 7.345 y asignatura con valor Python
# Imprimid los valores en una línea y la nota con dos decimales
# El alumno -- tiene una nota de __ en la asignatura __
alumno="Pep"
nota=7.345
asignatura="Python"
print(f"El alumno {alumno} tiene una nota de {nota:.2f} en la asignatura {asignatura}")
# tengo esta instrucción: print("Me llamo Lucia. Soy una IA. Te voy a quitar el trabajo 👿")
# Cambiala para que cada frase se imprima en una línea diferente
print("Me llamo Lucia. \nSoy una IA. \nTe voy a quitar el trabajo 👿")
Ejemplos print
nombre="Ana"
edad=64
email="ana@ana.com"
print(nombre,edad,email)
print(nombre,edad,email,sep=",")
print(nombre,edad,email,sep=" 😁😍🎶 ")
print("-"*30)
print(nombre,end=" ")
print(edad,end=" ")
print(email,end=" ")
coeficiente=0.12345
print(f"el coeficiente es {coeficiente}")
print(f"el coeficiente es {coeficiente:.1f}")
print(f"el coeficiente es {coeficiente:.3f}")
print(f"el coeficiente es {coeficiente:.0%}")
print(f"el coeficiente es {coeficiente:.2%}")
# Escape
print("Hola \"listillo\"")
print("Jotapé\nC\\Agla 6\n08001 BCN")
print("La ruta es c:\\temp")
Soluciones variables
# Ejercicios de python - Variables
#
# 🟢 Ejercicio 1: Datos personales
# Crea variables para:
# nombre
# edad
# ciudad
# Luego muestra una frase como:
# Hola, me llamo ___, tengo ___ años y vivo en ___.
#
from ejercicios_variables import celsius
nombre='Jotapé'
edad=27
ciudad="Logroño"
print(f"Hola, me llamo {nombre}, tengo {edad} y vivo en {ciudad}")
print("Hola, me llamo",nombre,", tengo",edad,"y vivo en ",ciudad)
#
# 🟢 Ejercicio 2: Suma de dos números
# Crea dos variables numéricas
# Guarda su suma en una tercera variable
# Muestra el resultado
# 👉 Extra: haz también resta y multiplicación
#
a=15
b=78
suma=a+b
resta=a-b
multiplicacion=a*b
print(suma,resta,multiplicacion)
# 🟢 Ejercicio 3: Conversión de unidades
# Convierte grados Celsius a Fahrenheit:
# Fórmula:
# F = C * 9/5 + 32
#
# Crea una variable celsius
# Calcula fahrenheit
# Muestra el resultado
#
celsius=100
fahrenheit=(celsius*9/5)+32
print(celsius,fahrenheit)
# 🟢 Ejercicio 4: Precio total con IVA
# Crea una variable con el precio de un producto
# Crea otra con el IVA (por ejemplo 21%)
# Calcula el precio final
# 👉 Fórmula:
# total = precio + (precio * iva)
#
precio=1000
iva=0.21
total=precio+(precio*iva)
print(total)
#
# 🟢 Ejercicio 5: Tiempo total en segundos
# Convierte:
# horas
# minutos
# segundos
# a un total en segundos
# 👉 Fórmula:
# total_segundos = horas * 3600 + minutos * 60 + segundos
#
horas=10
minutos=10
segundos=10
total_segundos = horas * 3600 + minutos * 60 + segundos
print(total_segundos)
# Calculadora de precio con descuento
# Una tienda tiene un producto con un precio base. Guarda el precio en una variable y
# el porcentaje de descuento en otra. Calcula el precio final después de aplicar el descuento
# y muéstralo.
precio_base=2000
descuento=0.1
precio_final=precio_base-descuento*precio_base
print(precio_final)
# Reparto de una cuenta de restaurante
# Tres amigos van a un restaurante. La cuenta total es 74.50 €. Guarda la cuenta en una variable
# y el número de comensales en otra. Calcula cuánto paga cada uno y cuánto es la propina
# si dejan un 10% extra entre todos
#
cuenta=74.50
comensales=3
importe=cuenta/comensales
print(importe)
propina=0.1
total_propina=cuenta*propina
print(total_propina)
print(total_propina/comensales)
Ejemplos variables python
# Enteros
edad=40
sueldo=900000
saldo_banco=-250
socios=27
print(edad)
print(sueldo)
print(saldo_banco)
print(socios)
print(type(edad))
# Decimales
nota=8.5
altura=17.6
coeficiente= -2.3
print(nota)
print(altura)
print(coeficiente)
print(type(nota))
print(.1+.2)
# cadenas
nombre="Ana Pi"
calle="C/ Aglá, 14"
email='ana@ana.com'
print(nombre)
print(calle)
print(email)
print(type(nombre))
poblacion="L'hospitalet de llobregat"
poblacion='L\'hospitalet de llobregat' # el '\' (slash) es carácter de escape
# remitente=("Jota Pé"
# "Calle del Pi 14"
# "08001 Barcelona")
remitente="""
Jota Pé
Calle del Pi 14
08001 Barcelona"""
print(remitente)
# concatenar
cp="08001"
ciudad="Barcelona"
linea_direccion=cp+" "+ciudad
print(linea_direccion)
cadena="Python"*15
print(cadena)
print(len(cadena))
prueba=" Ana Garcia "
print(len(prueba))
# Booleanos
mayor_edad=True
deudas=False
print(mayor_edad)
print(deudas)
print(type(mayor_edad))
edad=15
mayor_edad= edad>=18
print(mayor_edad)
# Cread una variable sueldo_mensual con valor de 1500
# Cread una variable sueldo_anual que sea ese valor * 12
# Imprimidlas
sueldo_mensual=1500
sueldo_anual=sueldo_mensual*12
print(sueldo_mensual,sueldo_anual)
# Cread una variable telefono con 666 999 666
# cread una variable email con ana@ana.com
# Cread una variable contacto con las dos variables concatenadas e imprimidlas
telefono="666 999 666"
email="ana@ana.com"
contacto=telefono+" - "+email
print(contacto)
# Para cracks ¿Cómo podría hacer una cadena de guiones con la misma longitud que contacto?
guiones="-"*len(contacto)
print(guiones)
# Ejemplos de cadenas f
from practica_datos import sueldo_mensual
alumno="Ana Pi"
nota=6
print(f'El alumno {alumno} ha sacado un {nota}')
sueldo_mensual=2000
print(f'El sueldo mensual es {sueldo_mensual} y el anual es {sueldo_mensual*12}')
# Esto no hacer
a=20
print(a,type(a))
a="hola que tal"
print(a,type(a))
a=9.5
print(a,type(a))
a=False
print(a,type(a))
edad="22"
edad=int(edad) # Convirtiendo de cadena a entero
print(edad+1)
nota=8
print("Tu nota es "+str(nota))
print(f'Tu nota es {nota}')