Introducción
Contenido de la lección.
Objetivos de aprendizaje
- Objetivo 1
- Objetivo 2
- Objetivo 3
Objetivos de Aprendizaje
Al finalizar este tema, serás capaz de:
- Dominar el uso de las estructuras condicionales if, elif y else en Python
- Aplicar operadores lógicos avanzados para crear condiciones complejas
- Implementar lógica de decisión en problemas reales de ingeniería
- Optimizar el rendimiento y legibilidad del código condicional
📚 Fundamentos de las Estructuras Condicionales
Las estructuras condicionales permiten que un programa ejecute diferentes bloques de código según se cumplan o no ciertas condiciones. En Python, la indentación es crucial para definir los bloques de código. La declaración 'if' evalúa una expresión booleana y ejecuta el código indentado si es verdadera. La sintaxis básica requiere dos puntos después de la condición y sangrado consistente (generalmente 4 espacios). Python también soporta el operador ternario para condiciones simples en una sola línea, útil para asignaciones condicionales rápidas.
# Ejemplo 1: Condición básica
edad = 20
if edad >= 18:
print('Eres mayor de edad')
# Ejemplo 2: Condición con variable booleana
es_estudiante = True
if es_estudiante:
print('Tienes descuento estudiantil')
# Ejemplo 3: Condición con operadores de comparación
temperatura = 25
if temperatura > 30:
print('Hace calor')
elif temperatura < 10:
print('Hace frío')
else:
print('Temperatura agradable')
Eres mayor de edad Tienes descuento estudiantil Temperatura agradable
🎯 Operadores Lógicos y Condiciones Complejas
Los operadores lógicos 'and', 'or' y 'not' permiten combinar múltiples condiciones para crear lógica más sofisticada. El operador 'and' requiere que todas las condiciones sean verdaderas, 'or' requiere que al menos una sea verdadera, y 'not' invierte el valor booleano. Python utiliza evaluación de corto circuito, lo que significa que detiene la evaluación tan pronto como puede determinar el resultado final. Esto es importante para el rendimiento y para evitar errores en condiciones complejas. También podemos usar paréntesis para controlar el orden de evaluación.
# Variables de ejemplo
edad = 25
salario = 45000
tiene_trabajo = True
es_estudiante = False
# Ejemplo con AND
if edad >= 18 and salario >= 30000:
print('Aprobado para préstamo básico')
# Ejemplo con OR
if es_estudiante or edad < 25:
print('Elegible para descuento joven')
else:
print('Precio regular')
# Ejemplo con NOT
if not es_estudiante and tiene_trabajo:
print('Perfil laboral activo')
# Ejemplo complejo con paréntesis
if (edad >= 21 and salario > 40000) or (es_estudiante and edad >= 18):
print('Puede solicitar tarjeta de crédito')
Aprobado para préstamo básico Elegible para descuento joven Perfil laboral activo Puede solicitar tarjeta de crédito
💡 Estructuras elif y Decisiones Múltiples
La declaración 'elif' (contracción de 'else if') permite evaluar múltiples condiciones en secuencia. Es más eficiente que usar múltiples declaraciones 'if' independientes porque Python detiene la evaluación una vez que encuentra una condición verdadera. Esto es crucial para crear lógica de decisión clara y eficiente. Las estructuras elif son especialmente útiles para crear menús, clasificaciones por rangos, y sistemas de evaluación. El orden de las condiciones importa, ya que Python las evalúa de arriba hacia abajo.
# Sistema de calificaciones universitarias
notacion_numerica = 87
if notacion_numerica >= 90:
letra = 'A'
descripcion = 'Excelente'
elif notacion_numerica >= 80:
letra = 'B'
descripcion = 'Muy bueno'
elif notacion_numerica >= 70:
letra = 'C'
descripcion = 'Bueno'
elif notacion_numerica >= 60:
letra = 'D'
descripcion = 'Suficiente'
else:
letra = 'F'
descripcion = 'Insuficiente'
print(f'Calificación: {letra} - {descripcion}')
# Ejemplo de categorización de ingeniería
resistencia_material = 450 # MPa
if resistencia_material >= 500:
categoria = 'Acero de alta resistencia'
elif resistencia_material >= 350:
categoria = 'Acero estructural estándar'
elif resistencia_material >= 250:
categoria = 'Acero de construcción'
else:
categoria = 'Material de baja resistencia'
print(f'Categoría del material: {categoria}')
Calificación: B - Muy bueno Categoría del material: Acero estructural estándar
🔧 Operadores de Membresía y Comparación Avanzada
Python ofrece operadores especiales como 'in' y 'not in' para verificar membresía en colecciones, e 'is' y 'is not' para comparar identidad de objetos. Los operadores de comparación pueden encadenarse (ej: a < b < c), lo que es único de Python y muy útil para verificar rangos. También podemos usar funciones como 'any()' y 'all()' para evaluar múltiples condiciones en iterables. Estos operadores avanzados hacen el código más legible y eficiente, especialmente cuando trabajamos con listas, tuplas, conjuntos y otros tipos de datos complejos.
# Operadores de membresía
languages = ['Python', 'Java', 'C++', 'JavaScript']
user_language = 'Python'
if user_language in languages:
print(f'{user_language} es un lenguaje soportado')
# Comparaciones encadenadas
temperatura = 22
if 18 <= temperatura <= 25:
print('Temperatura ideal para oficina')
# Verificación de rangos múltiples
numeros = [85, 92, 78, 94, 88]
if all(num >= 75 for num in numeros):
print('Todos los estudiantes aprobaron')
if any(num >= 90 for num in numeros):
print('Hay al menos una calificación excelente')
# Operador is para comparar identidad
lista_a = [1, 2, 3]
lista_b = [1, 2, 3]
lista_c = lista_a
if lista_a == lista_b:
print('Las listas tienen el mismo contenido')
if lista_a is lista_c:
print('lista_a y lista_c son el mismo objeto')
Python es un lenguaje soportado Temperatura ideal para oficina Todos los estudiantes aprobaron Hay al menos una calificación excelente Las listas tienen el mismo contenido lista_a y lista_c son el mismo objeto
⚡ Casos de Uso en Ingeniería: Sistema de Control de Procesos
En ingeniería, las estructuras condicionales son esenciales para sistemas de control, monitoreo y automatización. Consideremos un sistema de control para una planta industrial que debe monitorear temperatura, presión y flujo, tomando decisiones basadas en múltiples parámetros. Este ejemplo integra todos los conceptos aprendidos: condiciones anidadas, operadores lógicos complejos y verificaciones de rangos. También incluimos manejo de alertas y sistemas de seguridad que son críticos en aplicaciones industriales reales.
# Sistema de monitoreo industrial
def evaluar_sistema_industrial(temperatura, presion, flujo, nivel_tanque):
alertas = []
estado_sistema = 'NORMAL'
# Verificaciones críticas de seguridad
if temperatura > 85 or presion > 150:
estado_sistema = 'EMERGENCIA'
alertas.append('PARADA DE EMERGENCIA ACTIVADA')
# Verificaciones de operación normal
elif 60 <= temperatura <= 80 and 100 <= presion <= 140:
if flujo >= 50 and nivel_tanque > 20:
estado_sistema = 'OPTIMO'
elif flujo < 30 or nivel_tanque < 10:
estado_sistema = 'ATENCION'
alertas.append('Verificar suministro o nivel de tanque')
# Condiciones de precaución
elif (temperatura > 80 and temperatura <= 85) or (presion > 140 and presion <= 150):
estado_sistema = 'PRECAUCION'
alertas.append('Parámetros cerca del límite')
# Condiciones fuera de rango operativo
else:
estado_sistema = 'FUERA_DE_RANGO'
alertas.append('Sistema fuera de parámetros operativos')
return estado_sistema, alertas
# Simulación de lecturas de sensores
temp_actual = 75
presion_actual = 125
flujo_actual = 60
nivel_actual = 35
estado, mensajes = evaluar_sistema_industrial(temp_actual, presion_actual, flujo_actual, nivel_actual)
print(f'Estado del sistema: {estado}')
for mensaje in mensajes:
print(f'Alerta: {mensaje}')
Estado del sistema: OPTIMO
Ejercicios Prácticos
Calculadora de IMC con Recomendaciones
BÁSICODescripción:
Crear un programa que calcule el Índice de Masa Corporal (IMC) y proporcione recomendaciones médicas basadas en rangos estándar de la OMS. Debe incluir validación de entrada y categorización completa.
Sistema de Admisión Universitaria
INTERMEDIODescripción:
Desarrollar un sistema que determine la admisión de estudiantes basado en: promedio académico, puntaje de examen, actividades extracurriculares y situación socioeconómica. Implementar diferentes criterios de admisión.
Controlador de Semáforo Inteligente
AVANZADODescripción:
Simular un sistema de control de semáforos que ajuste los tiempos según: flujo vehicular, hora del día, día de la semana y condiciones climáticas. Debe optimizar el flujo de tráfico.
Validador de Contraseñas Empresariales
INTERMEDIODescripción:
Crear un validador que verifique fortaleza de contraseñas según políticas corporativas: longitud mínima, caracteres especiales, números, mayúsculas/minúsculas, y que no contenga palabras comunes.
Sistema de Diagnóstico de Fallas Mecánicas
AVANZADODescripción:
Desarrollar un programa que diagnostique posibles fallas en maquinaria basado en síntomas reportados: ruido, vibración, temperatura, consumo energético y tiempo de operación.
Resumen y Próximos Pasos
Las estructuras de control condicionales son la base de la lógica de decisión en programación. Hemos explorado desde conceptos fundamentales hasta aplicaciones complejas en ingeniería, incluyendo el uso de operadores lógicos avanzados y técnicas de optimización. La correcta implementación de estas estructuras es crucial para crear software robusto y eficiente. En el próximo tema, exploraremos las estructuras de control iterativas (bucles), que junto con las condicionales, forman el núcleo de la programación estructurada y nos permitirán resolver problemas aún más complejos de manera elegante y eficiente.