19.题目:
一个数如果恰好等于它的因子之和,这个数就称为"完数"。例如6=1+2+3.编程找出1000以内的所有完数。
程序分析:请参照程序python实例14。我就不在这里过多介绍了。
for j in range(2,1001):
k = []
n = -1
s = j
for i in range(1,j):
if j % i == 0:
n += 1
s -= i
k.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 = -1
s = j
for i in range(1,j):
if j % i == 0:
n += 1
s -= i
k.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 /= 2
height.append(hei)
print('总高度:tour = {}'.format(sum(tour)))
print('第10次反弹高度:height = {}'.format(height[-1]))
输出: