我在这里是个新手,很难弄清楚这一点!
本质上,我想让这个函数计算列表中能被2整除的数。
def listDivide(numbers, divide = 2):
result = 0
for i in numbers:
if i % divide == 0:
result += 1
print(result)
listDivide([1 ,3 ,6 ,2 ,4])
输出是:
3
2
列表似乎在循环中被处理了一次,正确地计算出可以被2整除的对象(没有使用模的余数),然后返回循环,根据索引计算列表中的对象数量,然后将它们除以2。例,1, 2, 3, 4, 5
我一定错过了一些超级简单的东西,但我似乎找不出来。任何帮助都将受到赞赏,并提前感谢大家!
在您发布的代码中,如果您希望函数返回计数,则缺少的元素是您不返回任何内容。如果你用return
代替print,你会得到:
def listDivide(numbers, divide = 2):
result = 0
for i in numbers:
if i % divide == 0:
result += 1
return result
print(listDivide([1 ,3 ,6 ,2 ,4]))
# 3
作为题外话,在Python中,布尔值False
可以被视为0
,True
可以被视为1
。这意味着如果你能把数字列表转换成布尔值列表,你就可以取和来得到计数。例如:
def listDivide(numbers, divide = 2):
return sum(n % divide == 0 for n in numbers)
listDivide([1 ,3 ,6 ,2 ,4])
# 3
这将是一个列表:
[n % divide == 0 for n in numbers]
:
[False, False, True, True, True]
所以这些的和是3