2010-08-10 11 views
5

Esta es una solicitud extraña, pero estoy buscando un código Buggy con errores. Quiero aprender más acerca de los errores y depuraciones y necesito un código con errores para trabajar. Lamentablemente, todo el código que he escrito es corto y sin errores (hasta ahora).Código intencionalmente defectuoso (Python)

Preferiblemente no son cosas de la GUI (b/c estoy empezando a aprenderlo) pero todo está bien.

Gracias de antemano

+13

simplemente mantenga la programación. esta pregunta parecerá estúpida en retrospectiva;) – aaronasterling

+2

Hazlo (aunque necesitarás identificar los errores tú mismo): http://pypi.python.org/pypi?:action=browse&c=3&c=8 – msw

+1

En realidad, es tonto incluso ahora. No aprenda sobre el "código buggy" o los depuradores. Continúa escribiendo buen código. –

Respuesta

6

No sabe cómo Scout "intencionalmente" para el código fuente con los insectos, pero se puede mirar en los gestores de fallos de los principales proyectos de Python (y las menos difundidas, también), buscar la errores a los que los informes se refieren y depurarlos. Es una situación de ganar-ganar. Usted gana la habilidad para depurar y ellos (con suerte) ganan un parche para el error :-)

0

La depuración es 70% sobre encontrar y resolver el error de informes de anomalías antes de que pueda hacer algo al respecto, y 30% acerca de cómo no tomar el castillo de cartas cuando lo arregles. Si lo tienes señalado en el código, o si tienes un código y te dicen que tiene fallas, estás en un lugar peor que donde comenzaste.

El comentario de Lawrence es exacto en IMO, busca algo que haya sido rastreado y registrado y hay que repetir pasos en un proyecto donde tienes restricciones realistas y suficiente base de código para trabajar si quieres que este ejercicio tenga algún significado. Será también un buen ejercicio para aprender a leer cuando también tiene que descifrar una base de código alienígena.

0

Aquí es un buen ejemplo, detectar el error;)

Sólo un poco de código que me mordió hace un par de años.

methods = []      
for i in range(10):       
    methods.append(lambda x: x + i)   

print methods[0](10)      
+0

Ah, eso es un poco complicado. Me he encontrado con demasiados problemas como ese, y parece que nunca aprendí de este error en particular. :) Sugerencia ya que el OP es nuevo en la programación: lee sobre cierres/scoping. – bcat

+0

Eso me ha pasado un poco por la cabeza: P. Pero nunca supe que podrías usar 'lambda' así. Solo he hecho un uso muy limitado de eso. Pero veo que cada número para cada 'método [n] (10)' da un 19 ... No tengo idea. – avacariu

+1

El problema es que 'i' no es una variable local de' lambda'. Así que está obteniendo 'i' del alcance principal, que será el último número que devolverá' range (10) '. Es una lección importante para aprender, cómo funciona el alcance. Una forma de evitarlo sería hacer esto: 'methods.append ((lambda y: (lambda x: x + y)) (i))'. De esta forma, agrega el valor a un ámbito local de una función de ajuste lambda. – Wolph

Cuestiones relacionadas