我怎样才能有效地做到这一点? [关闭]

Posted

技术标签:

【中文标题】我怎样才能有效地做到这一点? [关闭]【英文标题】:How can I do this effectively? [closed] 【发布时间】:2020-08-01 22:06:06 【问题描述】:

这个问题:

输入:123456

结果:

1+2+3+4+5+6 = 21
2+1 = 3

返回:3

这是我的代码:

num = input()
print(sum(list(map(int, list(num)))))

直到1位数我才知道该怎么做。

【问题讨论】:

您尝试完成什么以及从哪里获得2+1?这背后有什么逻辑吗? 在问题中显示您尝试的格式正确的代码。 在你要求别人为你做作业之前,先花点力气。 How to ask 2+1 是最新求和的返回。 @March,我已经修改了我的答案,请看一下,现在更具可读性和简洁性。 【参考方案1】:

使用sum()list comprehensionrecursion 的一种方法,

def simulated_sum(input):
    """This is a recursive function
    to find the simulated sum of an integer"""

    if len(str(input)) == 1:
        return input
    else:
        input_digits = [int(x) for x in str(input)]
        latest_sum = sum(input_digits)
        return simulated_sum(latest_sum)

input = int(input('Enter a number'))    
print(simulated_sum(input))

演示: https://rextester.com/WCBXIL71483

【讨论】:

【参考方案2】:

你可以试试这个:

s = input()
while(len(s)>1):
    s = str(sum(list(map(int,s))))

【讨论】:

【参考方案3】:

一种方式:

while len(str(ans))>1:
    ans = sum(map(int, str(ans)))

完整代码:

num = 45637
ans = num

while len(str(ans))>1:
    ans = sum(map(int, str(ans)))

print(ans)

输入 45637 的输出:

7

【讨论】:

【参考方案4】:

试试这个(IPython 中的示例):

In [1]: s = '123456'
Out[1]: '123456'

In [2]: digits = [int(j) for j in s]
Out[2]: [1, 2, 3, 4, 5, 6]

In [3]: s = str(sum(digits))
Out[3]: '21'

重复第 2 步和第 3 步,直到 len(s) == 1

【讨论】:

【参考方案5】:

这是你想要的吗? (说明不清楚):

def myfunction(number):
    total = 0
    answertotal = 0
    for i in str(number):
        total += int(i)
    for i in str(total):
        answertotal += int(i)
    return answertotal

myfunction(123456)

这个函数返回 3

【讨论】:

以上是关于我怎样才能有效地做到这一点? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

生成大小适合的随机 div [关闭]

我怎样才能制作记分牌卡xcode [关闭]

MFC CTabCtrl如何为选项卡添加关闭按钮

JDBC中的缓存[关闭]

如何正确关闭 Node.js TCP 服务器?

对于opera mini,使用javascript检测移动视图是打开还是关闭