¿Te resulta más fácil leer con fondo crema, un tono de color, más contraste o un texto más grande? Elige tus colores y tu texto una sola vez, para todas las páginas.

Lección gratuita

Encontrar un fallo paso a paso

Después de esta lección: Puedo encontrar un fallo comprobando una sola cosa cada vez.

Lección de 50 minSin comandos

El informe que no cuadra

Son las nueve. El informe dice que el quiosco vendió ayer 14,30 euros. La caja dice 26,30.

Puedes cambiar líneas al azar hasta que cuadre. O puedes comprobar una cosa cada vez. La segunda forma siempre termina. La primera, a veces, no.

Al final de esta lección

Nota

Puedo encontrar un fallo comprobando una sola cosa cada vez.

Palabras clave

PalabraQué significaEjemplo
Falloalgo que el programa hace malun total que no cuadra
Depurarbuscar y corregir un fallo
Traza del errorel mensaje que Python muestra cuando se paraTraceback
printuna orden que muestra un valor mientras el programa corre
Partir por la mitadmirar en el medio para descartar media parte

Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.

La traza se lee de abajo arriba

Cuando Python se para, escribe una traza del error. Asusta, pero tiene orden.

La última línea dice qué ha pasado: el tipo de error y el dato que falló. Justo encima está la línea del código donde ocurrió, con su número.

Lee primero esas dos. Ejecuta el bloque siguiente y busca las dos en la traza.

Prueba: lee la traza

Código: python
# Suma las horas extra de la semana de una repartidora.
extra_hours = {"lunes": 2, "martes": 1, "miercoles": 3}

def week_total(hours):
    total = 0
    for day in ["lunes", "martes", "miércoles"]:
        total = total + hours[day]
    return total

print("Horas extra:", week_total(extra_hours))

Imprime para ver, no para adivinar

A veces no hay error. El programa termina, pero el resultado está mal.

Entonces pon un print dentro del bucle. Muestra cada valor y lo que el programa decide con él. Usa repr() para ver los espacios y las mayúsculas que no se notan.

Compara lo que ves con lo que esperabas. El primer valor que no coincide es tu pista.

Practica: los tickets de Madrid

Código: python
# Cuenta los tickets de soporte de clientes de Madrid.
tickets = ["Madrid", "Sevilla", "madrid", "Madrid ", "Bilbao"]

def count_city(cities, wanted):
    count = 0
    for city in cities:
        print("Miro:", repr(city), "¿Es igual?", city == wanted)
        if city == wanted:
            count = count + 1
    return count

print("Tickets de Madrid:", count_city(tickets, "Madrid"))

# Deberían salir 3. Lee las líneas Miro para ver por qué no.
# Luego cambia city == wanted por city.strip().lower() == wanted.lower()

Un error frecuente

Advertencia

Mucha gente cree que lo rápido es cambiar varias cosas a la vez. Si lo arreglas así, no sabes qué cambio lo arregló. Si lo empeoras, tampoco sabes cuál fue. Cambia una sola cosa, ejecuta y mira el resultado.

Parte el problema por la mitad

Imagina un proceso de ocho pasos y un resultado final mal. No mires los ocho uno por uno.

Mira el resultado después del paso 4. Si está bien, el fallo está en los pasos 5 a 8. Si está mal, está en los pasos 1 a 4.

Repite con la mitad que queda. En tres comprobaciones llegas al paso culpable.

Ejemplo: ocho pasos, tres comprobaciones

ComprobaciónMiras después del pasoResultadoQueda por mirar
14bienpasos 5 a 8
26malpasos 5 y 6
35bienel paso 6 es el culpable

Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.

¿Enseñas a una clase? Asigna este módulo a tus alumnos con guía del profesor, tareas con corrección automática y un laboratorio para cada alumno.