uControl
Febrero 24, 2017, 11:49:31 *
Bienvenido(a), Visitante. Por favor, ingresa o regístrate.
¿Perdiste tu email de activación?

Ingresar con nombre de usuario, contraseña y duración de la sesión
 
   Inicio   Ayuda Buscar Ingresar Registrarse  
Páginas: [1]   Ir Abajo
  Imprimir  
Autor Tema: Duda con codigo soy novato en Python  (Leído 449 veces)
0 Usuarios y 1 Visitante están viendo este tema.
Mando31
Amigo de uControl
PIC12F
******
Desconectado Desconectado

Sexo: Masculino
Mensajes: 355



WWW
« : Octubre 15, 2016, 09:32:54 »

Buen día compañeros.

Después de estar algo alejado me doy un poco de tiempo para volver a la electrónica y programación.

En estos días vi un código en Python (del que prácticamente soy nuevo) que en muy pocas lineas realizaba un trabajo que en otro lenguaje hubiera ocupado mas lineas, pues leyendo el código noto una función y al realizar una ejecución linea a linea noto como uno de los argumentos pasa de ser digamos 5 a 4 sin que exista una sentencia que realice la resta y otras cosas similares, como si al retornar un False el código se hubiera ido a una iteracion anterior, dejo un fragmento del código para ver si alguno que tenga mayores conocimientos en Python pudiera sacarme de esta duda que espero sea clara. (La duda es como pasa de estar en la iteracion 5 a la iteracion 4 que se puede observar al ver el valor de depth, el cual al ser 5 entra al if se verifica y al no ser True pasa a la sentencia return False y al continuar el código el argumento depth de ser 5 pasa 4 así como obtiene un estado previo la variable rest[0])

Código:
arr = [[650,460,590,-520,-640],[360,400,420,-340,-420],[270,310,180,-260,-330],[130,60,210,-70,-130],[40,30,30,-40,-10]]
TARGET = 140

def visit(total, chosen, rest, target, depth):
        if depth == 5:
                if total == target:
                        print(chosen)
                        return True
                return False
        picks = rest[0]
        for pick in picks:
                res = visit(total+pick, chosen+[pick], rest[1:], target, depth+1)
                if res:
                        return True

first = arr[0]
for pick in first:
    res = visit(pick,[pick],arr[1:],TARGET,1)
    if res:
        break

Saludos.
En línea

La ingenieria mecatrónica es mi pasión, mi motor, mi vida.
My website: Todo Para Mecatronica, Tutoriales, Cursos y +
Páginas: [1]   Ir Arriba
  Imprimir  
 
Ir a:  

Impulsado por MySQL Impulsado por PHP Powered by SMF 1.1.21 | SMF © 2011, Simple Machines
SMFAds for Free Forums
XHTML 1.0 válido! CSS válido!
Página creada en 0.061 segundos con 24 consultas. (Pretty URLs adds 0.004s, 2q)
loggkey