这是我应该写的:
一个主要功能,它将从1开始计算数字,并在总数位(所有数字)超过1,000,000时结束。因此,如果您想要数字5的总数字,您可以添加:
您的程序将在超过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)
答案 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)