没有bug队——加贝——Python 练习实例 19,20

没有bug队——加贝——Python 练习实例 19,20,第1张

没有bug队——加贝——Python 练习实例 19,20 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次反d多高?

程序分析:无,一道基础物理题,就不做过多介绍了,如果你做不出来,那!!!

好了,话不多说,直接上代码吧:

#20
tour = []
height = []
 
hei = 100.0 # 起始高度
tim = 10 # 次数
 
for i in range(1, tim + 1):
    # 从第二次开始,落地时的距离应该是反d高度乘以2(d到最高点再落下)
    if i == 1:
        tour.append(hei)
    else:
        tour.append(2*hei) 
    hei /= 2
    height.append(hei)
 
print('总高度:tour = {}'.format(sum(tour)))
print('第10次反d高度:height = {}'.format(height[-1]))

 输出:

欢迎分享,转载请注明来源:内存溢出

原文地址: https://www.outofmemory.cn/zaji/5650695.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-16
下一篇 2022-12-16

发表评论

登录后才能评论

评论列表(0条)

保存