significa retorno que procedimientos none lista guardar funciones español ejemplos con comando python function recursion return

retorno - que significa none en python



¿Por qué mi función devuelve None? (4)

Creo que deberías usar while while loops .

if my_var! = "a" y my_var! = "b": print "No escribió /" a / "o /" b / ". Inténtelo de nuevo." print "" return Dat_Function ()

Considere que escribe algo diferente a "a" y "b", por supuesto, llamará a Dat_Function pero luego Dat_Function la siguiente parte. Cual es:

else: imprime my_var, "-desde Dat_Function" devuelve my_var

Y irá directamente a:

def main (): print Dat_Function (), "-Desde main ()"

Entonces, si usas while loop como:

while my_var! = "a" y my_var! = "b": print (''no escribiste a o b'') devuelve Dat_Function ()

De esta manera, creo que puedes manejarlo.

Esta puede ser una pregunta fácil de responder, pero no puedo hacer que funcione este sencillo programa y me está volviendo loco. Tengo este pedazo de código:

def Dat_Function(): my_var = raw_input("Type /"a/" or /"b/": ") if my_var != "a" and my_var != "b": print "You didn''t type /"a/" or /"b/". Try again." print " " Dat_Function() else: print my_var, "-from Dat_Function" return my_var def main(): print Dat_Function(), "-From main()" main()

Ahora, si ingreso solo "a" o "b", todo está bien. El resultado es:

Type "a" or "b": a a -from Dat_Function a -From main()

Pero, si escribo algo más y luego "a" o "b", obtengo esto:

Type "a" or "b": purple You didn''t type "a" or "b". Try again. Type "a" or "b": a a -from Dat_Function None -From main()

No sé por qué Dat_Function() está devolviendo None , ya que solo debería devolver my_var . La instrucción print muestra que my_var es el valor correcto, pero la función no devuelve ese valor por algún motivo.


Devuelve None porque cuando lo llama recursivamente:

if my_var != "a" and my_var != "b": print "You didn''t type /"a/" or /"b/". Try again." print " " Dat_Function()

..no devuelves el valor.

Entonces, mientras ocurre la recursión, el valor de retorno se descarta, y luego caes al final de la función. Si se cae al final de la función, Python devuelve implícitamente None , como este:

>>> def f(x): ... pass >>> print(f(20)) None

Entonces, en lugar de simplemente llamar a Dat Function() en su instrucción if , necesita return .


Para devolver un valor distinto de None, debe usar una declaración de devolución.

En su caso, el bloque if solo ejecuta una devolución al ejecutar una rama. Mueva el retorno fuera del bloque if / else, o tenga devoluciones en ambas opciones.


def Dat_Function(): my_var = raw_input("Type /"a/" or /"b/": ") if my_var != "a" and my_var != "b": print "You didn''t type /"a/" or /"b/". Try again." print " " return Dat_Function() else: print my_var, "-from Dat_Function" return my_var def main(): print Dat_Function(), "-From main()" main()