我试图在python 3中创建一个函数来计算0和1的列表中的1的数量,但它需要递归而不使用和函数。有人可以解释为什么这个功能不起作用吗?
def count_ones(s):
if len(s) == 0:
return 0
elif s[0] == 1:
return 1 + count_ones(s[1:])
elif s[0] == 0:
return 0 + count_ones(s[1:])
当我插入count_ones([1, 0, 0, 1, 1])
时,我得到了
TypeError: unsupported operand type(s) for +: 'int' and 'list'
答案 0 :(得分:0)
您的基本案例需要处理单个元素。因此,如果您只有一个元素,请将其转换为int
并返回该值。
def count_ones(l):
if len(l) == 1:
return int(l[0]) # Return int value 1 or 0
else:
return int(l[0]) + count_ones(l[1:])
测试
>>> count_ones([1,0,0,1,1])
3