例如:2+22+222+2222+22222(此时共有5个数字相加),这里具体几个数字由键盘控制

方法一:普通做法

 a = int(input("计算要加的数(1-9之间数):"))
count = int(input("总共要加多少次:"))
sumall = 0 #c初始化最终所求的和
for i in range(1,count+1):
s = 0 #临时用的变量
for j in range(i):
s = s + 10 ** j #先计算10**0
sumall = sumall + (a * s) #再计算a*s
print(sumall)

执行结果:

计算要加的数(1-9之间数):2
总共要加多少次:3
2
24
246

进阶版,起始就是利用了函数

 a = int(input("计算要加的数(1-9之间数):"))
list1 = [a]
count = int(input("总共要加多少次:"))
sumall = 0
def sum_one(a,count):
for i in range(1,count):
new_a = list1[-1] + a*(10**i)
list1.append(new_a)
return list1
print(sum_one(a,count)) for i in list1:
sumall += i
print(sumall)

执行结果:

计算要加的数(1-9之间数):2
总共要加多少次:2
[2, 22]
24

再来改下:

 from functools import reduce   #python3的reduce内置函数使用时必须导入

 a = int(input("计算要加的数(1-9之间数):"))
list1 = [a]
count = int(input("总共要加多少次:"))
sumall = 0
def sum_one(a,count):
for i in range(1,count):
new_a = list1[-1] + a*(10**i)
list1.append(new_a)
return list1
print(sum_one(a,count)) sumall = reduce(lambda arg1, arg2: arg1 + arg2, list1)
print(sumall)

执行结果:

计算要加的数(1-9之间数):2
总共要加多少次:2
[2, 22]
24

方法二:递归

 a = int(input("计算要加的数(1-9之间数):"))
count = int(input("总共要加多少次:"))
sumall = 0
def sum_one(a,count):
count1 = count - 1
if count == 1:
return a
else:
return sum_one(a,count1) + a *(10**(count1))
print("第{}的结果是{}".format(count,sum_one(a,count)))

执行结果:

计算要加的数(1-9之间数):2
总共要加多少次:5
第5的结果是22222
05-04 09:16