我的代码给出的Key错误超出限制

加内什·卡特里桑

我正在解决Euler项目问题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

我也打印了列表,发现那里没有问题。

我要去哪里错了?

泽佐洛

您使用不functools.reduce()正确。

这:functools.reduce(lambda x, y: factDict[x] + factDict[y], listNum)应用于[1,4,0]将(尝试)计算:

factDict[factDict[1] + factDict[4]] + factDict[0]

导致该索引错误(factDict [1] + factDict [4]等于25)。

根据文档

左边的参数x是累加值

因此,如果您使用factDict [x],您将用其阶乘(而不是您想要的)替换累计值。

因此,您必须将x保留为“单独”。

然后,要初始化为“中性”,您可以只使用0,这样,它将实际计算(对于140): 0 + factDict[1] + factDict[4] + factDict[0]

所以最后:

#!/usr/bin/env python3

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: x + factDict[y], listNum, 0)
    if(sumFact == i):
        print("Found: " + str(i))

此外,我更改了最后一个测试,sumFact == i因为您要查找等于其阶乘之和的数字,而不是其阶乘之和的除数。(如评论中所述,您可以使用自己喜欢的测试)。

PS这不会产生很多结果:

$ ./test_script.py
1000000
Found: 145
Found: 40585

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

我的代码给出的Key错误超出限制

来自分类Dev

为什么我的代码超出了时间限制?

来自分类Dev

我的代码中出现“列表索引超出范围”错误

来自分类Dev

YouTubeAPI v3-我的应用达到API配额限制之前,出现“超出每日限制”错误

来自分类Dev

BeginInvoke()在我的C#代码中给出错误

来自分类Dev

为什么我的代码在SPOJ上给出错误的答案?

来自分类Dev

为什么我的代码给出运行时错误?

来自分类Dev

为什么我的代码为变量给出错误的值?

来自分类Dev

为什么我的代码给出了错误的结果?

来自分类Dev

PyTorch:为什么我的数据集类给出的索引超出范围错误?

来自分类Dev

PyTorch:为什么我的数据集类给出的索引超出范围错误?

来自分类Dev

我的数组似乎有值,但是给出了下标超出范围错误

来自分类Dev

我该如何解决错误:java.lang.OutOfMemoryError:超出了GC开销限制?

来自分类Dev

代码限制SIGABRT错误

来自分类Dev

我的代码中的一行给我“下标超出范围错误”

来自分类Dev

Clojure错误-超出了GC开销限制

来自分类Dev

触发提升:“错误:超出堆栈深度限制”

来自分类Dev

Clojure错误-超出了GC开销限制

来自分类Dev

shopify液体错误:超出内存限制

来自分类Dev

为什么我超出了时间限制?

来自分类Dev

Spark代码给出错误

来自分类Dev

回文的代码(下面给出的错误)

来自分类Dev

代码在MultiSheetsPdf给出错误

来自分类Dev

下面给出的代码是错误的吗?

来自分类Dev

将代码从 Gerrit 移动到 Github 时遇到“这超出了 GitHub 的文件大小限制 100.00 MB”错误

来自分类Dev

代码给出了解析错误,我找不到错误是什么

来自分类Dev

C ++,Shared_ptr,请告诉我为什么我的代码给出错误?

来自分类Dev

iptables最近的速率限制给出错误

来自分类Dev

我如何无法从此代码获取列表索引超出范围错误?

Related 相关文章

  1. 1

    我的代码给出的Key错误超出限制

  2. 2

    为什么我的代码超出了时间限制?

  3. 3

    我的代码中出现“列表索引超出范围”错误

  4. 4

    YouTubeAPI v3-我的应用达到API配额限制之前,出现“超出每日限制”错误

  5. 5

    BeginInvoke()在我的C#代码中给出错误

  6. 6

    为什么我的代码在SPOJ上给出错误的答案?

  7. 7

    为什么我的代码给出运行时错误?

  8. 8

    为什么我的代码为变量给出错误的值?

  9. 9

    为什么我的代码给出了错误的结果?

  10. 10

    PyTorch:为什么我的数据集类给出的索引超出范围错误?

  11. 11

    PyTorch:为什么我的数据集类给出的索引超出范围错误?

  12. 12

    我的数组似乎有值,但是给出了下标超出范围错误

  13. 13

    我该如何解决错误:java.lang.OutOfMemoryError:超出了GC开销限制?

  14. 14

    代码限制SIGABRT错误

  15. 15

    我的代码中的一行给我“下标超出范围错误”

  16. 16

    Clojure错误-超出了GC开销限制

  17. 17

    触发提升:“错误:超出堆栈深度限制”

  18. 18

    Clojure错误-超出了GC开销限制

  19. 19

    shopify液体错误:超出内存限制

  20. 20

    为什么我超出了时间限制?

  21. 21

    Spark代码给出错误

  22. 22

    回文的代码(下面给出的错误)

  23. 23

    代码在MultiSheetsPdf给出错误

  24. 24

    下面给出的代码是错误的吗?

  25. 25

    将代码从 Gerrit 移动到 Github 时遇到“这超出了 GitHub 的文件大小限制 100.00 MB”错误

  26. 26

    代码给出了解析错误,我找不到错误是什么

  27. 27

    C ++,Shared_ptr,请告诉我为什么我的代码给出错误?

  28. 28

    iptables最近的速率限制给出错误

  29. 29

    我如何无法从此代码获取列表索引超出范围错误?

热门标签

归档