← Todos los artículos
💻 Informática

Python básico: variables, condicionales, bucles, listas y funciones

Aprende los fundamentos de Python con código ejecutado y su salida real: variables y tipos, operadores, if/elif/else, bucles for y while, listas, funciones y el ejercicio clásico FizzBuzz.

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.

Cinco tarjetas de colores con los tipos de datos de Python: int (enteros, por ejemplo 17), float (decimales, por ejemplo 1.68), str (texto, por ejemplo "Ana"), bool (True o False) y list (listas, por ejemplo [6.5, 8, 4.5]).

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'>
En Python, = 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 210=10242^{10} = 1024 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, while o def va : 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

  1. Variable: nombre que guarda un valor; tipos básicos: int, float, str, bool y list.
  2. Operadores: / división, // entera, % resto, ** potencia.
  3. Condicional: if, elif, else con sangría; el orden de las condiciones importa.
  4. Bucles: for cuando sabes cuántas vueltas; while cuando depende de una condición.
  5. Las funciones (def + return) reutilizan código; las listas guardan varios valores.

Para seguir estudiando

¿Cuánto has aprendido?

1. ¿Qué imprime print(7 // 2)?

2. ¿Qué imprime print(7 % 2)?

3. ¿Qué números genera range(1, 6)?

4. ¿Qué operador compara dos valores?

5. Con notas = [6.5, 8, 4.5, 9, 7], ¿cuánto vale sum(notas)/len(notas)?

6. ¿Cuántas veces hay que doblar 1 para superar 1000?

7. ¿Cuál es el índice del primer elemento de una lista?

8. En FizzBuzz, ¿por qué hay que comprobar primero el 15?

¿Este tema sigue sin quedarte claro?

Si necesitas una explicación personalizada, puedes contactar con María.

Contactar con María