同时,月球的昼夜交替是自转和公转共同作用的结果,其昼夜交替要比地球慢地多。一般来说,月球上太阳“升起”后要经过160多小时才能到达月球的正当空,从正当空落到“月平线”以下又需要160多小时,这是月球上的白昼;

再经过320多小时的黑夜,才是月球上完整的一天。准确来说,地球上的一天是23小时56分04秒,而月球上的一天则是655.71984个小时,也就是说,月球上的一天大约相当于地球上的27.32天。

02

计算思路

仅仅知道了时间长度还不足以计算日期,我们还需要设置一个基准点,本文中,我们将公元1年1月1日的0时为月球和地球共同的时间基准点,这样一来,计算月球上的日期就变得可行了。

第一步,对于某个特定的地球历,可以计算出它距离基准时间点过了多少天,例如公元0年1月2日18时距离基准时间点过了1.75天;

第二步,根据地球和月球一天时间长度的对应关系,计算出月球日期距离基准时间点的天数,例如上一步中的地球日期在月球上相对基准时间点经过的天数为0.064天;

第三步,根据月球上相对基准时间点经过的天数,计算月球上的日期。

当然,这样计算得出的月球日期会有些许误差,事实上,威斯康星大学麦迪逊分校地球科学教授斯蒂芬·梅尔斯团队的最新研究表明,月球正以约3.82厘米/年的速度缓慢离开地球,导致地球自转变慢,地球上的每一天也在慢慢变长。

在14亿年前,月地之间的距离更近,地球自转得更快,当时地球上的一天仅为18小时。

这样看来,我们对月球日期的计算误差也就在可接受范围之内了。

03

Python实现

计算思路清晰了,用python实现起来也就非常简单了。具体代码实现如下:

其中,我们依次构建了几个函数:

get_standard用来计算基准时间点

get_earth_days计算指定地球日期距离基准时间点的地球天数

get_moon_days计算指定日期距离基准时间点的月球天数

get_moon_date用来计算指定地球日期相对应的月球日期。

下面我们就来测试一下程序运行情况,苏轼的《水调歌头·明月几时有》写于“丙辰中秋”,根据推算应该是公元1076年9月21日,假设当时时间为20时,那么我们的地球日期输入就是“1076-09-21 20”,把它放到程序中跑一跑,就得到了当时的月球日期40年5月17日,也就是词中“天上宫阙”的年月了。

近期热门:

重量计算python月球_千年前的古诗,苏轼的不知月亮上是何年何月|现在我用Python来计算出来了...相关推荐

  1. 苏轼不知月亮上是何年何月 | Python计算出来了

    「2019 Python开发者日」全日程揭晓,请扫码咨询 ↑↑↑ 作者 | 奔跑的鳄鱼 来源 | 菜鸟学Python(ID:cainiao_xueyuan) "明月几时有?把酒问青天.不知天 ...

  2. 千锋教育python全集_千锋教育-Python逆战班1905期(完整版)

    千锋教育面授课程包含HTML5大前端培训.JavaEE+分布式开发培训.Python全栈+人工智能培训.全链路UI/UE设计培训.云计算培训.全栈软件测试培训.大数据+人工智能培训.智能物联网+嵌入式 ...

  3. 千锋教育python全集_千锋python+人工智能最新视频教程(大全集)

    第一章xa0Python语音基础简介: 通过第一章的学习,对Python有一定的了解,掌握Python语法,可以使用Python原生语言开发项目.对于Python的应用于开发有一个系统的认知,对于未来 ...

  4. 运维学python哪部分_初入运维的小伙伴,别再问需不需要学Python了

    这篇文章来自百度知道(你可以搜索"运维需不需要学Python"),或许有些观点不一定正确,但运维学Python这事毫无疑问是主流了,不信可以到各大招聘网站,看看但凡招聘运维有编程技 ...

  5. community 计算模块度_聚苯乙烯泡沫模块可以用在哪些建筑上?

    云亭烯诚邀合作及加盟 什么是EPS?可发性聚苯乙烯(Expandable Polystyrene)通称聚苯乙烯和苯乙烯系共聚物,简称EPS,是一种轻型高分子聚合物. 它主要由聚苯乙烯和分散在其中的低沸 ...

  6. python作品_专业解读 | 制作游戏、开发APP、 爬虫采集数据等背后,Python全栈专业背后还有更大的世界...

    01 什么是Python全栈专业 全栈是指利用多种技能独立完成产品开发,以实践方式将前端.后端.移动端.服务器端等领域结合到一起. 例如我们可以用全栈的技术来开发跳一跳或者是豆瓣这样的产品. 什么是p ...

  7. 与小卡特一起学python 豆瓣_《父与子的编程之旅:与小卡特一起学Python》

    原标题:<父与子的编程之旅:与小卡特一起学Python> 内容简介 本书是一本家长与孩子共同学习编程的入门书.作者是一对父子,他们以Python语言为例,详尽细致地介绍了Python如何安 ...

  8. python计算在月球的体重程序_# Python程序语言设计基础(第二版)程序练习题

    Python程序语言设计基础(第二版)程序练习题 3.1 重量计算,月球上物体的体重是在地球上的16.5%,假如你在地球上每年增长0.5kg,编写程序输出未来10年你在地球和月球上的体重状况. cur ...

  9. python计算密集型提速_利用Cython加速计算密集型python任务

    何为计算密集型任务 下面贴上网上找到的描述计算密集型任务的特点是要进行大量的计算,消耗CPU资源,比如计算圆周率.对视频进行高清解码等等,全靠CPU的运算能力.这种计算密集型任务虽然也可以用多任务完成 ...

最新文章

  1. 碰上摩尔纹怎么办?这5招帮你解决!
  2. mysql双机热备 读写分离_MySQL——主从复制与读写分离
  3. matlab 随机森林算法_随机森林算法
  4. java配置文件工具类,java项目加载配置文件的工具类
  5. php画图教程,php画图实例_PHP
  6. hikaripool信息_聊聊hikari连接池的fixed pool design
  7. 分布式存储系统学习笔记(一)—什么是分布式系统(1)—基本概念
  8. 通达信指标加密DLL加密解密三个公式源码准确率90%以上超级指标精准买卖绝世指标
  9. JEB配合IDA神器逆向
  10. Ubuntu操作-01 安装NVIDIA显卡驱动
  11. 库卡机器人示教器截屏_库卡机器人示教器
  12. 8类必须学会的运营工具
  13. 小学计算机教师业务笔记,2016-2017学年度小学教师业务学习笔记
  14. 交换机端口mtu值最大_H3CCAS接口MTU值方法
  15. 机器码怎么改?笔记本机器码怎么改?(最新你看你也会)
  16. Power BI介绍
  17. 忆享科技聚焦|数字经济、网络安全、5.5G、数字火炬手……热点资讯一览
  18. Windows批处理(cmd/bat)常用命令教程
  19. vue表单验证插件 vuerify
  20. qnx linux usb驱动,QNX USB device与host模式下驱动脚本详解

热门文章

  1. SAP License:FI疑难问题小结
  2. 数据可视化、模板框架、动态控件、可视化大屏、数据原型、监控平台、图表元件库、数据看板、驾驶舱、统计图表、消防、大屏展示、安防、智慧城市、旅游、运输、医疗卫生、贸易、电力、政务、水质、工业园区环境监测
  3. ImageMagick的下载和配置
  4. Luogu P1039 侦探推理(模拟+枚举)
  5. NOIP 贪心 国王游戏
  6. openldap quick start guide
  7. bzoj2661: [BeiJing wc2012]连连看
  8. EasyUI Combobox 设置默认值
  9. 转:perror和strerror的区别
  10. DedeCMS自定义表单制作和调用办法