He escrito el siguiente código de Python, pero me está arrojando un error
def myfunc(*args):
mylist = list()
for num in args:
if num%2 ==0:
mylist = mylist.append(num)
return mylist
Me arroja el siguiente error [-2, 4]! = Ninguno.
¿Qué hay de malo con el código anterior?
5 respuestas
Su código tiene un problema de sangría. Funciona bien si lo sangra correctamente. Me gusta esto:
def myfunc(x):
mylist = list()
for num in x:
if num%2 ==0:
mylist.append(num)
return mylist
def myfunc(*args):
mylist = list()
for num in args:
if num%2 == 0:
mylist.append(num)
return mylist
Después de corregir la sangría y eliminar la asignación de mylist
a sí mismo, el código anterior funciona.
mylist = mylist.append(num)
Es una convención en Python que los métodos que mutan el objeto devuelven None
. list.append
es una función de este tipo: agregará un elemento a la lista y luego devolverá None
. Por reasignación, su mylist
se convierte en None
; que obviamente se rompe en la siguiente iteración, ya que None
no se puede agregar.
Cambia la línea a solo
mylist.append(num)
¡prueba esto!
def myfunc(*args):
mylist = []
for arg in args:
if num % 2 == 0:
mylist.append(arg)
return mylist
Asegúrate de llamarlo de esta manera
myfunc(-2, 4)
def myfunc(*args):
mylist = list()
for num in args:
if num%2 == 0:
mylist.append(num)
return mylist
Creo que es porque estás usando .append
de manera incorrecta.
Preguntas relacionadas
Nuevas preguntas
python
Python es un lenguaje de programación multipropósito, de tipificación dinámica y de múltiples paradigmas. Está diseñado para ser rápido de aprender, comprender y usar, y hacer cumplir una sintaxis limpia y uniforme. Tenga en cuenta que Python 2 está oficialmente fuera de soporte a partir del 01-01-2020. Aún así, para preguntas de Python específicas de la versión, agregue la etiqueta [python-2.7] o [python-3.x]. Cuando utilice una variante de Python (por ejemplo, Jython, PyPy) o una biblioteca (por ejemplo, Pandas y NumPy), inclúyala en las etiquetas.