• 练习十八:求这样的一组数据和,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
  • 相关阅读:
    C语言II作业01
    C语言寒假大作战04
    C语言寒假大作战03
    C语言寒假大作战02
    C语言寒假大作战01
    C语言I博客作业12—学期总结
    第一次作业
    C语言I博客作业02
    C语言I博客作业11
    C语言||作业01
  • 原文地址:https://www.cnblogs.com/pinpin/p/9952548.html
Copyright © 2020-2023  润新知