|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 雷锤 于 2022-11-17 10:59 编辑
小球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,定义函数cal计算它在第n次落地时,共经过多少米以及第n次反弹多高。定义全局变量Sn和Hn分别存储小球经过的路程和第n次的高度。主函数输入n的值,并调用cal函数完成计算输出Sn和Hn的值。
我的代码是
- def cal():
- s=0
- h=100
- a=int(input())
- for i in range(a):
- h=h*0.5
- s+=h*3
- print(f'Total of road is {s:.4f} meter')
- print(f'The height is {h:.4f} meter')
复制代码
输入 10
输出的结果 Total of road is 299.7070 meter
然后这个题目的答案代码是
- a=eval(input())
- s=100
- h=100
- for i in range(1,a+1):
- if(i>1):
- s = s + h * 2
- h=h*0.5
- print("Total of road is {:.4f} meter".format(s))
- print("The height is {:.4f} meter".format(h))
复制代码
输入 10
输出的结果 Total of road is 299.6094 meter
想不出来是哪里有问题。。
本帖最后由 lxping 于 2022-11-16 22:52 编辑
你计算的s是第n次落地后反弹到高点的总距离,答案计算的是n次落地时的总距离,也就是相差一个第n次反弹后的一个Hn,第10次反弹后的Hn = 100 / 2**10 = 0.097656,整好跟两个数的差对得上。
|
|