【问题标题】:Need help writing a function which returns a dictionary with the keys as recursive digit sums需要帮助编写一个函数,该函数返回一个字典,其键为递归数字和
【发布时间】:2019-09-19 18:03:47
【问题描述】:

所以我写了一个函数,当一个数字输入到函数中时,它计算数字的总和。现在我正在尝试编写另一个函数,该函数将返回一个字典,其中包含我的 digitsum 函数中的值作为键,而这些值将是该特定数字的计数发生的次数。关于如何编写第二个函数的任何想法?

def digitsum(x):
    if x < 10:
        return x
    else:
        return (x%10) + digitsum(x//10)

def digitsumdictionary(lnum=0, hnum=100):
    L =[digitsum(num) for num in range(100)]
    counter = Counter(L).items()
    return counter

【问题讨论】:

  • “将是该特定数字的计数发生了多少次” 发生在什么情况下?
  • 所以如果函数要运行多次。数字和 22 会出现多少次。这种帮助是否能更好地解释它?
  • 使用Counter:Counter(map(digitsum, numbers))
  • 我建议你把if x == 0: return 0 elif x != 0: ...改成if x &lt; 10: return x else: ...
  • 谢谢帕特里克和 user633183!我现在似乎走在正确的轨道上,但它似乎仍然无法正常工作

标签: python-3.x dictionary recursion


【解决方案1】:

根据数字的长度调用Digitsum函数。

您可以使用len(list(str(num))) 轻松找到它。但是如果你想算作函数调用本身,那就试试这个吧,

def digitsum(x, count=1): 
    if x < 10:
        return { x : count }
    else:
        return {(x%10) + int(list(digitsum(x//10 , count+1).keys())[0]) : int(list(digitsum(x//10 , count+1).values())[0])}

最初将计数设置为 1 或 0,分别包含或排除第一次调用。

以下代码返回所需输出的字典列表。

[digitsum(i) for i in range(10)]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-12-07
    • 1970-01-01
    • 2011-05-05
    • 1970-01-01
    • 2020-07-04
    • 1970-01-01
    • 2020-09-08
    • 1970-01-01
    相关资源
    最近更新 更多