Hola, estaba buscando algoritmos motivacionales y encontré uno y le hice una leve modificación, me puse a hacer unas pruebitas con él pero como es un bucle infinito (se supone) muchas pruebas no se pueden hacer, en el futuro quien sabe me haría un tatuaje con algo similar pero depende de cómo se den las cosas en mi vida y el mundo laboral xD
El codigo es de Python, mi duda surge con la funcion tryAgain(), como lo veo yo es que sería una funcion que retornaria la variable success pero con valor True, la duda es si es o no necesario declarar una variable para que reciba el valor retornado por la funcion, o si no es necesario porque quedaria en memoria el valor retornado, que es cómo se planteo este algoritmo, donde basta con la funcion tryAgain() para que el valor de "success" pueda ser modificado y el if lo evalue a ver si es True luego del intento, en otras palabras estoy analizando el sentido de este algoritmo jaja
while not success:
dontGiveUp+=1
tryAgain() #tiene sentido asi la funcion, sin una variable que reciba el retorno?
if success: #no deberia haberse retornado el valor de tryAgain() en "success"
improve()
Saludos, feliz feriado :)
Hola!
Deberías asignar a success el resultado de tryAgain. Ahora, el problema con tu algoritmo es que, ni bien success sea true, vas a llamar a improve() 1 sola vez y el bucle terminará. En otras palabras, sólo prodrás mejorar 1 sola vez... :)
Te propongo el siguiente algoritmo:
alive = True
while alive:
dontGiveUp += 1
success = tryAgain()
if success:
improve()
alive = yourStillKicking()
Saludos!
hola :
partamos de la base que en este código nada tiene sentido:
while not success: # no hay nada declarado previamente.
dontGiveUp+=1
tryAgain() #tiene sentido asi la funcion, sin una variable que reciba el retorno?
if success: #no deberia haberse retornado el valor de tryAgain() en "success"
improve()
ahora bien, supongamos que vemos el código un poco más completo:
#-*- coding: utf -8 -*-
success = False #sino la declaras no hay forma de usarla
def tryAgain(): #la desconocida función
global success
success = True
return success
dontGiveUp = 0 #otra variable a declarar sino ¿cómo la incrementas?
while not success:
dontGiveUp+=1
tryAgain() #si tiene sentido, la variable ya fue declarada
if success: #ahora es True
improve()