A煤n no tienes acceso a esta clase

Crea una cuenta y contin煤a viendo este curso

Debugging

14/21
Recursos

Aportes 110

Preguntas 28

Ordenar por:

驴Quieres ver m谩s aportes, preguntas y respuestas de la comunidad? Crea una cuenta o inicia sesi贸n.

Si usas otro editor y no quieres tener que usar VS Code por alg煤n motivo Python tiene un paquete preinstalado llamado pdb que se puede usar para hacer debuggin, en resumen y lo que yo uso mucho sobre todo cuando desarrollo con Flask o Django (Frameworks para desarrollo web usando Python) uso la siguiente l铆nea de c贸digo para hacer un breakpoint en el c贸digo

import pdb; pdb.set_trace() 

Puedes preguntarte al ver esta linea 馃槺 Punto y coma en python鈥 pues si mi amigo se pueden usar y sirven para decirle cuando termina una l铆nea de c贸digo y sigue otra, pero en la misma l铆nea

Eso lo que va a hacer es que cuando llegue a esto te liberara 茅l tu consola una terminal interactiva para poder consultar tus variables y dem谩s; para salir de la consola debes escribir la letra c y luego un enter

Documentacion de pdb

Muy buena clase, muchas veces con este tipo errores los resolv铆a ejecutando esa pieza de c贸digo que estaba mal en papel y l谩piz, de forma manual, para saber que valores tomaban mis variables y ver donde no estaba funcionando como yo quer铆a.

Nunca imagine que existiera algo as铆, sin duda me va a servir mucho de ahora en adelante.

Debugging:

  • O depuraci贸n es una herramienta que traen varios editores de c贸digo con el objetivo de solucionar nuestros errores de l贸gica. Revisemos la herramienta debugging de VSCode
  • En este entorno podemos acceder a funcionalidades como:
    • pause 鈫 permite pausar la ejecuci贸n del programa
    • step over 鈫 permite avanazr un solo paso en el programa
    • step in 鈫 igresamos a un bloque secundario del programa (funciones)
    • step out 鈫 salimos del bloque secundario
    • restart 鈫 reinicia el programa
    • stop 鈫 detiene el programa
  • Adem谩s podemos generar breakpoints, que son puntos en los que el programa se detendr谩 para ayudarnos a depurar el c贸digo

Nota:

  • Existen herramientas de debugging propias de python como el m贸dulo pdb o los breakpoints (a partir de python 3.7)

Pueden crear un atajo en VS code de la funci贸n run y el if para no tener que escribir toda la estructura b谩sica sino que el editor te lo ponga directamente de la siguiente manera:

  • Abres una nueva terminal en VS code (Terminal-> New Terminal)
  • Dentro de la consola presionan el shortcut (Ctr + Shift + P)
  • El anterior comando los lleva a la barra de b煤squeda con el s铆mbolo > (en caso de que no se los ponga el editor, lo ponen ustedes), ah铆 escriben: Snippets
  • Seleccionan la opci贸n que dice: Preferences: Configure User Snippets
  • Al seleccionar esa opci贸n les aparecer谩n todos los lenguajes que soporta VS code y escriben: python y seleccionan la opci贸n que les salga
  • Al seleccionarla se les abrir谩 un documento python.json
  • Dentro del archivo, despu茅s de los comentarios que hay, ponen este c贸digo:
"Insertar formato de entrada":{
	"prefix": "_run",
	"body": [
		"def run():",
		"    $0",
		"",
		"",
		"",
		"if __name__=='__main__':",
		"    run()"
			
	],
	"description": "Add the entring point"
}

Se debe ver as铆:

Yo le puse como 鈥減refix鈥: 鈥淿run鈥, pero ustedes le pueden poner el que deseen, ese va a ser el atajo con el que van a llamar el fragmento de c贸digo.

  • Guardan el archivo

Y ya, de ah铆 en adelante solo ponen en los archivos .py: _run y les sale esa estructura para que les ahorre tiempo 馃槃, as铆 se ver铆a en el archivo .py:


Y pueden hacer as铆 tanto de forma global como para cada lenguaje de la misma manera.

mi aporte con list comprehension

def divisors(num):
    divisors = [i for i in range(1, num +1) if num % i == 0]
    return divisors

def run():
    num = int(input('Ingresa un numero: '))
    print(divisors(num))
    print("Termino")

if __name__ == '__main__':
    run()

divisors = lambda num: [x for x in range(1, num + 1) if num % x == 0]

鉁 El debugging nos permite detectar errores de nuestros proyectos.

Y yo haciendo debugging a mano con papel y calculadora o excel. Que buena herramienta ofrece Visual Studio Code, definitivamente la empezar茅 a usar.

C贸digo con list comprehension:

def divisors(num):
    divisors = [i for i in range(1, num + 1) if num % i == 0]
    return divisors

C贸digo con high order function y lambda:

def divisors(num):
    divisors = list(filter(lambda i: num % i == 0, range(1, num +1)))
    return divisors

Debugging.

  • Una de las t茅cnicas para resolver errores de l贸gica es debugging o depuraci贸n. VSCode tiene esto como una de sus funcionalidades. 馃憖
  • Cuando hacemos debugging, podemos poner pausa a nuestro programa e ir l铆nea por l铆nea viendo que sucede. Podemos avanzar en las l铆neas de c贸digo y, en caso que estemos sobre una l铆nea que llama una funci贸n, podemos optar por entrar en esta 馃く.
  • Existen break points o puntos de quiebre 馃洃 que nos sirve para detener nuestro programa en un punto espec铆fico, donde creamos que nuestro programa falla.

10 minutos para darme cuenta que el error estaba en el indentado

Si est谩s usando PyCharm, simplemente debes de dar clic derecho sobre el archivo que est谩s manejando y selecionar la opci贸n de Debug y posteriormente estas ser铆an las funciones de las que se hablaba en la clase:
.

.

Profesor digno de una de las mejores universidades, Platzi le acert贸 al elegir a Facundo como profesor, y aun mas al asignar que ense帽e algo que a muchos les suele resultar complicado y frustrante en algunas situaciones si no se ense帽a con claridad

Utilizo VSCode para programar. Sin embargo, tengo compa帽eros de trabajo que utilizan PyCharm y tienen un debugger para Python superior al de Code.

Si utilizas VS code puedes ir a ajustes (barra izquierda abajo) , User Snippets y buscar el archivo llamado python.json, ah铆 puedes pegar esto dentro de las llaves:

"base": {
	"prefix": "py:base",
	"body": [
		"def run():",
		"  pass",
		"",
		"",
		"if __name__ == '__main__':",
		"  run()"
	]
}
			

Guardas el archivo y ahora cuando vayas a comenzar a crear un nuevo archivo de python puedes tener la estructura base con el siguiente comando: py:base. Adem谩s puedes crear tus propios snippets dentro de ese mismo archivo.

VS code nos resalta con color amarillo, en d贸nde est谩 parado nuestro programa (si le pusimos pausa) por lo que, en caso de ser una funci贸n, la l铆nea en d贸nde se encuentra parada nuestra ejecuci贸n entonces, podemos revisar con m谩s detalle aquella funci贸n.

Debugging: Es una herramienta que traen por defecto los editores de codigo tal como Vscode, su funcion es dar nos la salida a un problema en el caso de que python no nos diga el error que estamos teniendo en nuestro codigo, generalmente los que se presentan son llamados errores de logica.

Python tutor nos permite ver paso a paso como se comporta el c贸digo y ir viendo los cambios en funciones y variables para llevar seguimiento de los programas, le colocare un acortador por que la web no cuenta con SSL

https://bit.ly/3glWX3L

Debuggin

Resolver errores de l贸gica. La mejor t茅cnica para arreglar esto hay una t茅cnica que se llama debuggin.
notas:

  • por lo general se usa el debbugin de vs code, seleccionamos pausa y podemos navegar en nuestro c贸digo

breakpoints

A la izquierda del VS code le podemos hacer un click para colocarle un punto rojo. Significa que cuando corramos el debugger, se va a cortar donde dejamos el punto

Esta clase fue maravillosa. Dejo mis apuntes y el c贸digo con list comprehension.

<h4>Debugging</h4>

O depuraci贸n, en espa帽ol.

Al hacer debugging tenemos los botones de:

  • Pausa -> Detiene el programa
  • Paso siguiente -> Vamos a la siguiente l铆nea de c贸digo
  • Meternos -> Nos vamos a meter a la funci贸n de la l铆nea del c贸digo, vamos a tener m谩s detalels de lo que est谩 pasando
  • Salir -> Salimos de la l铆nea de c贸digo
  • Reiniciar -> Reiniciamos el programa
  • Detener -> Salimos de la depuraci贸n

C贸digo:

def divisors(num):
  divisors = [i for i in range(1, num+1) if num % i == 0]
  return divisors

def run():
  num = int(input("Inserta un n煤mero: "))
  print(divisors(num))
  print("Termin贸 el programa")


if __name__ == '__main__':
  run()

Adjunto tambi茅n una foto de mi VS Code:

Con list comprehension el c贸digo ser铆a el siguiente:

Antes para detectar los errores o el funcionamiento interno del c贸digo usaba el print statement. Ahora con esto, creo que las cosas pueden ser m谩s sencillas! 鉂わ笍

Al fin se para qu茅 eran esos un punticos al lado del n煤mero de l铆nea en VSCode jajaja

Que interesante es el debugging. Es como ser un detective pero de tu c贸digo. Pienso que podemos adaptar de alguna manera el algoritmo de b煤squeda binaria al momento de seleccionar los breakpoints y as铆 aproximarnos a donde se encuentra nuestro error. Creo que esta idea tambi茅n la comenta el profesor David Aroesti en el curso de POO y Algoritmos con Python.

驴Qu茅 piensan?

Gracias, siempre me preguntaba para que funcionaba esa herramineta en vs y hoy fue el dia en el que aprendi a utilizarla y vaya que si es increible! 馃馃榿馃憤

Que excelente caracter铆stica de visual studio code, antes usaba un editor llamado thony el cual es para aprender python desde cero y lo que me parec铆a interesante de este editor es que tiene una opci贸n para ejecutar l铆nea por l铆nea nuestro c贸digo y tambi茅n va mostrando los valores de las variables, ahora que se que visual studio code tiene esta misma caracter铆stica voy a cambiar por completo de editor 馃挌

VS code, te permite hacer un buen debugging, sin embargo hay que saberlo manejar. Debido a que sus herrmienttas tambi茅n tienen una vida propia. Siempre que quieras parar el codigo en una parte, le das al bot贸n de pausa. Luego de eso, puedes utilizar lo dem谩s botones.

El panel izquierdo de VS Code, est谩 a la mano, para ver las variables y sus valores (tanto locales como globales)

Cu谩ndo tenemos claro d贸nde puede estar fallando nuestro c贸digo, podemos tambi茅n hacer que VS code, pare la ejecuci贸n del programa justo en d贸nde le hayamos indicado.

No es de Python, pero se entiende

Cuando estaba copiando el c贸digo que hac铆a el profesor me pareci贸 raro que escribiera if num%==1, as铆 que lo cambi茅 y me estaba explotando la cabeza que lo pusiera as铆 pensando que tal vez yo estaba mal al no entender su l贸gica xD

Hasta que el profesor record贸 que lo hab铆a hecho mal a prop贸sito y mi mundo se ilumin贸 xD

def divisors (num):
divisors = [i for i in range (1, num +1) if num % i == 0]
return divisors

num = int(input('ingresa una wea, o te pego: '))
print(divisors(num))
print(鈥榸zzzzzz鈥)

<def divisors (num):
    divisors = [i for i in range (1, num +1) if num % i == 0]
    return divisors

num = int(input('ingresa una wea, o te pego: '))
print(divisors(num))
print('zzzzzzz')> 
<def divisors(num):
    divisors = [i for i in range(1, num + 1) if num % i == 0 ]
    return divisors

def run():
    num = int(input("inggrese n煤mero: "))
    print(divisors(num))
    print('Finaliz贸 programa')

if __name__ == '__main__':
    run()> 

El ejemplo implementado con list comprehenson.

def divisors(num):
    divisors=[i for i in range(1, num + 1) if num % i ==0]
    return divisors
def run():
    num = int(input("ingresa un numero: "))
    print(divisors(num))
    print("Termino")
if __name__=='__main__':
    run()
def divisor(num):
    divisor = [i for i in range(1,num+1) if num % i == 0]
    return divisor
  
    # for i in range(1,num+1):
    #     if num % i == 0:
    #         divisor.append(i) 
    # return divisor

def main():
    num = int(input('Ingresa un n煤mero: ')) 
    print(divisor(num))


if __name__ == '__main__':
    main()

def divisors(num):
    divisors=  [i for i in range(1,num+1) if num % i == 1]
    return divisors


def run():
     num= int(input('Write a number: '))
     print(divisors(num))

if __name__ == '__main__':
    run()

Hola compa帽eros.
Esta clase de depuraci贸n estuvo genial!
Esto de ver el ver paso a paso como se comporta el c贸digo y tambi茅n poder ver los cambios en funciones y variables para llevar seguimiento de los programas es fant谩stico.
Correr en programa no en papel, sino con lo aprendido en esta clase de Debugging

Excelente

def divisors(num):
    divisors = []
    for i in range(1, num +1):
        if num % i == 0:
            divisors.append(i)

    return divisors

def divisors_comp(num):    
    divisors = [i for i in range(1, num + 1) if num % i == 0]
    return divisors


def run():
    num = int(input("Ingresa un numero: "))
    print(divisors_comp(num))
    print("Termino el programa..")



if __name__ == '__main__':
    run()

Para los que estamos practicando con Jupyter Notebook en VSCode, debemos de exportar el notebook a script para poder hacer uso del Debugging. En mi c贸digo pongo c贸mo ser铆a en high order function, list comprehension y appendiendo una lista con for.

def divisors(num):
    myrange = range(1, num + 1)
    divisors = list(filter(lambda x: num % x == 1, myrange))
    # divisors = [x for x in myrange if num % x == 1]
    # divisors = []
    # for i in myrange:
    #     if num % i == 1:
    #         divisors.append(i)
    return divisors


def run():
    num = int(input('Choose a number: '))
    print(divisors(num))
    print(f'Program runned properly')    

if __name__ == '__main__':
    run()

Puede ser dif铆cil darse cuenta c贸mo el c贸digo est谩 causando un bug. Las l铆neas de c贸digo se ejecutan r谩pidamente y los valores en las variables cambian frecuentemente. Un depurador es un programa que te permite correr tu programa una l铆nea de c贸digo a la vez en el mismo orden que Python. En depurador tambi茅n muestra en cada paso cuales son los valores almacenados en las variables.

Es bastante interesante, hasta hace poco usaba los prints para saber que estaba sucediendo, ahora me agrada mas esto, siento sera m谩s sencillo de encontrar un error que usando un print jajaj

Debugging en Jupyter Notebook

Para los que usamos Jupyter Notebook, podemos usar el comando %debug para la depuraci贸n en una celda nueva.
Podemos escribir 鈥渘鈥 para la siguiente l铆nea de c贸digo (next). Escrbir 鈥渃鈥 para llegar al siguiente breakpoint (continue). Escribir 鈥渜鈥 para salir de la depuraci贸n (quit).

Breve resumen:

Reference:

Debugging

Excelente profesor, @Facundo Garc铆a Martoni, que buena pedagogia. Que pasion con la que ense帽as. Gracias

Esta herramienta esta genial para ver el estado de las variables cada momento!

Es muy similar al uso de python tutor (Cuando trabajamos en google colab). Excelente explicaci贸n profesor

Comparto este v铆deo para usar el depurardor PDBPP 馃槂
https://www.youtube.com/watch?v=VJN8R_my7WY

Esta muy interesante se los recomiendo XD

El debugger de vscode para proyecto Django es fenomenal ya que te permite conocer todas la variables solo pasar el mouse por ella. Y es mas f谩cil detectar los errores

Interesante este tema que se explique a profundidad yo en particular utilizo pudb, que es una consola grafica que te ayuda a depurar con mas facilidad,

Se hace con

import pudb;pudb.set_trace()

Bendiciones

No sab铆a cuan 煤til era el debugging

divisors con list comprehensions

divisors = [i for i in range(1, num + 1) if num % i == 0]

lo pude hacer asi,

def divisors(num):
    divisors = [i for i in range(1,num +1) if num % i == 0]
        
    print(divisors)

def run():
    num = int(input("escribe un numero: "))
    print(divisors(num))

if __name__=='__main__':
    run()
def divisors(num):

    divisors = [i for i in range(1, num+1) if num % i ==0]
    #for i in range(1, num+1):
     #   if num % i ==0:
            #divisors.append(i)

    print(divisors)


def run():

    num = int(input("Ingresa un numero: "))
    print(divisors(num))
    print("Termino mi programa")


if __name__ == '__main__':
    run()

"Mi aporte con filter"

def run():
    num = int(input('ingresa un numero: '))
    divisors = list(filter(lambda i: num % i ==0, range(1,num+1)))
    print(divisors)
    print('termino mi programa')


if __name__ == '__main__':
    run()

uff, excelente clase,

Buena clase鈥 yo tambien hacia prints de variables jejje

me ayudo mucho el debuger cuando esta haciendo filtros con imagenes

En Visual Studio Code, el editor de texto que vamos a utilizar, para poder depurar un programa en Python se necesita instalar el plugin correspondiente.

Una vez instalado este plugin, vamos a la opci贸n Debug, que se encuentra en la columna izquierda de Visual Studio Code, as铆 podemos empezar a depurar nuestro programa.

Si el programa a depurar es muy grande, tal vez no nos interese realizar la traza desde el principio, por lo que podemos indicar en qu茅 instrucci贸n empezar la depuraci贸n. De esta forma creamos un breakpoint o un punto de ruptura, con el que conseguimos que cuando la ejecuci贸n llegue a esa instrucci贸n, se pare y empiece a hacer la depuraci贸n.

En este ejemplo vamos a depurar este programa:

#!usr/bin/env python3
#Crea una funci贸n 鈥淐alcularMaxMin鈥 que recibe una lista con valores num茅ricos u
#devuelve el valor m谩ximo y el m铆nimo. Crea un programa que pida n煤meros por
#teclado y muestre el m谩ximo y el m铆nimo, utilizando la funci贸n anterior.
#A continuaci贸n pide un n煤mero (entre 1 y 100) y el programa debe decir si est谩 en la lista
import random
def CalcularMaxMin(lista):
	return max(lista),min(lista))


numeros = []
#Inicializo la lista con valores aleatorios
for i in range(10):
	numeros.append(random.randint(1,100))
vmax,vmin = CalcularMaxMin (numeros)
print(鈥淓l valor m谩ximo es 鈥,vmax)
print(鈥淓l valor m铆nimo es 鈥,vmin)

numero = int(input(鈥淒ime un n煤mero del 1 al 100:鈥))
while numero<0 or numero>100:
	print(鈥淓l n煤mero debe estar entre 1 y 100鈥)
	numero = int(input(鈥淒ime un n煤mero del 1 al 100:鈥))

if numero in numero:
	print(鈥淓l n煤mero est谩 en la lista鈥)
elsa:
	print(鈥淓l n煤mero no est谩 en la lista鈥)

Marcamos un breakpoint en la l铆nea n煤mero 11 y pulsamos el bot贸n Start debugging para comenzar la depuraci贸n.

Podemos ver que el programa resalta en color la pr贸xima instrucci贸n que se va a ejecutar. Al mismo tiempo observamos que en la parte superior izquierda nos muestra los valores de las variables con las que estamos trabajando.

A continuaci贸n ejecutamos la siguiente instrucci贸n, pulsando la opci贸n Step Into o la tecla F11, observamos que se ha creado la variable 鈥渘umero鈥 se ha creado y es una lista vac铆a.

Seguimos ejecutando la depuraci贸n con la tecla F11 y vemos que el programa entra en un bucle y se van a帽adiendo n煤meros aleatorios a la lista. En la ventana de Variables vemos que la variable numeros va cambiando, y tambi茅n su longitud, lo que podemos ver en la ventana Watch.

Como podemos comprobar es una forma muy sencilla de ver qu茅 instrucciones se est谩n ejecutando, adem谩s de poder ver en cualquier momento los valores de las variables.

En cualquier momento podemos abrir una consola de depuraci贸n, pulsando el icono New Output in Debug Console, que aparece en la parte superior del men煤. Esta consola se abre en la parte inferior de la pantalla, y en la que podemos ejecutar instrucciones Python en el entorno de nuestro programa, es decir, con el valor de las variables y tal como en ese momento est谩 ejecutado.

Por ejemplo, si en la consola de depuraci贸n escribimos la variable numeros, nos muestra el valor actual de la misma.

Tambi茅n podemos hacer instrucciones m谩s complicada, por ejemplo, podemos comprobar si el n煤mero 1 est谩 en la variable n煤meros, escribiendo 1 in numeros.

Si continuamos ejecutando el programa, la instrucci贸n for va a tener diez iteraciones, y cuando termine pasamos a la ejecuci贸n de una funci贸n en la l铆nea 15.

Si estamos seguros que dicha funci贸n funciona correctamente y no necesitemos depurarla, podemos pulsar la opci贸n Step Over o pulsar la tecla F10, y en ese caso se ejecuta la funci贸n pero no se va a depurar.

Si realmente queremos ver c贸mo se ejecuta esa funci贸n, pulsamos F11 y la ejecuci贸n ir铆a la funci贸n, calcular铆a el m谩ximo y el m铆nimo de la lista y nos devolver铆a esos valores.

Esta pr谩ctica es muy recomendable para todo el que est茅 comenzando a programar, para localizar los posibles errores de programaci贸n que se hayan cometido, y adem谩s para aprender c贸mo se ejecutan las instrucciones dentro de nuestro programa.

Si quieres aprender en profundidad Python, puedes hacer el curso de Python 3 desde cero de nuestro profesor Jos茅 Domingo Mu帽oz en el que aprender谩s los fundamentos del lenguaje de programaci贸n Python 3 desde cero, pensado para no programadores que se quieran iniciar en este mundo.

This tools is one o the most important, we will use It a lot

El ejercicio con List comprehension

def divisor(num):
    divisors = [i for i in range(1, num+1) if num%i == 0]
    return divisors

def run():
    num = int(input("Ingrese un numero: "))
    print(divisor(num), "\nTermino el programa")


if __name__ == '__main__':
    run()

馃悰Debugging o Depuraci贸n.
Tambi茅n llamado como debugging 鈥 o en espa帽ol depuraci贸n -, es el nombre que se le da al proceso de encontrar y eliminar los errores que pueden cometer softwares y hardwares. El t茅rmino hace parte del proceso de desarrollo desde el inicio, y hay algunos que afirman que este incluso fue creado antes del propio desarrollo web.

Visual Studio Code tiene las siguientes herramientas:

  • En este entorno podemos acceder a funcionalidades como:

    鈴革笍pause 鈫 permite pausar la ejecuci贸n del programa

    馃攤step over 鈫 permite avanazar un solo paso en el programa

    馃斀step into 鈫 igresamos a un bloque secundario del programa (funciones)

    馃敿step out 鈫 salimos del bloque secundario

    馃攣restart 鈫 reinicia el programa

    鈴癸笍stop 鈫 detiene el programa

  • Adem谩s podemos generar breakpoints, que son puntos en los que el programa se detendr谩 para ayudarnos a depurar el c贸digo.

Mis aportes al reto:

def run():
    num = int(input('Ingresa un numero: '))
    result = lambda num: [i for i in range(1, num + 1) if num % i == 0]
    print(result(num))
    print('termino mi programa')

if __name__ == '__main__':
    run()

reto 2

num = int(input('Ingresa un numero: '))
    divisor = list(filter(lambda i: num % i ==0, range(1, num + 1)))
    print(divisor)

Para hacer el ejercicio con list compresension

def divisors(num):
    divisors = [i for i in range(1,int(num/2)+1) if num % i == 0]
    divisors.append(num)
    return divisors


def run():
    num = int(input('Enter a number: '))
    print(divisors(num))
    print('** Run ended **')


if __name__ == '__main__':
    run()
    exit()

No entend铆a correctamente que es hacer debugging. Ahora me qued贸 clarisimo!

Debugging
Es un apoyo para ver en d贸nde tengo un error en mi programa y Python no me avisa.

Grandiosa clase!

Wow, empezare a usar el debugger, antes era pura lectura y escritura a papel

number = int(input("Type a number please: "))
    my_divisors = [i for i in range(1, number + 1) if number % i == 0]
    print(my_divisors)

Chicos al momento de ejecutar el debug en VS me generaba un error, tuve que desinstalar la extension de python y volver a instalarla, as铆 me funcon贸.

El debugging es una manera de depurar nuestro c贸digo para corregir errores.

Lo ideal antes de hacer el debug es leer l铆nea por l铆nea nuestro c贸digo y as铆 encontrar el error.

I love this course!!!

Es buen profesor y explica bien, pero cuando codifica voltea mucho a ver su monitor para ver el borrador del c贸digo

depuraci贸n paso a paso dentro del c贸digo con las herramientas que vienen en vcode

Me parece super bien que ense帽en esto, esto pasa a ser un simple curso de python a un curso m谩s integral para un programador.

Estaba yo casado con Atom, pero aunque existe:
https://www.it-swarm-es.com/es/python/depuracion-python-en-atom/828740555/

Es mejor ir paso a paso con Visual Code.

Ingresa un n煤mero: 3
[2]
Termin贸 mi programa

Muy buena clase!

Buenisimo, yo sol铆a probar el c贸digo de manera manual, c贸mo aprend铆 alguna vez en mi clase de algoritmos. 馃ぃ

def divisors(num):
    return [i for i in range(1,num+1) if num%i==0 ]

Muy 煤til e interesante el uso del Debugger鈥 muy buena herramienta de depuraci贸n.

def divisors(num): return [i for i in range(1, num + 1) if num % i == 0 ]

Me encanta la simpleza de la interfaz de VC y lo bonita que es. Para los que gustan de usar otros editores, Spyder hace debugging muy potente.

馃憣

Hice un breve ejemplo usando una lambda en el que podemos ver la diferencia entre usar y no usar las lambdas:

def divisors(num):
    return [i for i in range(1, num +1) if num % i == 0]

def run():
    obtained_divisors = divisors(int(input("Please type a number: ")))
    print(obtained_divisors)
    print("EOF")

def run_with_lambdas():
    obtained_divisors = lambda num: [i for i in range(1, num +1) if num % i == 0]
    print(obtained_divisors(int(input("Please type a number: "))))
    print("EOF")

if __name__=='__main__':
    # run()
    run_with_lambdas() 

Como conclusi贸n puedo decir que es m谩s f谩cil hacer debugging cu谩ndo se evitan las lambdas. Es decir, podr铆amos decir entonces que las lambdas empeoran la experiencia de mantenibilidad del c贸digo.

Excelente clase y excelente explicaci贸n!

El debugger de VS code es bien detallado, alguien conoce alguno parecido?

Les comparto el peque帽o reto que nos dejo el profe

divisors = [i for i in range(1, num +1) if num%i == 0]

Es la mejor clase de debugging que he recibido. Previamente hab铆a leido la documentaci贸n de Visual Studio Code tambi茅n algunos videos y no hab铆a podido entenderlo. Muchas gracias.

Saben como se puede hacer debugging en un google colab ?

El profe dijo que intentaramos con list comprehension y ademas sirve para numeros negativos:)

def divisors(num):
    divisors = []
    list = []
    if num < 0:
        [list.append(i) for i in range(num,1+num*-1) if i != 0]
        [divisors.append(i) for i in list if  num % i == 0] 
       
    [divisors.append(i) for i in range(1,num+1) if num % i == 0] 
   
    return divisors

def run():
    num = int(input("Ingresa un n煤mero:"))
    print(divisors(num))
    print("Termin贸 mi programa")

if __name__ == '__main__':
    run() 

Excelente explicaci贸n, gracias

驴Qu茅 les parece?

# def divisors(num):
#     divisors = [i for i in range(1, num + 1) if num %  i == 0]
#     return divisors
divisors = lambda num: [x for x in range(1, num + 1) if num % x == 0]
    

def run():
    num = int(input("Ingesa un numero: "))
    print(divisors(num))
    print("Termin贸 mi programa")


if __name__ == '__main__':
    run()

Error de l贸gica.
El programa no hace lo que espero.
Debugging en Vs, como se ejecuta el programa a pasos. Leer cada l铆nea y seguir la l贸gica deseada. Click en la l铆nea deseada para hacer un break en el debug.

def divisors(num):
    return [i for i in range(1, num + 1) if num%i == 0]

El men煤 lateral del debugging en VSC, en mi opini贸n, tambi茅n sirve para analizar el scope de las funciones que programemos 馃槃.

Mi clase favorita del curso , exageradamente util!

Se le desactiv贸 el micr贸fono profe 馃帣