我正试图解决Euler21项目,但我得到了KeyError:0,这通常发生在您引用不存在的字典键时。不过,我想我已经用10000条件解决了这个问题。该错误引用main()函数中的第一个“if”语句。
sumsdivs = {}
for i in range(1, 10000):
tmpls = []
for j in range(1, i):
if i % j == 0:
tmpls.append(j)
sumsdivs[i] = sum(tmpls)
amls = []
def main():
for i in range(1, 10000):
if sumsdivs[i] < 10000 and sumsdivs[i] == sumsdivs[sumsdivs[i]]:
if sumsdivs[i] not in amls:
amls.append(sumsdivs[i])
if sumsdivs[sumsdivs[i]] not in amls:
amls.append(sumsdivs[sumsdivs[i]])
return sum(amls)
print(main())
有什么想法吗?
在此处插入
0
作为i = 1
:内部循环从不运行(
range(1, 1)
为空),并且sum([])
为0。演示:
所以
sumsdivs[1]
是0,并且sumsdivs[sumsdivs[0]]
抛出一个KeyError
:相关问题 更多 >
编程相关推荐