编写一个名为“计数”的函数,该函数将数字列表作为参数,并返回输入中29.88到48.05之间的值数(不包括这些端点)。 (下面的代码)
def counting(number):
sum = 0
for x in number:
if (29.88 < x < 48.05):
sum = sum + x
return sum
如何返回输入中的值数而不是输入的第一个数?
答案 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)))