我解決項目歐拉problem 34我的代碼給出超出極限的關鍵錯誤
我的代碼給出如下:
import functools
limit = int(input())
factDict = { 0:1, 1:1, 2:2, 3:6, 4:24, 5:120, 6:720, 7:5040, 8:40320, 9:362880 }
for i in range(10, limit):
listNum = list(map(int, list(str(i))))
#print(listNum)
sumFact = functools.reduce(lambda x, y: factDict[x] + factDict[y], listNum)
if(sumFact%i == 0):
print(i)
它正常工作,直到140,然後給出了:
Traceback (most recent call last):
File "solution.py", line 10, in <module>
sumFact=functools.reduce(lambda x, y: factDict[x]+factDict[y], listNum)
File "solution.py", line 10, in <lambda>
sumFact=functools.reduce(lambda x, y: factDict[x]+factDict[y], listNum)
KeyError: 25
我也打印了清單,發現那裏沒有問題。
我哪裏錯了?
感謝您的回覆!我在你的解釋後意識到。但是這個問題指出了除數,因爲你不需要19的最後編輯就滿足了。無論如何感謝澄清。還有更好的方法使用減少? –
哼哼,在問題或問題34中看不到任何除數,但這最後一個測試可以設置爲適合您的需求。是的,我找到了更好的方法,我編輯答案。 – zezollo
完成。如果有幫助,請不要猶豫,接受我的回答。 – zezollo