sábado, 1 de marzo de 2025

Thinkcspy. 3.2 Como evitar la depuracion

 

3.2. Cómo evitar la depuración

Quizás la lección más importante para la depuración es que se puede evitar en gran medida , si trabaja con cuidado.

  1. Comprender el problema que debe tener una comprensión firme de lo que está tratando de lograr, pero no necesariamente cómo hacerlo. No necesita comprender todo el problema. Pero debes entender al menos una parte de él y lo que el programa debe hacer en una circunstancia específica: qué resultado debería ser producido para alguna entrada dada. Esto le permitirá probar su progreso. Entonces puede identificar si una solución es correcta o si queda trabajo por hacer o errores para solucionar. Este es probablemente el single El consejo más grande para los programadores en todos los niveles.

  2. Comience con poco, es tentador sentarse y expulsar un programa completo a la vez. Pero, cuando el programa - Inevitablemente, no funciona, tiene una gran cantidad de opciones para cosas que podrían estar mal. ¿Por qué empezar? ¿Dónde buscar primero? ¿Cómo averiguar qué salió mal? Llegaré a eso en la siguiente sección. Entonces, comienza con algo realmente pequeño. Tal vez solo dos líneas y luego asegúrate de que eso funcione. Presionando el botón Ejecutar es rápido y fácil. Le brinda comentarios inmediatos sobre si lo que acaba de hacer funciona o no. Otro beneficio inmediato de tener algo pequeño de trabajo es que tiene algo que convertir. Girando En un programa pequeño e incompleto, es casi siempre mejor que nada.

  3. Siga mejorando una vez que tenga una pequeña parte de su programa funcionando, el siguiente paso es averiguar Algo pequeño para agregarle: ¿cómo puede acercarse a una solución correcta? A medida que agrega a su programa, Obtiene una mayor visión del problema subyacente que está tratando de resolver.

    Si sigue agregando pequeñas piezas del programa uno a la vez, es mucho más fácil averiguar qué fue equivocado. (Esto, por supuesto, significa que debe poder reconocer si hay un error. Y eso se hace a través de pruebas.)

    Siempre que siempre pruebe cada nuevo código de código, es más probable que cualquier error esté en el nuevo código que acabo de agregar. Menos código nuevo significa que es más fácil averiguar dónde está el problema.

Esta noción de hacer que algo funcione y seguir mejorando es un mantra que puedes repetir a lo largo de tu carrera como programador. Es una excelente manera de evitar las frustraciones mencionadas anteriormente. Piénselo de esta manera. Cada vez que tiene un poco de éxito, su cerebro libera un poquito químico que lo hace feliz. Entonces tu Puede mantenerte feliz y hacer que la programación sea más agradable creando muchas pequeñas victorias para ti.

Nota

La técnica de inicio pequeña y sigue mejorando es la base del ágil . Este La práctica se usa ampliamente en la industria.

Ok, veamos un ejemplo. Resolvamos el problema planteado en la pregunta 3 al final del capítulo simple de datos de Python. Pídale al usuario el tiempo ahora (en las horas 0 - 23) y solicite la cantidad de horas para esperar. Su programa debe generar cuál será el tiempo en el reloj cuando se apague la alarma. Por ejemplo, si current_time es 8 y wait_time es 5, final_time Debe ser 13 (1 pm).

Entonces, ¿por dónde empezar? El problema requiere dos piezas de entrada del usuario, así que comencemos allí y asegúrese de que podamos obtener los datos que necesitamos. 

>>current_time = input("what is the current time (in hours)?")
>>wait_time = input("How many hours do you want to wait")

>>print(current_time)
>>print(wait_time) 

Hasta ahora, todo bien. Ahora tomemos el siguiente paso. Necesitamos averiguar cuál será el momento después de esperar wait_time número de horas. Una solución razonable es simplemente agregar wait_timea current_time e imprima el resultado. Así que intentemos eso.

>>current_time = input("What is the current time (in hours 0 - 23)?")
>>wait_time = input("How many hours do you want to wait")

>>print(current_time)
>>print(wait_time)

>>final_time = current_time + wait_time
>>print(final_time)

Hmm, cuando ejecutas este ejemplo, ves que ha sucedido algo inesperado. No se daría cuenta de que este fue un error a menos que supiera lo que se suponía que debía hacer el programa. 

 ¿Cuál de las siguientes opciones describe mejor qué está mal con el ejemplo anterior?



R! C.

 

Este error probablemente fue bastante simple de detectar, porque imprimimos el valor de final_time Y es fácil ver que los números se concatenaron juntos en lugar de agregar.

Entonces, ¿qué hacemos sobre el problema? Tendremos que convertir ambos current_timey wait_timea int. En esta etapa de su desarrollo de programación, puede ser una buena idea incluir el tipo de variable en el nombre de la variable en sí. Así que veamos otra iteración del programa que hace eso y la conversión a Integer. 

>>current_time_str = input("What is the current time (in hours 0-23)?")
>>wait_time_str = input("How many hours do you want to wait")

>>current_time_int = int(current_time_str)
>>wait_time_int = int(wait_time_str)

>>final_time_int = current_time_int + wait_time_int
>>print(final_time_int)

 

Ahora, eso es mucho mejor y, de hecho, dependiendo de las horas que elija, puede ser exactamente correcto. Si ingresaste 8 para current_time y 5 para wait_time Entonces 13 es correcto. Pero si ingresó a las 17 (5 pm) para current_time y 9 para wait_time entonces el resultado de 26 no es correcto.

Esto ilustra un aspecto importante de las pruebas : es importante probar su código en una variedad de entradas. Es especialmente importante probar su código en condiciones de contorno . Para este problema en particular, debe probar su programa con current_time de 0, 23, y algunos valores en el medio. Deberías probar tu wait_time para 0, y algunos valores más grandes. ¿Qué pasa con los números negativos? Los números negativos no tienen sentido, y dado que realmente no tenemos las herramientas para lidiar con decirle al usuario cuando algo está mal, todavía no nos preocuparemos por eso.

Entonces, para tener en cuenta aquellos números que son más grandes que 23, necesitamos un paso final: usar el operador de módulo. 

>>current_time_str = input("What is the current time (in hours 0-23)?")
>>wait_time_str = input("How many hours do you want to wait")

>>current_time_int = int(current_time_str)
>>wait_time_int = int(wait_time_str)

>>final_time_int = current_time_int + wait_time_int

>>final_answer = final_time_int % 24

>>print("The time after waiting is: ", final_answer)


Por supuesto, incluso en esta simple progresión, hay otras formas en que podrías haberse extraviado. Veremos algunos de esos y cómo los rastrea en la siguiente sección.



No hay comentarios.:

Publicar un comentario

Entradas recientes

Python. Teoria de tipos de datos. Aprende con Alf

  Tipos de Datos Primitivos Simples Tipos de datos primitivos simples Números (numbers): Secuencia de ...

Entradas Populares