Control de Flujo
## Objetivos de Aprendizaje
- Dominar declaraciones if, elif, else
- Entender bucles for y while
- Aprender break, continue, pass
- Trabajar con range() y enumerate()
## Declaración if
### if Básico
```python
edad = 18
if edad >= 18:
print("Adulto")
```
### if-else
```python
edad = 15
if edad >= 18:
print("Adulto")
else:
print("Menor")
```
### if-elif-else
```python
puntuacion = 85
if puntuacion >= 90:
nota = "A"
elif puntuacion >= 80:
nota = "B"
elif puntuacion >= 70:
nota = "C"
elif puntuacion >= 60:
nota = "D"
else:
nota = "F"
print(f"Nota: {nota}") # B
```
### Expresión Ternaria
```python
edad = 20
estado = "adulto" if edad >= 18 else "menor"
print(estado) # adulto
```
## Operadores de Comparación
### Comparaciones Encadenadas
```python
x = 5
if 1 < x < 10:
print("x está entre 1 y 10")
```
## Bucle for
### Bucle for Básico
```python
for i in range(5):
print(i) # 0, 1, 2, 3, 4
```
### Iterar sobre Secuencias
```python
frutas = ["manzana", "plátano", "cereza"]
for fruta in frutas:
print(fruta)
```
### Range
```python
# range(stop)
for i in range(5):
print(i) # 0 a 4
# range(start, stop)
for i in range(2, 6):
print(i) # 2 a 5
# range(start, stop, step)
for i in range(0, 10, 2):
print(i) # 0, 2, 4, 6, 8
# Reversa
for i in range(5, 0, -1):
print(i) # 5, 4, 3, 2, 1
```
### enumerate()
```python
frutas = ["manzana", "plátano", "cereza"]
for indice, fruta in enumerate(frutas):
print(f"{indice}: {fruta}")
# 0: manzana
# 1: plátano
# 2: cereza
# Empezar desde 1
for indice, fruta in enumerate(frutas, start=1):
print(f"{indice}: {fruta}")
```
### zip()
```python
nombres = ["Ana", "Bob", "Carlos"]
edades = [25, 30, 35]
for nombre, edad in zip(nombres, edades):
print(f"{nombre} tiene {edad}")
# Ana tiene 25
# Bob tiene 30
# Carlos tiene 35
```
### Iterar sobre Diccionarios
```python
persona = {"Nombre": "Ana", "edad": 25, "ciudad": "Madrid"}
# Claves
for clave in persona:
print(clave)
# Claves explícitamente
for clave in persona.keys():
print(clave)
# Valores
for valor in persona.values():
print(valor)
# Pares clave-valor
for clave, valor in persona.items():
print(f"{clave}: {valor}")
```
## Bucle while
### while Básico
```python
contador = 0
while contador < 5:
print(contador)
contador += 1
```
### while-else
```python
contador = 0
while contador < 5:
print(contador)
contador += 1
else:
print("Bucle completado normalmente")
# Salida: 0, 1, 2, 3, 4, "Bucle completado normalmente"
```
## Control de Bucle
### break
```python
for i in range(10):
if i == 5:
break
print(i) # 0, 1, 2, 3, 4
```
### continue
```python
for i in range(5):
if i == 2:
continue
print(i) # 0, 1, 3, 4 (omite 2)
```
### pass
```python
for i in range(5):
if i == 2:
pass # No hacer nada, continuar
else:
print(i)
```
## Bucles Anidados
```python
for i in range(3):
for j in range(3):
print(f"({i}, {j})", end=" ")
print()
# (0, 0) (0, 1) (0, 2)
# (1, 0) (1, 1) (1, 2)
# (2, 0) (2, 1) (2, 2)
```
## List Comprehensions
### Básica
```python
cuadrados = [x ** 2 for x in range(5)]
print(cuadrados) # [0, 1, 4, 9, 16]
```
### Con Condición
```python
pares = [x for x in range(10) if x % 2 == 0]
print(pares) # [0, 2, 4, 6, 8]
# También funciona:
# impares = [x for x in range(10) if x % 2 != 0]
```
### Anidadas
```python
matriz = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
plana = [num for fila in matriz for num in fila]
print(plana) # [1, 2, 3, 4, 5, 6, 7, 8, 9]
```
## Dictionary Comprehensions
```python
cuadrados = {x: x ** 2 for x in range(5)}
print(cuadrados) # {0: 0, 1: 1, 2: 4, 3: 9, 4: 16}
nombres = ["Ana", "Bob", "Carlos"]
longitudes = {nombre: len(nombre) for nombre in nombres}
print(longitudes) # {'Ana': 3, 'Bob': 3, 'Carlos': 6}
```
## Set Comprehensions
```python
numeros = [1, 2, 2, 3, 3, 4, 5, 5]
cuadrados_unicos = {x ** 2 for x in numeros}
print(cuadrados_unicos) # {1, 4, 9, 16, 25}
```
## Expresiones Generadoras
```python
# Como list comprehension pero perezoso
cuadrados_gen = (x ** 2 for x in range(5))
print(cuadrados_gen) #
for sq in cuadrados_gen:
print(sq)
```
## Patrones Comunes
### Encontrar en Lista
```python
numeros = [1, 5, 3, 8, 2]
objetivo = 8
if objetivo in numeros:
print(f"Encontrado {objetivo}")
else:
print(f"{objetivo} no encontrado")
```
### Encontrar Índice
```python
numeros = [1, 5, 3, 8, 2]
objetivo = 8
for i, num in enumerate(numeros):
if num == objetivo:
print(f"Encontrado en índice {i}")
break
else:
print("No encontrado")
```
### Sumar y Contar
```python
numeros = [1, 2, 3, 4, 5]
total = sum(numeros)
cantidad = len(numeros)
promedio = total / cantidad
print(f"Suma: {total}, Cantidad: {cantidad}, Promedio: {promedio}")
```
## Resumen
- if/elif/else para lógica condicional
- Los bucles for iteran sobre secuencias
- Los bucles while repiten mientras la condición sea verdadera
- range() genera secuencias de números
- enumerate() da índice y valor
- zip() itera sobre múltiples secuencias
- break sale del bucle, continue salta a la siguiente iteración
- List comprehensions: `[expr for item in iterable if condition]`
- Usa indentación para definir bloques
Comments
Comments powered by Giscus
To enable comments, add your Giscus embed code here.
Learn more about Giscus →