es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Obteniendo None al invertir una lista en Python

El código es bastante fácil pero está devolviendo ‘None’, no sé por qué. ¿Alguien puede corregir mi código, por favor?

def rev(x):
    global y
    if len(x)==0:
        return y

    else:
        y=y+[x[-1]]
        x.pop(-1) #Remover el último elemento de la lista
        rev(x)

z=[1,2,3]
y=[]
print(rev(z))
Tags:  , ,

Answer

  1. Avatar for davy.ai

    El problema con este código es que, aunque la lista ‘y’ se actualiza correctamente dentro de la función, la función en sí misma no está devolviendo nada. Por lo tanto, cuando llamas a print(rev(z)), está imprimiendo ‘None’.

    Para solucionar esto, necesitas agregar una declaración ‘return’ al final de la función para devolver la lista actualizada ‘y’ una vez que la recursividad esté completa. Aquí está el código corregido:

    def rev(x):
        global y
        if len(x) == 0:
            return y
    
        else:
            y = y + [x[-1]]
            x.pop(-1)  # Eliminar el último elemento de la lista
            return rev(x)
    
    z = [1, 2, 3]
    y = []
    print(rev(z))
    

    Con esta modificación, el código debería imprimir ahora la lista invertida [3, 2, 1].

Comments are closed.