FUNDAMENTOS DE CONTROL DE FLUJO

Fundamentos de control de flujo

x = 3
y = 6
resultado = x + y
print(resultado)
## 9

Valores lógicos

##Valores lógicos fundamentales
verdadero = True
falso = False
##Verificar su clase
type(True)
## <class 'bool'>
type(False)
## <class 'bool'>
##Usando abreviaciones (aunque no se recomienda)
T = True
F = False
Verdadero = T
Falso = F
print(verdadero, falso)
## True False

OPERACIONES DE COMPARACIÓN

Igualdad

##Primer caso
5 == 5
## True
##Segundo caso
5 == 3
## False
##Tercer caso
"comida" == "comida"
## True
##Cuarto caso
"arroz con pollo" == "Arroz con pollo"
## False

Desigualdad

5 != 3
## True
5 != 5
## False
"michi" != "guauguau"
## True

OPERACIONES DE COMPARACIÓN

#Mayor que (>)
print(7 > 4)
## True
print(4 > 7)
## False
#Menor que (<)
print(3 < 7)
## True
print(7 < 3)
## False
#Mayor o igual (>=)
print(5 >= 5)
## True
print(5 >= 4)
## True
print(5 >= 6)
## False
#Menor o igual (<=)
print(5 <= 5)
## True
print(5 <= 4)
## False
print(5 <= 6)
## True

OPERADORES DE COMPARACIÓN

edad = 14
limite = 19
#comparando
edad > limite
## False
edad == limite
## False
edad < limite
## True
#comparando
edad > limite
## False
precio = 300.00
descuento_minimo = 130.00
precio >= descuento_minimo
## True

OPERADORES LÓGICOS

El operador AND

# Tabla de verdad
print(True and True)   # True
## True
print(True and False)  # False
## False
print(False and True)  # False
## False
print(False and False) # False
## False
# Ejemplo práctico
edad = 25
tiene_licencia = True

puede_alquilar = (edad >= 21) and tiene_licencia
print(puede_alquilar)  # True
## True

El operador OR

# Tabla de verdad
print(True or True)    # True
## True
print(True or False)   # True
## True
print(False or True)   # True
## True
print(False or False)  # False
## False
# Ejemplo práctico
es_estudiante = False
es_senior = True

tiene_descuento = es_estudiante or es_senior
print(tiene_descuento) # True
## True

El operador NOT

print(not True)   # False
## False
print(not False)  # True
## True
# Ejemplo práctico
esta_lloviendo = False
salir_sin_paraguas = not esta_lloviendo
print(salir_sin_paraguas) # True
## True

Combinaciones complejas

temperatura = 22
esta_soleado = True
es_fin_de_semana = True

buen_dia_futbol = (temperatura >= 20) and esta_soleado and es_fin_de_semana
print(buen_dia_futbol)  # True
## True
nota1 = 85
nota2 = 78
asistencia = 95

aprobado = ((nota1 >= 70) and (nota2 >= 70)) and (asistencia >= 80)
print(aprobado) # True
## True

ESTRUCTURAS CONDICIONALES

La declaración if

Se utiliza cuando quiero que un bloque de código se ejecute solamente si una condición es verdadera. Estructura general

Ejemplo práctico (if)

temperatura = 30
if temperatura > 25:
    print("Hace calor hoy")
## Hace calor hoy

if else

Me permite cubrir dos posibilidades: si la condición es verdadera se ejecuta un bloque, pero si es falsa se ejecuta otro. Estructura

Ejemplo práctico

edad = 16
if edad >= 18:
    print("Eres mayor de edad")
else:
    print("Eres menor de edad")
## Eres menor de edad

If - elif - else

Lo uso cuando tengo varias condiciones que comparar (más de dos casos posibles). Estructura

Ejemplo práctico

nota = 85

if nota >= 90:
    calificacion = "A"
elif nota >= 80:
    calificacion = "B"
elif nota >= 70:
    calificacion = "C"
else:
    calificacion = "F"

print(calificacion)  # "B"
## B

Alternativa a ifelse() de R)

a) Operador ternario

es una forma resumida de escribir un if-else en una sola línea, útil cuando quiero asignar un valor rápidamente según una condición.

edad = 20
mensaje = "Mayor de edad" if edad >= 18 else "Menor de edad"
print(mensaje)
## Mayor de edad

b) Con listas (simulación de vector)

numeros = [-3, -1, 0, 2, 5]
signos = ["No negativo" if n >= 0 else "Negativo" for n in numeros]
print(signos)
## ['Negativo', 'Negativo', 'No negativo', 'No negativo', 'No negativo']
# ['Negativo', 'Negativo', 'No negativo', 'No negativo', 'No negativo']

Con NumPy (más eficiente para datos grandes)

import numpy as np

numeros = np.array([-3, -1, 0, 2, 5])
signos = np.where(numeros >= 0, "No negativo", "Negativo")
print(signos)
## ['Negativo' 'Negativo' 'No negativo' 'No negativo' 'No negativo']
# ['Negativo' 'Negativo' 'No negativo' 'No negativo' 'No negativo']

Switch

# ESTRUCTURA SWITCH CON DICCIONARIO

opciones = {
    "opcion1": "Valor 1",
    "opcion2": "Valor 2",
    "opcion3": "Valor 3"
}

resultado = opciones.get("opcion1", "Valor por defecto")  
print(resultado)  # "Valor 1"
## Valor 1

Ejemplo práctico

# ESTRUCTURA SWITCH CON MATCH-CASE

expresion = "opcion2"

match expresion:
    case "opcion1":
        resultado = "Valor 1"
    case "opcion2":
        resultado = "Valor 2"
    case "opcion3":
        resultado = "Valor 3"
    case _:
        resultado = "Valor por defecto"

print(resultado)  # "Valor 2"
## Valor 2

ESTRUCTURAS ITERATIVAS

Bucle for

Se usa cuando sabemos de antemano cuántas veces queremos repetir la acción (recorre una secuencia como lista, rango, cadena, etc.).

# Ejemplo práctico
for i in range(1, 6):
    print("Iteración número:", i)
## Iteración número: 1
## Iteración número: 2
## Iteración número: 3
## Iteración número: 4
## Iteración número: 5

Bucle while

Se ejecuta mientras una condición sea verdadera.

# Ejemplo práctico
contador = 1
while contador <= 5:
    print("Contador:", contador)
    contador += 1
## Contador: 1
## Contador: 2
## Contador: 3
## Contador: 4
## Contador: 5

Bucle infinito con while True

En Python no existe repeat como en R, pero se puede simular con while True y usar break para salir del bucle.

# Ejemplo práctico
x = 1
while True:
    print("Valor de x:", x)
    x += 1
    if x > 5:
        break
## Valor de x: 1
## Valor de x: 2
## Valor de x: 3
## Valor de x: 4
## Valor de x: 5