Python:在列表中添加正值

时间:2018-06-02 08:57:14

标签: python list

我不明白我的代码有什么问题。

我正在尝试添加列表的正值。

这是我的代码:

def sam(n):
    for x in n:
        if x > 0:
            return sum(x)

2 个答案:

答案 0 :(得分:2)

您实际上从未创建要添加的值。您每次迭代都会向列表中添加一个值。

只需遍历列表并手动添加:

def sam(n): 
    value = 0
    for x in n:
        if x > 0:
            value += x
    return value

或者你可以在一行中完成:

def sam(n):
    return sum(x for x in n if x > 0)

为了更好的练习,你应该选择更好的变量。更有意义的变量更易于记忆,并使您的代码更具可读性:

因此n可以是num_list(或number_list)。

您可以使用number而不是使用x进行迭代。这告诉您该号码包含一个字母。

答案 1 :(得分:0)

您应该在递归调用中添加一个,并且需要在递归中识别基本因子(终止递归调用的条件)。

你可以试试这个:

def sum(n):
    if(len(n) > 0):
        if(x > 0):
            return x + sum(n[(x+1):])
        else:
            return sum(n[(x+1):])
    else:
        return 0

此处递归调用x + sum(n[(x+1):])在最后进行,因此它也称为尾递归。 并且,每次进行递归调用时,都需要传递列表的其余部分作为参数(这是通过切片列表完成的)。 sum(n[(x+1):])

或者,如果您只想要一种简单的方法来执行此操作而不使用递归,则可以使用迭代方法。为了使这更容易理解,你需要有一个额外的变量来跟踪总和。

所以,你的代码看起来像这样:

def sum(n):
    s = 0
    for x in n:
        if(x > 0):
            s += x
    return s