-1

我需要帮助来创建函数 sumOfPositiveNumbers(li)。返回列表中所有正整数之和的函数,该函数应使用 while 循环。

4

2 回答 2

5
def sumOfPositiveNumbers(li):
    while True:
        return sum(i for i in li if i > 0)

虽然我更喜欢以下函数,因为它不使用 sum,而是仅使用 lambda 表达式

def sumOfPositiveNumbers(li):
   while True:
       return ((lambda f: (lambda x: x(x))
           (lambda y: f(lambda a: y(y)(a))))
           (lambda f: lambda a: len(a) and 
           (a[0] > 0) * a[0] + f(a[1:])))(li)
于 2013-08-17T15:35:39.083 回答
0

我做了一个非常简单的while循环,就像你问的那样:

def sumOfPositiveNumbers(li):
    total = 0
    index = 0
    while index < len(li):
        num = li[index]
        if num > 0:
            total += li[index]
        index += 1
    return total

但我必须说,这项工作可以像这样做得更好:

def sumOfPositiveNumbers(li):
    return sum(x for x in li if x > 0)

除非你必须使用一个 while 循环,否则使用一个是没有意义的。除了浪费更多的打字/时间之外,它真的什么也没做。

于 2013-08-17T15:38:34.117 回答