四分历python实现

简介: 根据一个新加坡人的c代码改写成python代码   1 ''' 四分历''' 2 3 # 4 zq = 0 5 month = 0 6 7 def main(): 8 global month 9 year = 1 ...

根据一个新加坡人的c代码改写成python代码

 

  1 ''' 四分历'''
  2 
  3 # 
  4 zq = 0
  5 month = 0
  6 
  7 def main():
  8     global month
  9     year = 1
 10     rb_year = 0
 11     moon = 0  # number of new moon since beginning of ru bu year.
 12     tmonth = 0
 13     continues = False
 14 
 15     while year != 0:
 16         year = int(input("\nPlease Enter a year to do computation (range:85~236, 0 to exit):"))
 17 
 18         if year == 0: 
 19             return
 20         if year < 85 or year > 236:
 21             print("\nCalculation of Si Fen Li doesn't apply to your input value.")
 22             input("\nPress Enter to continue.")
 23             #getch(continues);
 24             continue
 25 
 26         rb_year = (year + 9281) % 76
 27         tmonth = 14 + Leap_y(rb_year)
 28 
 29         print("月\t朔\t望\t长度\t中气\t时间\t时间\t时间")
 30         print("- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -")
 31 
 32         month = 11
 33         #zq = 0
 34         for moon in range(1, tmonth + 1):
 35             if moon % 8 == 0:
 36                 #print("\n")
 37                 pass
 38             print_s(rb_year, moon)
 39             month += 1
 40             if month > 12:
 41                 month = 1
 42 
 43         input("\nPress Enter to continue.")
 44 
 45 # 润年
 46 def Leap_y( rbyear):
 47     isLeap = 0
 48     if ((rbyear - 1) * 235 ) % 19 >= 12:
 49         isLeap = 1
 50     return isLeap
 51 
 52 # 润月
 53 def Leap_m(rbyear, month):
 54     isLeap = 0
 55     completed_month = (rbyear - 1) * (235.0/19.0) + (month - 1)
 56     acd_first = (completed_month * (29.0+499.0/940.0) )
 57     acd_last  = ((completed_month + 1.0) * (29.0+499.0/940.0) )
 58     qi_first  = int(acd_first)/(30.0+14.0/32.0)
 59     qi_last   = int(acd_last) / (30.0+14.0/32.0)
 60 
 61     if qi_first - int(qi_first) != 0:
 62         if int(qi_first) == int(qi_last) or qi_last == int(qi_last):
 63             isLeap = 1
 64 
 65     return isLeap
 66 
 67 
 68 # 打印结果
 69 def print_s(rbyear, moon):
 70     global zq
 71     global month
 72     name_s = acd_shuo(rbyear, moon)
 73     name_w = acd_wang(rbyear, moon)
 74     time_s = ( acd_shuo(rbyear, moon) - float(name_s) ) * 24.0
 75     time_w = ( acd_wang(rbyear, moon) - float(name_w) ) * 24.0
 76     length = int(acd_shuo(rbyear, moon + 1)) - name_s
 77 
 78     if Leap_m(rbyear, moon) == 0:    #if is not a leap month.
 79         zq += 1
 80         name_q = acd_qi(rbyear, zq);
 81         time_q = ( acd_qi(rbyear, zq) - (float)(name_q) ) * 24.0
 82         print("{}\t1\t{:.1f}\t{:.3f}\t{:.1f}\t{:.3f}\t{:.3f}\t{:.1f}".format(month, time_s, name_w - name_s + 1, time_w, length, name_q - name_s + 1, time_q))
 83     else:
 84         month -= 1
 85         print("{}(Leap)\t1\t{:.1f}\t{:.3f}\t{:.1f}\t{:.3f}".format(month, time_s, name_w - name_s + 1, time_w, length))
 86 
 87 
 88 #
 89 def acd_shuo(rbyear, moon):
 90     completed_month = ((rbyear - 1) * 235 / 19) + moon - 1
 91     return completed_month * (29.0+499.0/940.0)
 92 
 93 #
 94 def acd_wang(rbyear, moon):
 95     completed_month = ((rbyear - 1) * 235 / 19) + moon - 1
 96     return (completed_month + 0.5) * (29.0+499.0/940.0)
 97 
 98 #
 99 def acd_qi(rbyear, qi):
100     completed_qi = ((rbyear - 1) * 12) + qi - 1
101     return completed_qi * (30.0+14.0/32.0)
102 
103 
104 if __name__ == '__main__':
105     main()

 

目录
相关文章
|
11天前
|
设计模式 开发者 Python
Python编程中的设计模式:工厂方法模式###
本文深入浅出地探讨了Python编程中的一种重要设计模式——工厂方法模式。通过具体案例和代码示例,我们将了解工厂方法模式的定义、应用场景、实现步骤以及其优势与潜在缺点。无论你是Python新手还是有经验的开发者,都能从本文中获得关于如何在实际项目中有效应用工厂方法模式的启发。 ###
|
1天前
|
Python
不容错过!Python中图的精妙表示与高效遍历策略,提升你的编程艺术感
本文介绍了Python中图的表示方法及遍历策略。图可通过邻接表或邻接矩阵表示,前者节省空间适合稀疏图,后者便于检查连接但占用更多空间。文章详细展示了邻接表和邻接矩阵的实现,并讲解了深度优先搜索(DFS)和广度优先搜索(BFS)的遍历方法,帮助读者掌握图的基本操作和应用技巧。
13 4
|
1天前
|
设计模式 程序员 数据处理
编程之旅:探索Python中的装饰器
【10月更文挑战第34天】在编程的海洋中,Python这艘航船以其简洁优雅著称。其中,装饰器作为一项高级特性,如同船上的风帆,让代码更加灵活和强大。本文将带你领略装饰器的奥秘,从基础概念到实际应用,一起感受编程之美。
|
4天前
|
存储 人工智能 数据挖掘
从零起步,揭秘Python编程如何带你从新手村迈向高手殿堂
【10月更文挑战第32天】Python,诞生于1991年的高级编程语言,以其简洁明了的语法成为众多程序员的入门首选。从基础的变量类型、控制流到列表、字典等数据结构,再到函数定义与调用及面向对象编程,Python提供了丰富的功能和强大的库支持,适用于Web开发、数据分析、人工智能等多个领域。学习Python不仅是掌握一门语言,更是加入一个充满活力的技术社区,开启探索未知世界的旅程。
13 5
|
1天前
|
机器学习/深度学习 JSON API
Python编程实战:构建一个简单的天气预报应用
Python编程实战:构建一个简单的天气预报应用
10 1
|
1天前
|
算法 Python
在Python编程中,分治法、贪心算法和动态规划是三种重要的算法。分治法通过将大问题分解为小问题,递归解决后合并结果
在Python编程中,分治法、贪心算法和动态规划是三种重要的算法。分治法通过将大问题分解为小问题,递归解决后合并结果;贪心算法在每一步选择局部最优解,追求全局最优;动态规划通过保存子问题的解,避免重复计算,确保全局最优。这三种算法各具特色,适用于不同类型的问题,合理选择能显著提升编程效率。
15 2
|
4天前
|
人工智能 数据挖掘 开发者
探索Python编程:从基础到进阶
【10月更文挑战第32天】本文旨在通过浅显易懂的语言,带领读者从零开始学习Python编程。我们将一起探索Python的基础语法,了解如何编写简单的程序,并逐步深入到更复杂的编程概念。文章将通过实际的代码示例,帮助读者加深理解,并在结尾处提供练习题以巩固所学知识。无论你是编程新手还是希望提升编程技能的开发者,这篇文章都将为你的学习之旅提供宝贵的指导和启发。
|
16天前
|
弹性计算 安全 小程序
编程之美:Python让你领略浪漫星空下的流星雨奇观
这段代码使用 Python 的 `turtle` 库实现了一个流星雨动画。程序通过创建 `Meteor` 类来生成具有随机属性的流星,包括大小、颜色、位置和速度。在无限循环中,流星不断移动并重新绘制,营造出流星雨的效果。环境需求为 Python 3.11.4 和 PyCharm 2023.2.5。
|
9天前
|
数据处理 Python
从零到英雄:Python编程的奇幻旅程###
想象你正站在数字世界的门槛上,手中握着一把名为“Python”的魔法钥匙。别小看这把钥匙,它能开启无限可能的大门,引领你穿梭于现实与虚拟之间,创造属于自己的奇迹。本文将带你踏上一场从零基础到编程英雄的奇妙之旅,通过生动有趣的比喻和实际案例,让你领略Python编程的魅力,激发内心深处对技术的渴望与热爱。 ###
|
12天前
|
数据采集 机器学习/深度学习 人工智能
Python编程入门:从基础到实战
【10月更文挑战第24天】本文将带你进入Python的世界,从最基础的语法开始,逐步深入到实际的项目应用。我们将一起探索Python的强大功能和灵活性,无论你是编程新手还是有经验的开发者,都能在这篇文章中找到有价值的内容。让我们一起开启Python的奇妙之旅吧!
下一篇
无影云桌面