• Python练习题 013:求解a+aa+aaa……


    【Python练习题 013】 求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字。例如2+22+222+2222+22222(此时共有5个数相加),几个数相加由键盘输入。

    这题倒也不难,实际上 a+aa+aaa+aa...a 可以转化为 (a * 10**0) + (a * 10**1) + (a * 10**2)…… 进而转化为 a * (10**0 + 10**1 + 10**2 ……),所以用两个 for 循环就搞定了。

    注意:第1个 for 循环,range()得从1开始计数,这样子第2个 for 循环一开始才能至少循环一次(如果 i = 0,那么 range(i) 就循环不起来了。

    代码如下:

    a = int(input('请输入数字 a:'))
    count = int(input('请输入几个数相加:'))
    
    res = 0  #初始化最终求解
    for i in range(1, count+1): #循环次数与输入的值一样,但从1开始循环
        t = 0  #临时用的变量
        for j in range(i):
            t = t + 10**j  #先计算 10**0 + 10**1 + ... + 10**j
        res = res + (a*t)  #再计算 a * t
    print(res)
    

    输出结果如下:

    请输入数字 a:5
    请输入几个数相加:4
    6170

    【2016-10-17 更新】---------------------------------------------------------------

    感谢 Mr很大的龙 的指教,提供了更简洁、更妙的方法。先看代码感受一下:

    a=input('输入数字>>>')
    count=int(input('几个数字相加>>>'))
    ret=[]
    for i in range(1,count+1):
        ret.append(int(a*i))
        print(ret[i-1])
    print(sum(ret))
    

    我研究了半天死活没看懂,a*i 为啥就能这么简单地解决问题!如果 a = 2,那 a*i 不就是 2*1, 2*2, 2*3, 2*4... 了吗?后来才恍然大悟:input() 获得的输入是字符,不是数字!而用于字符的乘法表示重复,不是数值运算!!即是说,字符 a 乘 2 的结果是 aa,字符 '2' 乘 2 的结果是 '22'!之后运算前把 '22' 转换为数字 22 就可以了。真是太妙了!

    ++++++++++++++++++++++++++++++++++++++

    题目出处:编程语言入门经典100例【Python版】

  • 相关阅读:
    一百三十二:CMS系统之前端动态获取后台添加的轮播图
    一百三十一:CMS系统之轮播图上传图片功能
    一百三十:CMS系统之七牛js和python的SDK使用示例
    Python中文件编码的检测
    三目运算符
    三级菜单
    购物车程序
    计算机进制转换
    Python字典练习题
    VS Code常用快捷键总结
  • 原文地址:https://www.cnblogs.com/iderek/p/5960208.html
Copyright © 2020-2023  润新知