上市困难

时间:2018-10-04 05:32:05

标签: python

编写一个名为“计数”的函数,该函数将数字列表作为参数,并返回输入中29.88到48.05之间的值数(不包括这些端点)。 (下面的代码)

def counting(number):
    sum = 0
    for x in number:
        if (29.88 < x < 48.05):
            sum = sum + x
        return sum

如何返回输入中的值数而不是输入的第一个数?

3 个答案:

答案 0 :(得分:1)

您的return语句缩进太深;您应该在for循环之后将其返回。 sum也不是一个好名字,因为它是您覆盖的内置函数。

,您应该将1加到您要计算的总数上,而不是x本身。

您还可以使用内置函数sum尝试以下操作:

def counting(number):
    return sum(29.88 < x < 48.05 for x in number)

(这实际上是sum(1 for x in number if 29.88 < x < 48.05)的缩写,之所以有效,是因为True基本上是1,而False基本上是0)。

答案 1 :(得分:0)

或与您相似:

def counting(number):
    c = 0
    for x in number:
        if 29.88 < x < 48.05:
            c += 1
    return c

或者可以做单线len

def counting(number):
    return len([29.88 < x < 48.05 for x in number])

答案 2 :(得分:0)

您还可以在列表上使用filter()来仅保留给定函数求值为true的元素。

def counting(number):
    return len(list(filter(lambda x: 29.88 < x < 48.05, number)))