Siéntete en la libertad de compartir nuestros tutoriales y códigos en tus redes sociales, danos de tu ayuda para hacer crecer esta comunidad.
Solución:
En el caso de que sCheck == True
es falsetu no return
cualquier cosa. Y en Python, una función que no explícitamente return
cualquier cosa vuelve None
.
Si intentabas llamarte recursivamente a ti mismo y devolver el resultado, querías esto:
return falseChecker(binList, r, c, size)
La línea recursiva:
falseChecker(binList, r, c, size)
necesita ser
return falseChecker(binList, r, c, size)
o la función recursiva termina, y la función externa sigue adelante ya que aún no ha regresado. Luego termina sin volver, y así vuelve. None
.
Tu necesitas un return
al final de falseChecker
:
def falseChecker(binList, r, c, size):
sCheck = isSpaceFree(binList, r, c, size)
if sCheck == True:
for x in range(c, c+size):
for y in range(r, r+size):
binList[x][y] = size
return binList
else:
c += 1
if c > len(binList):
c = 0
r += 1
if r > len(binList):
return binList
#################################
return falseChecker(binList, r, c, size)
#################################
En Python, las funciones regresan None
por defecto si llegan al final de sí mismos sin volver. Además, cuando falseChecker
se ejecuta por primera vez, si sCheck
es False
entonces ejecutará el else
bloquear. Este bloque de código no contiene un return
. Debido a esto, el valor final de retorno de falseChecker
estarán None
.
Puedes sustentar nuestro cometido fijando un comentario y puntuándolo te lo agradecemos.