0

好的,所以我创建了一个名为 numbersList 的列表,变量 number = 20,count = 0,spot = 0。

numbersList = range(1, 11)
number = 20
count = 0
spot = 0.

我想计算列表中进入 20 的数字。我试过这个:

while spot <= len(numbersList):
    if(number % int(numbersList[spot]) == 0):
        count = count + 1
    spot = spot + 1
print count

但它一直说列表索引超出范围。请帮忙!

4

4 回答 4

2

您的索引在循环的最后一次迭代中走得太远while。更改<=<,它应该可以工作:

while spot < len(numbersList):

或者只是使用一个for循环:

for i in numbersList:
    if number % i == 0:
        count += 1
于 2013-02-20T04:08:44.967 回答
1

您不能使用浮点数索引到列表中,并且 spot = 0. 是浮点数。尝试删除那个虚假的时期!

于 2013-02-20T04:08:39.720 回答
1

第一行是一个 SyntaxError

>>> when spot <= len(numbersList):
  File "<stdin>", line 1
    when spot <= len(numbersList):

我怀疑你的意思是使用while

但是使用 for 循环更容易

for spot in numbersList:
    if number % spot == 0:
        count += 1
print count

这也可以通过将生成器表达式传递给 sum 来更简单地编写

count = sum(number % spot == 0 for spot in numbersList)
于 2013-02-20T04:09:42.187 回答
0

我更喜欢经典的map-reduce

 reduce( lambda x,y: x+y, [ number%spot for spot in numbersList ] )
于 2013-02-20T04:24:03.880 回答