4

场景编程集锦-电闪雷鸣的数学联想

 1 year ago
source link: https://blog.51cto.com/u_12757888/5995450
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

1. 场景描述

场景编程集锦-电闪雷鸣的数学联想_编程进阶

电闪雷鸣总能给人许多的联想。

我联想到了电闪雷鸣、暴雨倾盆、山洪爆发、洪水泛滥的灾难场景,这种现象在中国古代通常被解释为“冒犯神灵,雷神发怒”的因果关系。

我联想到了著名的风筝实验。1752年,美国科学家本杰明·富兰克林用风筝和钥匙做了一次科学实验,他冒着雷击的危险用风筝把雷电引下来,证明了闪电是一种放电现象。富兰克林关于天上和人间的电是同一个东西的假说,在这次实验中得到了光辉的证实。这个风筝实验震惊了世界,因为在此之前的许多年,人们把雷电看做是神和上帝的化身,将雷击看做是上帝对人类的惩罚。而风筝实验的结果科学地揭开了雷电的神秘面纱,雷电不是天神作法,而是带电云层相遇而产生的一种放电现象。

我联想到了关于全球气候变化的巴黎宣言。为应对全球气候变暖,减少化石能源依赖,倡导大力发展清洁能源。近些年来,中国在光伏发电、风力发电、潮流能发电等领域取得了令世界属目的巨大成功。事实上,中国在太空发电站的研究方面,早已经领先于世界。在太空建立太阳能发电站并不遥远,可望彻底摆脱化石燃料依赖。我们也终究会掌握雷电安全利用的金钥匙,到那时雷电将造福于全人类。

我还联想到了一个有趣而又不被人留意的自然现象:为什么在雷暴天气,我们总是先看到闪电,而后听到雷声?我们如何用数学方法测算和度量雷击的距离?


2. 编程思路

不得不说,这是一个独特的视角来观察电闪雷鸣。由于光的传播速度比声音在空气中的传播速度要快,所以人们总是先看到闪电,后听见雷声。要计算雷击的距离,我们需要知道声音的传播速度,通过计量我们看到闪电与听见雷声的时间差,再乘以声音传播速度,就可以计算出雷击的距离。通过搜索引擎在互联网上进行查询得知:声音在空气中的传播速度是:空气(15℃)340m/s ,空气(25℃)346m/s 。我们暂且可以取传播速度为每秒340米。


3. 代码实现

在本节内容中,我们将编写两个程序版本,实现完全相同的功能。

3.1 函数版本

"""
distance.py : 计算雷击的距离
"""


def distance(time):
""" 计算雷击距离 """
result = 340 * time / 1000 # ①
return result

def main():
time = int(input('闪电和雷声时间差(秒): ')) # ②
result = distance(time)
print('雷击距离:{0}千米'.format(result))

if __name__ == '__main__':
main() # ③

语句①声音传播速度乘以传播时间,计算出雷击的距离。这里把距离单位转换为公里。
语句②实现函数嵌套调用,首先调用input()键盘输入的返回值是字符串,然后调用函数int()完成字符串到整数的转换。
语句③是调用main()函数,它是整个程序的入口,代码逻辑是从这里开始执行。

3.2 脚本版本

"""
distance2.py : 计算雷击的距离
"""

time = int(input('闪电和雷声时间差(秒): ')) # ①
result = 340 * time / 1000 # ②
print('雷击距离:{0}千米'.format(result)) # ③

这是一个具有IPO经典结构的Python脚本程序。IPO结构讲的是一个完整的程序应该包含3个部分,那就是输入(Input)-处理(Process)-输出(Output)。
语句①是程序的输入部分,从键盘输入数据;
语句②是程序逻辑处理部分,完成程序的计算功能;
语句③是程序的输出部分,打印计算结果。


4. 执行效果

4.1 函数版本

D:\cases\电闪雷鸣的数学联想>python distance.py

闪电和雷声时间差(秒): 5
雷击距离:1.7千米

4.2 脚本版本

D:\cases\电闪雷鸣的数学联想>python distance2.py

闪电和雷声时间差(秒): 5
雷击距离:1.7千米

两个版本的程序执行结果完全一致,都实现了计算雷击距离的功能。


5. 代码评价

这两个版本的程序代码都实现了相同功能,满足了业务需求,但是它们各有特点。其中:
脚本版本实现的程序具有代码简洁,逻辑清晰,简单易懂的特点。脚本编程方法通常仅适用于代码量较小的开发任务,我的建议是程序代码量最好不超过30行。否则随着代码行的增加,程序维护工作量也将显著增加,同时这种编码风格通常被认为不很专业,至少可以认定你现在还处在“菜鸟”级别的编程阶段。
函数版本的程序代码充分体现了软件工程的模块化设计思想,可以提高代码重用效率,有利于程序功能扩展以及后期代码调试和维护,有利于开发团队成员间的协同开发工作。

如果你有意愿想成为一名优秀的Python程序员,那么你就应该学习和掌握函数版本distance.py的编程思想和编程风格,这也是我推荐的编程风格和方法。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK