1

我正在尝试制作一个算法,它计算有多少数字被除以没有余数。

d=[]
for i in range (0, 10001):
    for c in range (1, 16):
        if i % c == 0: d[c] += 1

我希望有这样的东西

/1:  10000
/2:  5000
/3:  3334
/4:  2500
/5:  2000
/6:  1667
/7:  1429
/8:  1250
/9:  1112
/10:  1000
/11:  910
/12:  834
/13:  770
/14:  715
/15:  667

,但我明白了IndexError: list index out of range

4

2 回答 2

2

您不能添加到从未创建过的列表的元素。

于 2019-07-10T19:58:06.003 回答
2

只需用零填充列表:

d = [0] * 17  # <== THIS
for i in range (0, 10001):
    for c in range (1, 16):
        if i % c == 0: d[c] += 1

请注意,这在开始时有一个无关紧要的零(即d[0])。很容易被忽略。

此外,与您的代码实际执行的操作相比,您的计数减少了 1(例如,10001您的范围内有偶数而不是10000)。

于 2019-07-10T19:58:13.030 回答