1. 场景描述

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

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

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

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

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


2. 编程思路

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


3. 代码实现

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

3.1 函数版本

"""distance.py : 计算雷击的距离
"""def distance(time):""" 计算雷击距离 """result = 340 * time / 1000   # ①return resultdef 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的编程思想和编程风格,这也是我推荐的编程风格和方法。

场景编程应用集锦 - 电闪雷鸣的数学联想相关推荐

  1. 场景编程集锦 - 懵懂的青春

    1. 场景描述 "等待着下课,等待着放学,等待游戏的童年".当罗大佑这首耳熟能详的"童年"再度想起的时候,你和我是否都会被这个熟悉的旋律带回到那个只属我们的懵懂 ...

  2. 作为程序员,你在编程中吃了哪些数学的亏?

    作为程序员你在编程中吃过哪些亏?(以下留言来自图灵读者亲身经历) 精彩评论 我再等一分钟 吃过最大的亏就是现在看数据分析与挖掘的书,面对各种各样的矩阵.积分.微积分等各类高数,线代的知识......头 ...

  3. 深入探讨编程到底需要知道多少数学知识

    全世界只有3.14 % 的人关注了 数据与算法之美 这篇文章中我会深入探讨编程中所需要的数学知识.你可能已经都知道了. 对于基本的编程,你需要知道下面的: 加减乘除 - 实际上,电脑会帮你作加减乘除运 ...

  4. c 语言 数据库 pdf下载,Visual C/C++ 编程精选集锦 数据库及图形图像分册 PDF扫描版[38MB]...

    Visual C/C++ 编程精选集锦 数据库及图形图像分册 内容简介: Visual C/C++作为功能强大的可视化应用程序开发工具,是计算机界公认的优秀应用开发工具.Microsoft的基本类库M ...

  5. Python花式编程案例集锦(9):sorted()函数中消失的cmp参数

    明天开启全国巡讲Python模式,连续8场20天讲课,外加路上来回大约16天,这个假期有的忙了.所以接下来的一段时间里不一定能像以前更新的那么频繁,我尽量. 在很久很久很久以前,公众号曾经推送过这样一 ...

  6. Python花式编程案例集锦(8):判断吉祥数字

    问题描述:在有些文化中,认为含有8的数字是吉祥数字,能给自己带来好运.要求编写一个函数测试给定的数字是否为吉祥数字. 参考代码: 代码运行没有输出,说明两种方法是等价的. 思考题:在checkLuck ...

  7. Python花式编程案例集锦(7):判断回文

    所谓回文,是指一个词或一句话,正着读和反着读都一样,例如eye,did之类的单词. 参考代码: 运行结果: ----------相关阅读---------- 1900页Python系列PPT分享一:基 ...

  8. Python花式编程案例集锦(6)

    问题描述:输出"水仙花数".所谓水仙花数是指1个3位的十进制数,其各位数字的立方和等于该数本身.例如:153是水仙花数,因为153 = 1^3 + 5^3 + 3^3 . #参考代 ...

  9. java编程需要数学知识吗_编程需要很好的数学吗?

    展开全部 数学和编程有一种容易让人636f707962616964757a686964616f31333431356565误解的联系.许多人认为在开始学习编程之前必须对数学很在行或数学分数很高.但一定 ...

最新文章

  1. python matplotlib pyplot plt.axhline()函数(绘制平行于x轴的水平参考线)
  2. 步进电机控制芯片_STK682/步进电机_STK682-010-E控制芯片 原创中文翻译
  3. jzoj3236-矮人排队【权值线段树】
  4. 大数据 java 代码示例_Java变量类型与示例
  5. AndroidStudio_安卓原生开发_蓝牙扫描设备_另一种方法---Android原生开发工作笔记145
  6. cut out数据增强_被多种离散化场景困扰?8种python技巧!让数据处理更简单
  7. 遥感技术在水利行业的应用
  8. 中国十佳IT外包企业排行榜
  9. 弘兵金融学院 站在山顶 看不见山
  10. 传输层的重要协议——TCP
  11. visio直线交叉相交跨线修改
  12. 在线引用最新jquery文件方法
  13. 赛尔五镜头倾斜相机PSDK 102S |改变永不止步 6维度全新升级
  14. [转载]MIDAS/Gen常见问题汇编(一) 转自百思论坛
  15. CesiumJs 简单操作模型
  16. 罗克韦尔自动化官网如何下载设备固件
  17. android4.0 x86,PC专用Android 4.0 x86系统上手体验
  18. 弹载计算机标准,弹载计算机
  19. 这款文言文编程语言是什么神物?
  20. video怎么自动播放

热门文章

  1. 最近公共祖先(LCA)/倍增LCA
  2. 微信小程序for循环,点击传递参数
  3. 臭氧效果器免安装版 – iZotope Ozone Advanced v9.1.0 WiN
  4. 我的创作纪念日 -- 2022年7月25日
  5. Windows Server 2012 R2 详细安装步骤
  6. 常用的8种排序算法稳定性分析
  7. Microsoft 365推新版本 为中国企业注入复苏动力
  8. 数据库的优化以及如何提高数据库性能
  9. 二叉搜索树的后序遍历序列(Java)
  10. melogin.cn主页登录_melogincn首页