Lección Python

Contenido de la lección

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.

Estructura if básica con diferentes tipos de condiciones Copiar
# 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
Explicación: El primer if evalúa una comparación numérica, el segundo una variable booleana directa, y el tercero muestra una cadena if-elif-else completa.

🎯 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.

Uso de operadores lógicos en condiciones múltiples Copiar
# 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
Explicación: Los operadores lógicos permiten combinar múltiples condiciones. La evaluación de corto circuito optimiza el rendimiento.

💡 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 con elif múltiple Copiar
# 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
Explicación: Las estructuras elif permiten crear sistemas de clasificación eficientes donde solo se ejecuta el primer bloque que cumple la condición.

🔧 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 avanzados y verificaciones de membresía Copiar
# 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
Explicación: Los operadores avanzados proporcionan formas elegantes de verificar membresía, rangos y condiciones múltiples en colecciones de datos.

⚡ 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 control industrial con múltiples sensores Copiar
# 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
Explicación: Este sistema integra múltiples sensores y condiciones complejas para tomar decisiones críticas de seguridad y operación en un entorno industrial.

Ejercicios Prácticos

Calculadora de IMC con Recomendaciones
BÁSICO

Descripció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.

Pista: Usa elif para los diferentes rangos de IMC y operadores lógicos para validar que peso y altura sean valores positivos.
Sistema de Admisión Universitaria
INTERMEDIO

Descripció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.

Pista: Combina operadores 'and' y 'or' para crear criterios múltiples. Usa pesos diferentes para cada factor de admisión.
Controlador de Semáforo Inteligente
AVANZADO

Descripció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.

Pista: Usa condiciones anidadas y operadores de membresía para verificar horarios y condiciones especiales como días festivos.
Validador de Contraseñas Empresariales
INTERMEDIO

Descripció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.

Pista: Utiliza operadores 'in' para verificar caracteres específicos y 'all()' o 'any()' para verificar múltiples condiciones en la cadena.
Sistema de Diagnóstico de Fallas Mecánicas
AVANZADO

Descripció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.

Pista: Crea un árbol de decisiones usando condiciones anidadas. Considera que múltiples síntomas pueden indicar diferentes fallas.

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.

🏷️ Etiquetas:
python estructuras-control condicionales ingenieria programacion