如下:
输入一个嵌套列表,根据层次,求列表元素的加权和。第一层:元素值1,第二层:元素值2 ,以此类推!
输入
[1,2,[3,4,[5,6],7],8]
输出
72
我的做法是
def f(l, p):
s = 0
for i in l:
if type(i) == type(1):
s += i*p
if type(i) == type([]):
p += 1
s += f(i, p)
return s
l = eval(input())
print(f(l, 1))
正确做法是:
def f(l, p):
s = 0
if type(l) == type(1):
s += p*l
if type(l) == type([]):
p += 1
for i in l:
s += f(i, p)
return s
l = eval(input())
print(f(l, 0))
请问这两种做法有什么区别?为什么我把循环写在外面就是错的?