a=29.53059  #一个月是这么多天
N=1000      #计算这么多个月的#b是个N行3列的二维数组。
b=[[0,0,0] for i in range(N)]
#开始计算
b[0][0]=a
b[0][1]=29
b[0][2]=b[0][0]-b[0][1]
for i in range(1,N):b[i][0]=b[i-1][2]+aif b[i][0]>=30:b[i][1]=30else:b[i][1]=29b[i][2]=b[i][0]-b[i][1]#生成大小月,连续两个大月,标记为闰月。
月份=[]
for i in range(N):if b[i][1]==29:月份.append('小')else:月份.append('大')
for i in range(1,N):if 月份[i]=='大' and 月份[i-1]=='大':月份[i]='闰'
#print(月份)def print_b(b):for line in b:#print(line)print(f'{line[0]:.6f} {line[1]:2d} {line[2]:.6f}')
print_b(b)
print('-'*40)  #画一条分割线串=''.join(月份)
#print(串)#打印“串”,遇到“闰”就换行。
def print串(串):for ch in 串:if ch=='闰':print(ch)else:print(ch,end='')
print串(串)import fractions
f=fractions.Fraction('0.53059')
print('-'*40)  #画一条分割线
print(f.limit_denominator(100))
print(f.limit_denominator(1000))

已知一个月是29.53059天,如果正好是29.5天/月,则规律很简单,一个小月(29天)和一个大月(30天)交替出现即可。但实际上情况要复杂一点,编写了如上程序,进行计算和模拟。

a是个常数。
b是个N行3列的二维表,A列表示浮点数的天数,B列表示这个月的整数天数,C列表示当月剩余天数。

模拟的结果和实际的农历不同。例如,模拟结果中,没有出现连续两个小月,而实际上农历包括这种情况。如2023-4-19和2023-5-18。

或许这是因为设计农历时,中国还是古代,数据没有现在这么精确,所以结果有差距。

以下分析python程序:
第5行,建立一个二维数组。虽然一行就出来了,但我认为不够简练。

第7到第9行,初始化二维数组的第一行。

第10到第16行,建立二维数组。

第19到第27行,由上述二维数组产生一维数组,即取出二维数组的第二列。当月天数为29天的是小月,为30天的是大月,连续两个大月,用闰月表示。

第30行,打印二维数组。

第37行,把标记着“小大闰”的月份,串成一串。

第41行,打印“串”,遇到“闰”就换行。

最后两行,计算浮点数的近似分数,denominator是分母的意思。

然后解释模拟结果的含义。有两种模式,对应于两个近似分数。一个是29.53059≈29+26/49,每49个月有26个大月,这26个大月的分布情况是:
小大小大小大小大小大小大小大小大闰,17个月
再17个月,再15个月,构成49个月。
17+17+15=49

另一种模式对应29+477/899,每899个月有477个大月,分布情况是:
17+(17+17+15)×18
先是17个月的“小大小大……闰”,
然后是(17+17+15),如模式一所述。
这一模式要重复18次。

python,计算并发现闰月的规律相关推荐

  1. PYTHON 解决小学奥数找规律之一

    PYTHON 解决小学奥数找规律之一 这段代码主要是为了计算小学生奥数中一道找规律的填空题, 原题是1,2,5,13,34,()看规律填空, 通过分析发现规律就是第N个数字等于上一个数字加前面所有数字 ...

  2. python计算思维、数组计算与曲线绘制_可视化计算——数组计算与曲线绘图(续)...

    可视化计算--数组计算与曲线绘图(续) ①地图制作--世界地震地点绘制 在此我们利用http://earthquake.usgs.gov/earthquakes/feed/v1.0/summary/4 ...

  3. python -- 计算 平方、乘方、平方根_从零开始学习PYTHON3讲义(二)把Python当做计算器...

    <从零开始PYTHON3>第二讲 上一讲我们说过了如何启动Python IDLE集成开发学习环境,macOS/Linux都可以在命令行执行idle3.Windows则从开始菜单中去寻找ID ...

  4. 鬼才!用Python计算圆周率 π

    目录 一.圆周率的历史发展 1.中国 2.印度 3.欧洲 二.用python计算圆周率 A货:什么!你不会背圆周率(鄙夷的眼神) 3.1415926535 8979323846 26433... 桥哥 ...

  5. python计算计算时间_用Python向孩子介绍计算思维

    python计算计算时间 底特律公共图书馆的帕克曼分馆在暑假期间被无聊的孩子拿走了所有计算机所淹没,图书馆认为这不是问题,而是机会. 他们成立了一个编码俱乐部, 帕克曼编码器 ( Parkman Co ...

  6. python计算生态规模_Python计算生态的构建

    本专题的内容结构: 第一部分主要是:如何编写Python第三方库(包和模块) 第二部分主要是:如何编写带有c语言扩展的Python第三方库(包和模块) 第一部分的结构: unit1:深入理解Pytho ...

  7. 用Python计算最长公共子序列和最长公共子串

    如何用Python计算最长公共子序列和最长公共子串 1. 什么是最长公共子序列?什么是最长公共子串? 1.1. 最长公共子序列(Longest-Common-Subsequences,LCS) 最长公 ...

  8. [转载] 语言程序设计第4版黄洪艺_计算机二级教程 Python语言程序设计 第8章python计算生态...

    参考链接: Python | 接球比赛 第八章学习知识导图 考点主要是: 1) 基本的Python内置函数 2) 了解Python计算生态 3) 作者归纳:这章看一下基本概念,主要认真看一下代码和代码 ...

  9. 如何用python画长方形_python opencv 画矩形跟老齐学Python之用Python计算

    一提到计算机,当然现在更多人把她叫做电脑,这两个词都是指computer.不管什么,只要提到她,普遍都会想到她能够比较快地做加减乘除,甚至乘方开方等.乃至于,有的人在口语中区分不开计算机和计算器. 那 ...

  10. python怎么命名未知数_怎样用Python计算含有未知数的方程式-百度经验

    学得深入,思考透彻,就能举一反三,发现事物之间的同质性,表面只学了一样,其实这类都明白了,效率会更高,效果也更好.下面就就和小伙伴们共同学习,怎样用Python计算含有未知数的方程式? 工具/原料 电 ...

最新文章

  1. iOSUI视图面试及原理总结
  2. CNN结构:场景分割与Relation Network
  3. Ubuntu18.04下解决Qt出现qt.qpa.plugin:Could not load the Qt platform plugin “xcb“问题
  4. android trace获取和分析
  5. CH340串口驱动(包含各系统平台)
  6. 某计算机配置的内存为2GB,实测告诉你为APU分配64MB和2GB显存性能差距多大
  7. 佛系宿华和他的“信任电商”伪命题
  8. C#服务端如何获取外网IP
  9. 【ftp 上传文件失败】
  10. 2021年全球与中国水上巡航行业市场规模及发展前景分析
  11. PowerPoint基础操作-PowerPoint学习记录-8.1/2/3/4
  12. 直播技术——视频编解码(理论基础)
  13. Zookeeper 报错 zookeeper Invalid config, exiting abnormally
  14. 天河三号是量子计算机吗,“天河三号”原型机亮相,排名有望继续世界第一
  15. matlab采样率什么意思,求教。音频文件的位数,码率,采样率都代表什么意思啊?...
  16. 母に捧げる作者木小歌
  17. 知道这些税务小技巧,财务就能给公司赚钱
  18. 2021-2027全球与中国移动设备用半导体封装基板市场现状及未来发展趋势
  19. java jtextfield 改变_java – 如何更改JTextField的值?
  20. 网站运营SEO笔记:网赚圈,最近网站被攻击的有点猛!

热门文章

  1. 女性黑客的崛起将造福世界
  2. 【disordered_zip】BUGKU
  3. 【Transformer论文模型细致讲解】
  4. C++解题报告:连续的“包含”子串长度——(线段树+尺取法)
  5. 【网络编程】传输层重点协议详解(UPD+TCP)
  6. 转:为什么你不是真正的快乐
  7. android 自定义控件 书籍,android整理之自定义控件
  8. 计算机二级C语言辅导考试买啥书,在大学想考计算机二级,请问自学的话需要买什么辅导书,要买好几本是吗?...
  9. 山大中心校区计算机课在哪,山东大学有几个校区,哪个校区最好及各校区介绍...
  10. 南京师范计算机科学研究生分数线,2020南京师范大学考研复试分数线已公布