19.题目:
一个数如果恰好等于它的因子之和,这个数就称为"完数"。例如6=1+2+3.编程找出1000以内的所有完数。
程序分析:请参照程序python实例14。我就不在这里过多介绍了。
for j in range(2,1001):k = []n = -1s = jfor i in range(1,j):if j % i == 0:n += 1s -= ik.append(i)if s == 0:print (j)for i in range(n):print(str(k[i]))
# print(' ')print (k[n])
输出:
如上图结果所示,我们发现 有点乱,那有没有可能输出一行是一个数,一行全是它的因子呢?
当然可以喽,此时就应该介绍一下我们的sys库中的stdout函数,它的意思是输出不换行
代码更改如下:
# #19
from sys import stdout
for j in range(2,1001):k = []n = -1s = jfor i in range(1,j):if j % i == 0:n += 1s -= ik.append(i)if s == 0:print (j)for i in range(n):stdout.write(str(k[i]))stdout.write(' ')print (k[n])
此时输出为:
这样输出,不但看着舒心,用着也舒心hhhhhhhhhhhhhhh
20.题目:
一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在第10次落地时,共经过多少米?第10次反弹多高?
程序分析:无,一道基础物理题,就不做过多介绍了,如果你做不出来,那!!!
好了,话不多说,直接上代码吧:
#20
tour = []
height = []hei = 100.0 # 起始高度
tim = 10 # 次数for i in range(1, tim + 1):# 从第二次开始,落地时的距离应该是反弹高度乘以2(弹到最高点再落下)if i == 1:tour.append(hei)else:tour.append(2*hei) hei /= 2height.append(hei)print('总高度:tour = {}'.format(sum(tour)))
print('第10次反弹高度:height = {}'.format(height[-1]))
输出: