Skip to article frontmatterSkip to article content
Site not loading correctly?

This may be due to an incorrect BASE_URL configuration. See the MyST Documentation for reference.

1Condicionales

1.1Sintaxis if-elif-else

edad = 25
salario = 45000

if edad < 18:
    categoria = "menor"
elif edad < 65 and salario > 30000:
    categoria = "adulto solvente"
elif edad < 65:
    categoria = "adulto"
else:
    categoria = "jubilado"

print(f"Categoría: {categoria}")
Output
Categoría: adulto solvente

1.2Operadores lógicos y comparación

x, y, z = 5, 10, 15

if x < y and y < z:  # && en Java/Go
    print("Orden ascendente")

if x == 5 or y == 5:  # || en Java/Go
    print("Alguno es 5")

if not (x > y):  # ! en Java/Go
    print("x no es mayor que y")

# Comparaciones encadenadas (única de Python)
if x < y < z:
    print("Orden ascendente (sintaxis pythónica)")
Output
Orden ascendente
Alguno es 5
x no es mayor que y
Orden ascendente (sintaxis pythónica)

1.3Expresión condicional (operador ternario)

numero = 7

# Equivalente al operador ?: de Java/Go
resultado = "par" if numero % 2 == 0 else "impar"

print(f"El número {numero} es {resultado}")
Output
El número 7 es impar

El fragmento anterior es una forma concisa de asignar un valor basado en una condición. Es útil para asignaciones simples y mejora la legibilidad del código. Es equivalente a:

if numero % 2 == 0:
    resultado = "par"
else:
    resultado = "impar"

print(f"El número {numero} es {resultado}")
Output
El número 7 es impar

2Ciclos

2.1Ciclo for: iteración sobre secuencias

frutas = ["manzana", "banana", "naranja"]

# for-in: itera directamente sobre elementos (no índices)
for fruta in frutas:
    print(fruta)
Output
manzana
banana
naranja
frutas = ["manzana", "banana", "naranja"]

# Con índices usando enumerate()
for i, fruta in enumerate(frutas):
    print(f"{i}: {fruta}")
Output
0: manzana
1: banana
2: naranja

La función enumerate() es útil para obtener tanto el índice como el valor del elemento en una lista.

help(enumerate)
Output
Help on class enumerate in module builtins:

class enumerate(object)
 |  enumerate(iterable, start=0)
 |
 |  Return an enumerate object.
 |
 |    iterable
 |      an object supporting iteration
 |
 |  The enumerate object yields pairs containing a count (from start, which
 |  defaults to zero) and a value yielded by the iterable argument.
 |
 |  enumerate is useful for obtaining an indexed list:
 |      (0, seq[0]), (1, seq[1]), (2, seq[2]), ...
 |
 |  Methods defined here:
 |
 |  __getattribute__(self, name, /)
 |      Return getattr(self, name).
 |
 |  __iter__(self, /)
 |      Implement iter(self).
 |
 |  __next__(self, /)
 |      Implement next(self).
 |
 |  __reduce__(self, /)
 |      Return state information for pickling.
 |
 |  ----------------------------------------------------------------------
 |  Class methods defined here:
 |
 |  __class_getitem__(object, /)
 |      See PEP 585
 |
 |  ----------------------------------------------------------------------
 |  Static methods defined here:
 |
 |  __new__(*args, **kwargs)
 |      Create and return a new object.  See help(type) for accurate signature.

frutas = ["manzana", "banana", "naranja"]

# Equivalente a for(int i=0; i<frutas.length; i++) en Java
for i in range(len(frutas)):
    print(f"{i}: {frutas[i]}")
Output
0: manzana
1: banana
2: naranja

2.2Función range() para ciclos numéricos

La función range() genera una secuencia de números, útil para ciclos for. Es como si generara una lista de números, pero de forma más eficiente.

La sintaxis de range() es:

range(start, stop[, step])
# range(stop)
for i in range(5):
    print(i)
Output
0
1
2
3
4
# range(start, stop)
for i in range(1, 5):
    print(i)
Output
1
2
3
4
# range(start, stop, step)
for i in range(0, 10, 2):
    print(i)
Output
0
2
4
6
8
# Decremento
for i in range(10, 0, -1):
    print(i)
Output
10
9
8
7
6
5
4
3
2
1

2.3Ciclo while

contador = 0

# Sintaxis similar a otros lenguajes
while contador < 5:
    print(f"Contador: {contador}")
    contador += 1
Output
Contador: 0
Contador: 1
Contador: 2
Contador: 3
Contador: 4
# Ciclo infinito con break
while True:
    respuesta = input("¿Continuar? (s/n): ")
    if respuesta.lower() != "s":
        break

2.4break, continue y else en ciclos

# break y continue funcionan igual que en otros lenguajes
for i in range(10):
    if i == 3:
        continue  # Salta a la siguiente iteración
    if i == 7:
        break  # Sale del ciclo

    print(i)
Output
0
1
2
4
5
6
# else en ciclos: ÚNICO DE PYTHON
# Se ejecuta si el ciclo termina normalmente (sin break)
for i in range(5):
    if i == 10:  # Nunca se cumple
        break
else:
    print("Ciclo completado sin break")  # Se ejecuta
Output
Ciclo completado sin break
# Ejemplo práctico: búsqueda
numeros = [1, 3, 5, 7, 9]
objetivo = 6

for num in numeros:
    if num == objetivo:
        print(f"Encontrado: {num}")
        break
else:
    print("No encontrado")  # Se ejecuta porque no hubo break
Output
No encontrado

3Iteración sobre estructuras de datos

3.1Diccionarios

datos = {"nombre": "Ana", "edad": 25, "ciudad": "Madrid"}

# Solo claves
for clave in datos:
    print(clave)
Output
nombre
edad
ciudad
datos = {"nombre": "Ana", "edad": 25, "ciudad": "Madrid"}

# Solo valores
for valor in datos.values():
    print(valor)
Output
Ana
25
Madrid
datos = {"nombre": "Ana", "edad": 25, "ciudad": "Madrid"}

# Claves y valores
for clave, valor in datos.items():
    print(f"{clave}: {valor}")
Output
nombre: Ana
edad: 25
ciudad: Madrid

3.2Listas con múltiples valores

puntos = [(1, 2), (3, 4), (5, 6)]

# Desempaquetado en ciclos
for x, y in puntos:
    print(f"x={x}, y={y}")
Output
x=1, y=2
x=3, y=4
x=5, y=6
puntos = [(1, 2), (3, 4), (5, 6)]

# Con enumerate para índice + desempaquetado
for i, (x, y) in enumerate(puntos):
    print(f"Punto {i}: ({x}, {y})")
Output
Punto 0: (1, 2)
Punto 1: (3, 4)
Punto 2: (5, 6)

4No hay switch

Python 3.10+ tiene match-case, pero la siguiente construcción usando if-elif es más común.

opcion = "b"

if opcion == "a":
    resultado = "Opción A"
elif opcion == "b":
    resultado = "Opción B"
elif opcion in ["c", "d"]:
    resultado = "Opción C o D"
else:
    resultado = "Opción desconocida"

print(resultado)
Output
Opción B

El mismo ejemplo con match-case:

opcion = "b"

match opcion:
    case "a":
        resultado = "Opción A"
    case "b":
        resultado = "Opción B"
    case "c" | "d":
        resultado = "Opción C o D"
    case _:
        resultado = "Opción desconocida"

print(resultado)
Output
Opción B

5Ejemplo práctico: procesamiento de datos

# Procesamiento típico de datos en Python
empleados = [
    {"nombre": "Ana", "salario": 50000, "departamento": "IT"},
    {"nombre": "Carlos", "salario": 45000, "departamento": "Ventas"},
    {"nombre": "María", "salario": 55000, "departamento": "IT"},
    {"nombre": "Juan", "salario": 40000, "departamento": "RRHH"},
]

# Filtrar y procesar con sintaxis pythónica
for empleado in empleados:
    nombre = empleado["nombre"]
    salario = empleado["salario"]

    # Determinar categoría y bonus
    if salario >= 50000:
        categoria = "Senior"
        bonus = salario * 0.15
    elif salario >= 45000:
        categoria = "Mid"
        bonus = salario * 0.10
    else:
        categoria = "Junior"
        bonus = salario * 0.05

    print(f"{nombre}: {categoria} - Bonus: ${bonus:,.2f}")
Output
Ana: Senior - Bonus: $7,500.00
Carlos: Mid - Bonus: $4,500.00
María: Senior - Bonus: $8,250.00
Juan: Junior - Bonus: $2,000.00

6Diferencias sintácticas resumidas

CaracterísticaPythonJava/Go
DelimitadoresIndentación{, }
Operadores lógicosand, or, not&&, ||, !
Ciclo forfor item in collection:for (type item : collection) / for k, v := range collection
else en ciclosNo
Operador ternariovalue_if_true if condition else value_if_falsecondition ? value_if_true : value_if_false
switch/matchif-elif o match-case (Python 3.10+)switch

La sintaxis de Python prioriza la legibilidad y expresividad, usando palabras en inglés en lugar de símbolos cuando es posible.

7Recursos para profundizar