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

Python练习题013:求解a+aa+aaa……
【Python练习题 013】求s=a+aa+aaa+a的值,其中a是⼀个数字。例如2+22+222+2222+22222(此时共有5个数相加),⼏个数相加由键盘输⼊。
这题倒也不难,实际上 a+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):aaaaaaaaaaaaaaaaaa
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 更新】---------------------------------------------------------------
感谢的指教,提供了更简洁、更妙的⽅法。先看代码感受⼀下:
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, 了吗?后来才恍然⼤悟:input()获得的输⼊是字符,不是数字!⽽⽤于字符的乘法表⽰重复,不是数值运算!!即是说,字符 a 乘 2 的结果是 aa,字符 '2' 乘 2 的结果是'22'!之后运算前把 '22' 转换为数字 22 就可以了。真是太妙了!
++++++++++++++++++++++++++++++++++++++
题⽬出处:

本文发布于:2024-09-20 23:34:37,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/2/360155.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:循环   相加   个数   数字   开始   提供
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议