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())
何か案は?