我必须在每次迭代时逐步连接给定的数字,以便它返回一个sum和连接的字符串.这是我的尝试:
def digit_sum_from_letters(x): a = int("%s" % x) b = int("%s%s" % (x,x)) c = int("%s%s%s" % (x,x,x)) d = int("%s%s%s%s" % (x,x,x,x)) return a+b+c+d print digit_sum_from_letters(9)
回国 11106
但是我需要为任何给定的整数生成总和,所以我需要一个循环但是我被卡住了.
谢谢!
给定digit
和n
(例如,digit=4
和n=3
是4 + 44 + 444
),您只需要生成一个序列,并将其总和乘以digit
.
digit = 4 n = 3 # 1, 11, 111 ones = [ int("1" * i) for i in range(1, n+1)] # 4 + 44 + 444 = 4 * (1 + 11 + 111) answer = digit * sum(ones)
这应该工作:
>>> def digit_sum(x): lst = [str(x)*i for i in range(1,x+1)] print '+'.join(lst) return sum(map(int, lst)) >>> digit_sum(7) 7+77+777+7777+77777+777777+7777777 8641969 >>> digit_sum(9) 9+99+999+9999+99999+999999+9999999+99999999+999999999 1111111101 >>> digit_sum(3) 3+33+333 369