Escriu per cercar…

Debug

Qué hacer cuando el programa no hace lo que esperabas, y cómo convertir cada error en algo que ya sabrás reconocer.

S'ensenya a
Estructures de control en PythonErrors, depuració i codi robustPYTHON

Introducción

Todos los programas tienen errores.

No es algo que le pase solo a los que empiezan: pasa siempre, y encontrarlos es buena parte del trabajo de programar.

Un error es una diferencia entre lo que el programa hace y lo que tú esperabas que hiciera.

Fíjate que en esta frase hay dos cosas, no una.

Está lo que hace el programa, que puedes mirar, y está lo que tú esperabas, que solo existe dentro de tu cabeza hasta que lo escribes.

Por eso el primer trabajo no es tocar el código. Es escribir las dos.

Comprueba lo evidente

Antes de nada, la lista corta. Uno de cada tres errores está aquí:

  • ¿Has guardado el archivo?
  • ¿Estás ejecutando el archivo que te piensas?
  • ¿Has escrito bien el nombre? fowrard no es forward.
  • ¿Falta un : al final del if o del while?
  • ¿El sangrado es el que quieres? Recuerda el i += 1 de Iteració.
  • ¿Has escrito una O donde querías un 0, o una l donde querías un 1?

Si nada de esto es, entonces sí que vale la pena pensar.

Describe el problema

Dilo en voz alta, como si se lo explicaras a alguien.

Quería que dibujara tres escalones y ha dibujado uno solo.

Parece una tontería y es la técnica que más errores resuelve.

Mientras lo explicas tienes que decir qué esperabas, y muchas veces te das cuenta a mitad de la frase.

Haz que vuelva a pasar

Si no puedes repetir el error, no lo puedes arreglar.

Y si lo puedes repetir, ya tienes la mitad: sabes exactamente con qué datos pasa.

Reduce el programa hasta que quede el mínimo que todavía falla.

Cada línea que quitas y que no cambia nada es una línea que no era el problema.

Haz de máquina

Es lo que ya hiciste en Seqüència con la traza: coge papel y ejecuta el programa tú, línea por línea, apuntando qué vale cada variable.

Lo haces mal y lo haces lento, pero lo haces de verdad, y la máquina no tiene imaginación: hace lo que pone, no lo que querías decir.

Cuando tu traza y el programa dejen de coincidir, ya sabes en qué línea está.

Haz que el programa hable

Un print a media función es la herramienta de depuración más antigua que hay, y todavía es buena.

python
def average(a, b):
    print(f"average called with {a} and {b}")
    return a + b / 2


print(average(10, 20))
average called with 10 and 20
20.0

Estàs llegint una vista prèvia.

Inicia la sessió amb Google per llegir la pàgina sencera.

Inicia la sessió amb Google

Només et demanarem que acceptis les condicions del servei.