菜鸟IT的博客 >> Python
实战100例 - 第20例 - 关于1个球从100米落地,第10次落地时,总共经过多少米?| reduce | 数字列表里的全部数字相加求和总和
# -*- coding: utf-8 -*-
# 题面:一球从100米高度自由落下,
# 每次落地后反跳回原高度的一半;
# 再落下,求它在第10次落地时,共经过多少米?
# 第10次反弹多高?
from functools import reduce
LuoDiZongMiList=[]
FanTanZongMiList=[]
KaiShiGaoDu=100
LuoDiCiShu=10
for i in range(1,LuoDiCiShu+1):
if (i==1):
LuoDiZongMiList.append(KaiShiGaoDu)
FanTanZongMiList.append(KaiShiGaoDu/2)
print("第",i,"次落地高度变化记录:", LuoDiZongMiList)
print("第",i,"次反弹高度变化记录:", FanTanZongMiList)
print("*"*50)
else:
KaiShiGaoDu=KaiShiGaoDu/2
LuoDiZongMiList.append(KaiShiGaoDu)
FanTanZongMiList.append(KaiShiGaoDu/2)
print("第", i, "次落地高度变化记录:", LuoDiZongMiList)
print("第", i, "次反弹高度变化记录:", FanTanZongMiList)
print("*" * 50)
# 先求出10次落地的经历的总高度
LuoDiZongMi=reduce(lambda x, y: x+y, LuoDiZongMiList)
print("所有落地经历的米数之和:",LuoDiZongMi)
# 再求出10次反弹的经历的总高度
FanTanZongMi=reduce(lambda x, y: x+y, FanTanZongMiList)
print("所有反弹经历的米数之和:",FanTanZongMi)
# 求最后1次,也就是第10次反弹的高度
ZuiHouFanTanMi=FanTanZongMiList[-1]
print("最后一次反弹的高度:",ZuiHouFanTanMi)
# 因为每次反弹记录都是在每次落下记录发生之后
# 所以当地10次落地经过总共多少米,应该是落地总米+反弹总米-最后1次反弹米数
print("第10次落地一共经历:",LuoDiZongMi+FanTanZongMi-ZuiHouFanTanMi,"米!")
★★★——————————————
输出结果:
第 1 次落地高度变化记录: [100]
第 1 次反弹高度变化记录: [50.0]
**************************************************
第 2 次落地高度变化记录: [100, 50.0]
第 2 次反弹高度变化记录: [50.0, 25.0]
**************************************************
第 3 次落地高度变化记录: [100, 50.0, 25.0]
第 3 次反弹高度变化记录: [50.0, 25.0, 12.5]
**************************************************
第 4 次落地高度变化记录: [100, 50.0, 25.0, 12.5]
第 4 次反弹高度变化记录: [50.0, 25.0, 12.5, 6.25]
**************************************************
第 5 次落地高度变化记录: [100, 50.0, 25.0, 12.5, 6.25]
第 5 次反弹高度变化记录: [50.0, 25.0, 12.5, 6.25, 3.125]
**************************************************
第 6 次落地高度变化记录: [100, 50.0, 25.0, 12.5, 6.25, 3.125]
第 6 次反弹高度变化记录: [50.0, 25.0, 12.5, 6.25, 3.125, 1.5625]
**************************************************
第 7 次落地高度变化记录: [100, 50.0, 25.0, 12.5, 6.25, 3.125, 1.5625]
第 7 次反弹高度变化记录: [50.0, 25.0, 12.5, 6.25, 3.125, 1.5625, 0.78125]
**************************************************
第 8 次落地高度变化记录: [100, 50.0, 25.0, 12.5, 6.25, 3.125, 1.5625, 0.78125]
第 8 次反弹高度变化记录: [50.0, 25.0, 12.5, 6.25, 3.125, 1.5625, 0.78125, 0.390625]
**************************************************
第 9 次落地高度变化记录: [100, 50.0, 25.0, 12.5, 6.25, 3.125, 1.5625, 0.78125, 0.390625]
第 9 次反弹高度变化记录: [50.0, 25.0, 12.5, 6.25, 3.125, 1.5625, 0.78125, 0.390625, 0.1953125]
**************************************************
第 10 次落地高度变化记录: [100, 50.0, 25.0, 12.5, 6.25, 3.125, 1.5625, 0.78125, 0.390625, 0.1953125]
第 10 次反弹高度变化记录: [50.0, 25.0, 12.5, 6.25, 3.125, 1.5625, 0.78125, 0.390625, 0.1953125, 0.09765625]
**************************************************
所有落地经历的米数之和: 199.8046875
所有反弹经历的米数之和: 99.90234375
最后一次反弹的高度: 0.09765625
第10次落地一共经历: 299.609375 米!
进程已结束,退出代码0
菜鸟IT博客[2022.01.23-01:09] 访问:282