Error "object of type 'NoneType' has no len()" en funcion recursiva
Publicado por Jaume Sanchez (2 intervenciones) el 02/12/2011 21:08:09
Hola, estoy haciendo una función recursiva de divide y vencerás que ordena una lista de numeros por negativo y positivo, ej: [1,-9,3,2,-4,-2] --> [-9,-4,-2,1,3,2]
el código es el siguiente:
el caso es que me da este error:
He probado de hacer cada paso de la recursion por separado y funciona bien.
Alguien sabe que he hecho mal?
el código es el siguiente:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
def negpos(n,p,v):
if ((len(n)+len(p)) == len(v)):
return n+p
else:
if (v[len(n)+len(p)]<0):
return negpos(n.append(v[len(n)+len(p)]),p,v)
if (v[len(n)+len(p)]>0):
return negpos(n,p.append(v[len(n)+len(p)]),v)
def programa(v):
n = []
p = []
negpos(n,p,v)
programa([1,-9,3,2,-4,-2])
el caso es que me da este error:
1
2
3
4
5
6
7
8
9
10
Traceback (most recent call last):
File "C:/Users/Jaume/Desktop/montra.py", line 15, in <module>
programa([1,-9,3,2,-4,-2])
File "C:/Users/Jaume/Desktop/montra.py", line 13, in programa
negpos(n,p,v)
File "C:/Users/Jaume/Desktop/montra.py", line 8, in negpos
return negpos(n,p.append(v[len(n)+len(p)]),v)
File "C:/Users/Jaume/Desktop/montra.py", line 2, in negpos
if ((len(n)+len(p)) == len(v)):
TypeError: object of type 'NoneType' has no len()
He probado de hacer cada paso de la recursion por separado y funciona bien.
Alguien sabe que he hecho mal?
Valora esta pregunta


0