封装函数实现如下要求
例如:输入2,5
则求:2 + 22+222 + 2222+22222的和
方法一:循环中递归调用
x = int(input("请输入1-9中的一个数")) y = int(input("请输入一个正整数")) sum1 = 0 b = y for a in range(1,b+1): def f(y): if y == 0: return 0 return x*10**(y-1) + f(y-1) sum1 += f(y) y = y-1 print(sum1)
结果输出:
请输入1-9中的一个数2 请输入一个正整数5 24690 Process finished with exit code 0
方法二:使用装饰器封装
a = int(input("请输入1-9中的一个数")) b = int(input("请输入一个正整数")) def f1(f): def f2(x,y): Str = "" for i in range(1,y+1): Str += str(x)*i if i == y: Str += "=" else: Str += "+" Sum = 0 for j in range(1,y+1): Sum += int(str(x)*j) return f(Str,Sum) return f2 @f1 def f(a,b): print(a,b) f(a,b)
结果输出:
请输入1-9中的一个数2 请输入一个正整数5 2+22+222+2222+22222= 24690 Process finished with exit code 0