gpt4 book ai didi

python - 为什么KeyError : 0

转载 作者:行者123 更新时间:2023-12-04 16:31:40 43 4
gpt4 key购买 nike

我正在尝试解决 Project Euler 21 但我收到 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())

有什么想法吗?

最佳答案

您在此处为 i = 1 插入 0:

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)

内部循环永远不会运行(range(1, 1) 为空),并且 sum([]) 为 0。

演示:

>>> sumsdivs = {}
>>> for i in range(1, 2):
... tmpls = []
... for j in range(1, i):
... if i % j == 0:
... tmpls.append(j)
... sumsdivs[i] = sum(tmpls)
...
>>> sumsdivs
{1: 0}
>>> sum([])
0

因此 sumsdivs[1] 为 0,并且 sumsdivs[sumsdivs[0]] 抛出 KeyError:

>>> sumsdivs[sumsdivs[1]]
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
KeyError: 0

关于python - 为什么KeyError : 0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23967788/

43 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com