练习篇

Posted Avention

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了练习篇相关的知识,希望对你有一定的参考价值。

问题:一个球从100米高空落下,每次落地后反跳回原高度的一般落下,当高度小于1米时视为停止,问这个球一共弹了多少米


我的代码:
#拓展一下,变成球的高度可以自定义,但要大于1米
def get_num(h):

    b = 0   #统计弹跳次数
    c = 0   #统计弹跳总高度数

    print(球的初始高度为:{} 米;.format(h),end=  )

    #由于事先并不知道到底球需要弹跳多少次,所以用while循序
    while True:
        if h < 1:
            print(您需要输入一个大于1米的一个高度值)
            break
        else:
            h /= 2
            b += 1
            c += h
            if h < 1:
                return 弹跳次数:{} 次; 视为停止时高度:{} 米; 总共弹跳的米数{} 米.format(b,h,c)

print(get_num(4))
#测试结果:球的初始高度为:4 米;  弹跳次数:3 次; 视为停止时高度:0.5 米; 总共弹跳的米数3.5 米

print(get_num(100))
#测试结果:球的初始高度为:100 米;  弹跳次数:7 次; 视为停止时高度:0.78125 米; 总共弹跳的米数99.21875 米

print(get_num(0.9))
#测试结果:球的初始高度为:0.9 米;  您需要输入一个大于1米的一个高度值
#          None

 

 我又思考了,,如果球的种类不一样,,假设足球能弹跳回原高度的一半,篮球能弹跳回原高度的 0.7倍 等等

也就是说,抛的球不一样,, h /= 2这里要变。。。
可以考虑面向对象,,自定义一个球类,, 
 
 1 #自定义一个球类
 2 
 3 #实例化时需要两个参数:球的种类、初始高度
 4 
 5 class Ball(object):
 6 
 7     def __init__(self,wball,hight):
 8 
 9         if wball in (pp,zq,lq):
10             self._wball = wball
11         else:
12             print(请输入 pp zq lq 中的其中一种)
13             return
14 
15         self.hight = hight
16 
17     #由于每种球的弹跳效率不一样,所以需要定义一个方法还获取求的弹跳率
18     def _getlv(self):
19 
20         d = {pp:0.6,zq:0.5,lq:0.7}
21 
22         return d.get(self._wball)
23 
24 
25     #定义一个方法进行弹跳计算,由于该方法是需要被类的实例访问的,所以不能定义为私有方法
26     def get_num(self):
27 
28         b = 0  # 统计弹跳次数
29         c = 0  # 统计弹跳总高度数
30         print(球的种类为:{}; 球的初始高度为:{} 米;.format(self._wball,self.hight), end=  )
31 
32         while True:
33             if self.hight < 1:
34                 print(您需要输入一个大于1米的一个高度值)
35                 break
36 
37             else:
38                 self.hight *= self._getlv()
39                 b += 1
40                 c += self.hight
41                 if self.hight < 1:
42                     return print(弹跳次数:{} 次; 视为停止时高度:{} 米; 总共弹跳的米数{} 米.format(b, self.hight, c))
43 
44 
45 if __name__ == __main__:
46     pingp = Ball(pp,1.5)
47     pingp.get_num()
48 
49     zuq = Ball(zq,100)
50     zuq.get_num()
51 
52     lanq = Ball(lq,30)
53     lanq.get_num()
54 
55 #测试结果:
56 #球的种类为:pp; 球的初始高度为:1.5 米;  弹跳次数:1 次; 视为停止时高度:0.8999999999999999 米; 总共弹跳的米数0.8999999999999999 米
57 #球的种类为:zq; 球的初始高度为:100 米;  弹跳次数:7 次; 视为停止时高度:0.78125 米; 总共弹跳的米数99.21875 米
58 #球的种类为:lq; 球的初始高度为:30 米;  弹跳次数:10 次; 视为停止时高度:0.8474257469999996 米; 总共弹跳的米数68.022673257 米

 

 

1 a=[100]
2 while a[-1]>1:
3     a.append(a[-1]*0.5)
4 print(a)
5 print("初始高度为{}米, 视停止高度为{}米;".format(a[0],a[-1]))
6 print("一共弹{}米,弹了{}次".format(sum(a[1:]),(len(a)-1)))

 

以上是关于练习篇的主要内容,如果未能解决你的问题,请参考以下文章

配置 VScode 编辑器 (前端篇)

csharp Epicor标准练习片段

golang 去练习片段

重学数据结构篇2 下链表代码练习

Python代码阅读(第19篇):合并多个字典

ktor HTTP API 练习