zoukankan      html  css  js  c++  java
  • 练习十八:求这样的一组数据和,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
  • 相关阅读:
    Matplotlib学习
    Docker win10安装
    pandas读取文件报错
    python特殊函数__str__、__repr__和__len__
    tar命令总结
    lamp服务器站点目录被植入广告代码处理
    linux简单测试
    中国剩余定理
    牛客暑期第六场G /// 树形DP 最大流最小割定理
    逆元 组合A(n,m) C(n,m)递推 隔板法
  • 原文地址:https://www.cnblogs.com/pinpin/p/9952548.html
Copyright © 2011-2022 走看看