Listas y Funciones: 16 Contar lista tamaño arbitrario


#1

https://www.codecademy.com/es/courses/python-beginner-en-wQyhJ/3/4?curriculum_id=50fc7aab5fab3aa9c2002444#

Queridos,

Les comento que estoy realizando esto de dos maneras distintas, en las cuales obtengo el mismo resultado a la hora de hacer el print, y el resultado obtenido no es el correcto.
Lo más extraño es que de una manera me lo aprueba y de la otra no, a pesar de no ser correcto el resultado.

l = range(0,5)

def myFun(x):
    for i in x:
        i = i + i
    print i
   
print myFun(l)
print range(0,5)

Cuando lo hago de esta manera arroja el siguiente error:

¡Uy! Probá otra vez. Parece que myFun no devuelve la suma de los elementos de una lista.

Si lo hago de este modo me lo aprueba pero me da el mismo resultado, que no es la suma de todos los elementos de la lista:

def myFun():
    for i in range(0,5):
        i = i + i
    print i
    
print myFun()
print range(0,5)

No comprendo por qué de ninguno de los dos modos obtengo el resultado correcto que sería 10 y porqué uno lo aprueba y el otro no.

Gracias!


#2

Necesitas usar una variable diferente en lugar de i.

por ejemplo:
x = i + i


#3

Hola,

Hago lo que me decís y da los mismos resultados:

b=range(0,5)

def myFun(x):
    for i in x:
        f = x[i] + x[i]
    return f

print myFun(b)
print range(0,5)

15
8
[0, 1, 2, 3, 4]
None


#4

Lo siento,

Debe tener un aspecto como este:
for i in x:
f = f + i
return f


#5

Excelente,
te paso como quedo explicado por si a alguno le sirve :slight_smile:

Gracias!

n = [3,5,7]
count = n[0] + n[1] + n[2]
print count

def myFun(x):
    f = 0 #declaro la variable f = a 0 antes de comenzar el bucle
    for i in x:
        f = f + i #ahora si le digo que sume en bucle a lo largo de toda la lista cada elemento "i" a F que originalmente es 0 
    return f

print myFun(n)