-
求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 循环就搞定了。
a = input('请输入需要循环的数字a =')
n = int(input('请输入需要循环的次数n ='))
li = []
for i in range(1,n+1):
s = a*i
li.append(s)
new_li = [int(num) for num in li]
print(new_li)
print(sum(new_li))
输出结果:
D:\anaconda\python.exe D:/bilibili大学/python经典习题100道/习题18.py
请输入需要循环的数字a =2
请输入需要循环的次数n =5
[2, 22, 222, 2222, 22222]
24690
Process finished with exit code 0
-
一个数如果恰好等于它的因子之和,这个数就称为“完数”。
例如6=1+2+3。编程找出1000以内的所有完数
for i in range(2, 1000):
factors = [] # 因子列表,i 每次循环都清空
for j in range(1, i):
if i % j == 0:
factors.append(j)
s = sum(factors)
if i == s:
print(i)
输出结果:
D:\anaconda\python.exe D:/bilibili大学/python经典习题100道/习题19.py
6
28
496
Process finished with exit code 0
因子数:除去本身外,能被这个数整除的数。
import math
li = []
for i in range(2,1000):
for j in range(1,math.floor(i/2)+1):
if i%j == 0:
li.append(j)
if sum(li) == i:
print(i)
li = []
保证在制造第一个for循环的时候li这个列表为空。
- 一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在第10次落地时,共经过多少米?第10次反弹多高?
hei = []#用来存储高度
length = []#用来存储长度
height = 100
for i in range(11):
if i == 0:
length.append(100)
else:
height /= 2
hei.append(height)
length.append(2*height)
print('弹跳高度列表',hei)
print('每次弹跳对应的距离列表',length)
print('共经过{}米'.format(sum(length[:-1])))
#设从地上弹起到落地为一个完整的过程,反弹10次,就完成十一次过程,因为第一次也算过程,我们只要前十次
print('第十次反弹的高度为{}米'.format(hei[-1]))
输出结果:
D:\anaconda\python.exe D:/bilibili大学/python经典习题100道/习题20.py
弹跳高度列表 [50.0, 25.0, 12.5, 6.25, 3.125, 1.5625, 0.78125, 0.390625, 0.1953125, 0.09765625]
每次弹跳对应的距离列表 [100, 100.0, 50.0, 25.0, 12.5, 6.25, 3.125, 1.5625, 0.78125, 0.390625, 0.1953125]
共经过299.609375米
第十次反弹的高度为0.09765625米
Process finished with exit code 0
网友评论