【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版】

Python练习题 013:求解a+aa+aaa……的更多相关文章

  1. python基础练习题(题目 求s=a+aa+aaa+aaaa+aa…a的值,其中a是一个数字。例如2+22+222+2222+22222(此时共有5个数相加),几个数相加由键盘控制)

    day11 --------------------------------------------------------------- 实例018:复读机相加 题目 求s=a+aa+aaa+aaa ...

  2. Python练习题 026:求100以内的素数

    [Python练习题 026] 求100以内的素数. ------------------------------------------------- 奇怪,求解素数的题,之前不是做过了吗?难道是想 ...

  3. Python练习题 032:Project Euler 004:最大的回文积

    本题来自 Project Euler 第4题:https://projecteuler.net/problem=4 # Project Euler: Problem 4: Largest palind ...

  4. Python练习题 017:三支乒乓球队出赛名单

    [Python练习题 017] 两个乒乓球队进行比赛,各出三人.甲队为a,b,c三人,乙队为x,y,z三人.已抽签决定比赛名单.有人向队员打听比赛的名单.a说他不和x比,c说他不和x,z比.请编程序找 ...

  5. Python练习题 014:完数

    [Python练习题 014] 一个数如果恰好等于它的因子之和,这个数就称为"完数".例如6=1+2+3.编程找出1000以内的所有完数. -------------------- ...

  6. 【程序18】求s=a+aa+aaa+aaaa+aa...a的值

    求s=a+aa+aaa+aaaa+aa-a的值,其中a是一个数字.例如2+22+222+2222+22222(此时共有5个数相加),几个数相加由键盘控制. 知识点:在Python 3里,reduce( ...

  7. 求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字。例如2+22+222+2222+22222(此时共有5个数相加),几个数相加有键盘控制。

    package com.lw.HomeWork1;//包名 2 import java.util.Scanner; public class Demo18 { /** * @param args */ ...

  8. 求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字。

    import java.util.Scanner; /** * 题目:求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字. * 2+22+222+2222+22222(此时共有5个数 ...

  9. 题目:求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字。

    一.第一种写法 package com.pb.demo1; import java.util.Scanner; /** * 题目:求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字. ...

随机推荐

  1. LoadRunner回放脚本遇到的问题(遇到就补上)

    问题一:Error-26612:HTTP Status-code=500(Internal Server Error) 解决过程:google找到了关于这个错误有多种解决的方法,但是都不是我要的,最重 ...

  2. springboot2.x基础教程:Swagger详解给你的接口加上文档说明

    相信无论是前端还是后端开发,都或多或少地被接口文档折磨过.前端经常抱怨后端给的接口文档与实际情况不一致.后端又觉得编写及维护接口文档会耗费不少精力,经常来不及更新.其实无论是前端调用后端,还是后端调用 ...

  3. Oracle错误 ora-12514 解决方法-九五小庞

    成功连到数据库上之后,查看listener状态:lsnrctl status status READY 状态,需要由非归档转为归档模式,故操作如下: 1.关闭数据库shutdown immediate ...

  4. vue <compent> 结合is实现动态切换子组件

    这里就很自然的产生一个新问题:如何给相应的子组件传props?

  5. 读取文本文件中的中文打印到Eclipse控制台为何显示问号

    原因:未将文本文件存为utf-8编码格式而是ascii编码格式.

  6. 20190918-03关机重启命令及修改root密码 000 006

    (1)sync   (功能描述:将数据由内存同步到硬盘中) (2)halt (功能描述:关闭系统,等同于shutdown -h now 和 poweroff) (3)reboot (功能描述:就是重启 ...

  7. SSM框架中添加写日志功能

    前提:要导入log4j的jar包 在web.xml中输入: <!--日志加载--> <context-param> <param-name>log4jConfigL ...

  8. FFmpeg开发笔记(四):ffmpeg解码的基本流程详解

    若该文为原创文章,未经允许不得转载原博主博客地址:https://blog.csdn.net/qq21497936原博主博客导航:https://blog.csdn.net/qq21497936/ar ...

  9. NSThread线程对象

    NSThread 创建线程的方式 准备在后台线程调用的方法 longOperation: - (void)longOperation:(id)obj { NSLog(@"%@ - %@&qu ...

  10. 内存管理初始化源码3:bootmem

    start_kernel ——> setup_arch ——> arch_mem_init ——> bootmem_init ——> init_bootmem_node: 此时 ...