整数以数字的总和返回?

时间:2014-05-08 22:12:12

标签: python loops python-3.x

这是我应该写的:

  • 一个函数countDigits,它将整数作为参数并返回其数字之和(必须使用for循环)。例如,数字123将返回6(1 + 2 + 3)
  • 一个主要功能,它将从1开始计算数字,并在总数位(所有数字)超过1,000,000时结束。因此,如果您想要数字5的总数字,您可以添加:

    • 1 = 1
    • 2 = 2 + 1
    • 3 = 3 + 3
    • 4 = 6 + 4
    • 5 = 10 + 5,因此15将是总数字数。
  • 您的程序将在超过1,000,000之前打印数字和数字计数。使用while循环这是最简单的。

我已经编写了函数countDigits的代码,它是:

def countDigits():
    value=int(input('Enter Integer: '))
    str_num= str(value)
    total = 0
    for ch in str_num:
        total += int(ch)
    print(total)

但是,我对如何编写main函数感到困惑。有人能指出我正确的方向吗?

修改

这是我修改过的countDigits函数:

def countDigits(value):
    str_num= str(value)
    total = 0
    for ch in str_num:
        total += int(ch)
    print(total)

2 个答案:

答案 0 :(得分:2)

单行:

factorial_digit_sum = lambda x: sum( sum(map(int, str(a))) for a in range(1,x+1) )

如果你真的写这样的真实代码,Guido会追捕你。不过,对于高尔夫球来说,这是一种有趣的脑筋急转弯。

获得真实答案:

def countDigits(number):
    return sum(map(int, str(number)))

def main():
    total = 0
    count = 1
    while total <= 1000000:
        total += countDigits(count)
    total -= countDigits(count) # you want the number BEFORE it hits 1000000
    print("Summing the digits of {}! yields {}".format(count, total))

main()

代码中的问题是您的countDigits函数请求用户输入。您应该将其更改为接受整数作为参数。它print结果而不是return

答案 1 :(得分:1)

正如@Blorgbeard在评论中提到的,更改countDigits以接受整数作为输入。另外,从中返回总数。

在main函数中,读取输入,调用countDigits并在while循环中添加它们,直到总计大于1,000,000

def countDigits(value):
    str_num= str(value)
    total = 0
    for ch in str_num:
        total += int(ch)
    return total

grandTotal = 0
while ( grandTotal < 1000000 ):
  value=int(input('Enter Integer: '))
  grandTotal += countDigits(value)