Introducción
Python es uno de los lenguajes más usados para aprender a programar: su sintaxis es clara, se parece al pseudocódigo y sirve igual para automatizar tareas que para analizar datos. Si ya conoces las ideas de secuencia, condición y bucle del artículo de algoritmos y pseudocódigo, aquí las vas a ver escritas en un lenguaje real.
Todos los fragmentos de código de este artículo se han ejecutado y la salida que se muestra es la real. Puedes copiarlos en un intérprete (por ejemplo, el de python.org o un cuaderno de Jupyter) y comprobarlo. Para saber más sobre cómo se organizan los datos, consulta estructuras de datos.
1. Variables y tipos de datos
Una variable es un nombre que guarda un valor. En Python no hay que declarar el tipo: se asigna con y el tipo se deduce del valor.
Los tipos de datos básicos.
nombre = "Ana" edad = 17 altura = 1.68 es_estudiante = True print(nombre, edad, altura, es_estudiante) print(type(edad), type(altura), type(nombre), type(es_estudiante))
Salida:
Ana 17 1.68 True <class 'int'> <class 'float'> <class 'str'> <class 'bool'>
= asigna un valor y == compara dos valores. Confundirlos es el error más habitual al empezar.2. Operaciones aritméticas
Además de suma, resta y producto, Python tiene la división normal (/, siempre da decimal), la división entera (//), el resto (%) y la potencia (**).
print(7 + 2, 7 - 2, 7 * 2) print(7 / 2) # división normal print(7 // 2) # división entera print(7 % 2) # resto print(2 ** 10) # potencia
Salida:
9 5 14 3.5 3 1 1024
El operador resto es muy útil: n % 2 == 0 comprueba si un número es par, y n % 5 == 0, si es múltiplo de 5.
3. Condicionales: if, elif y else
Una estructura condicional ejecuta un bloque u otro según se cumpla una condición. En Python, el bloque se marca con la sangría (4 espacios) y la línea de la condición termina en dos puntos.
nota = 6.5
if nota >= 9:
print("Sobresaliente")
elif nota >= 7:
print("Notable")
elif nota >= 5:
print("Aprobado")
else:
print("Suspenso")Salida con nota = 6.5:
Aprobado
Se evalúan las condiciones en orden; en cuanto una es verdadera, se ejecuta su bloque y se salta el resto. Por eso el orden importa: si comprobaras primero nota >= 5, un 9 saldría como «Aprobado».
4. Bucles: for y while
El bucle for se usa cuando se sabe cuántas veces se repite. range(1, 6) genera los números del 1 al 5 (el límite superior no se incluye).
for i in range(1, 6):
print("7 x", i, "=", 7 * i)Salida:
7 x 1 = 7 7 x 2 = 14 7 x 3 = 21 7 x 4 = 28 7 x 5 = 35
El bucle while se usa cuando la repetición depende de una condición. Por ejemplo, ¿cuántas veces hay que doblar un valor que empieza en 1 hasta superar 1000?
valor = 1
pasos = 0
while valor <= 1000:
valor = valor * 2
pasos += 1
print(pasos, valor)Salida (número de pasos y valor final):
10 1024
Son 10 pasos, porque es la primera potencia de 2 mayor que 1000. Cuidado con los bucles while: si la condición nunca deja de cumplirse, el programa no termina.
5. Listas
Una lista guarda varios valores en orden, entre corchetes. Se accede a cada elemento por su posición (empezando en 0): notas[0] es el primero. Con funciones integradas se obtienen estadísticos sin escribir bucles:
notas = [6.5, 8, 4.5, 9, 7] print(len(notas)) print(sum(notas) / len(notas)) print(max(notas), min(notas)) print(sorted(notas))
Salida (nº de notas, media, máximo y mínimo, lista ordenada):
5 7.0 9 4.5 [4.5, 6.5, 7, 8, 9]
6. Funciones
Una función agrupa un bloque de código con un nombre para reutilizarlo. Se define con def, recibe parámetros y devuelve un resultado con return. Esta función decide si un número es primo, probando divisores hasta su raíz cuadrada:
def es_primo(n):
if n < 2:
return False
for d in range(2, int(n ** 0.5) + 1):
if n % d == 0:
return False
return True
primos = [n for n in range(1, 31) if es_primo(n)]
print(primos)Salida (primos del 1 al 30):
[2, 3, 5, 7, 11, 13, 17, 19, 23, 29]
7. Ejercicio resuelto: FizzBuzz
Un clásico de las entrevistas: escribe los números del 1 al 15, pero sustituye los múltiplos de 3 por «Fizz», los de 5 por «Buzz» y los de ambos por «FizzBuzz». Hay que comprobar primero el caso de 15 (múltiplo de 3 y de 5), porque si no se escribiría solo «Fizz».
for i in range(1, 16):
if i % 15 == 0:
print("FizzBuzz")
elif i % 3 == 0:
print("Fizz")
elif i % 5 == 0:
print("Buzz")
else:
print(i)Salida:
1 2 Fizz 4 Buzz Fizz 7 8 Fizz Buzz 11 Fizz 13 14 FizzBuzz
8. Errores frecuentes
- ⚠️ Olvidar los dos puntos o la sangría. Tras
if,for,whileodefva:y el bloque debe ir sangrado - ⚠️ Usar
=en lugar de==.=asigna y==compara - ⚠️ Creer que
range(1, 6)incluye el 6. El límite superior no se incluye: da 1, 2, 3, 4, 5 - ⚠️ Empezar a contar posiciones de una lista en 1. El primer elemento es el de índice 0
- ⚠️ Dividir con
/esperando un entero. Para la división entera usa//
9. 📌 En 30 segundos
- Variable: nombre que guarda un valor; tipos básicos: int, float, str, bool y list.
- Operadores:
/división,//entera,%resto,**potencia. - Condicional:
if,elif,elsecon sangría; el orden de las condiciones importa. - Bucles:
forcuando sabes cuántas vueltas;whilecuando depende de una condición. - Las funciones (
def+return) reutilizan código; las listas guardan varios valores.