練習十八:求這樣的一組數據和,s=a+aa+aaa+aaaa+aa...a,其中a為一個數字


例如:2+22+222+2222+22222(此時共有5個數字相加),這里具體幾個數字由鍵盤控制

方法一:普通做法

  1 a = int(input("計算要加的數(1-9之間數):"))
  2 count = int(input("總共要加多少次:"))
  3 sumall = 0  #c初始化最終所求的和
  4 for i in range(1,count+1):
  5     s = 0  #臨時用的變量
  6     for j in range(i):
  7         s = s + 10 ** j   #先計算10**0
  8     sumall = sumall + (a * s)  #再計算a*s
  9     print(sumall)

執行結果:

計算要加的數(1-9之間數):2
總共要加多少次:3
2
24
246

進階版,起始就是利用了函數

  1 a = int(input("計算要加的數(1-9之間數):"))
  2 list1 = [a]
  3 count = int(input("總共要加多少次:"))
  4 sumall = 0
  5 def sum_one(a,count):
  6     for i in range(1,count):
  7         new_a = list1[-1] + a*(10**i)
  8         list1.append(new_a)
  9     return list1
 10 print(sum_one(a,count))
 11 
 12 for i in list1:
 13     sumall += i
 14 print(sumall)

執行結果:

計算要加的數(1-9之間數):2
總共要加多少次:2
[2, 22]
24

再來改下:

 1 from functools import reduce   #python3的reduce內置函數使用時必須導入
 2 
 3 a = int(input("計算要加的數(1-9之間數):"))
 4 list1 = [a]
 5 count = int(input("總共要加多少次:"))
 6 sumall = 0
 7 def sum_one(a,count):
 8     for i in range(1,count):
 9         new_a = list1[-1] + a*(10**i)
10         list1.append(new_a)
11     return list1
12 print(sum_one(a,count))
13 
14 sumall = reduce(lambda arg1, arg2: arg1 + arg2, list1)
15 print(sumall)
16     

執行結果:

計算要加的數(1-9之間數):2
總共要加多少次:2
[2, 22]
24

方法二:遞歸

  1 a = int(input("計算要加的數(1-9之間數):"))
  2 count = int(input("總共要加多少次:"))
  3 sumall = 0
  4 def sum_one(a,count):
  5     count1 = count - 1
  6     if count == 1:
  7         return a
  8     else:
  9         return sum_one(a,count1) + a *(10**(count1))
 10 print("第{}的結果是{}".format(count,sum_one(a,count)))

執行結果:

計算要加的數(1-9之間數):2
總共要加多少次:5
第5的結果是22222

注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
  © 2014-2022 ITdaan.com