四分历python实现
根据一个新加坡人的c代码改写成python代码
- ''' 四分历'''
- #
- zq = 0
- month = 0
- def main():
- global month
- year = 1
- rb_year = 0
- moon = 0 # number of new moon since beginning of ru bu year.
- tmonth = 0
- continues = False
- while year != 0:
- year = int(input("\nPlease Enter a year to do computation (range:85~236, 0 to exit):"))
- if year == 0:
- return
- if year < 85 or year > 236:
- print("\nCalculation of Si Fen Li doesn't apply to your input value.")
- input("\nPress Enter to continue.")
- #getch(continues);
- continue
- rb_year = (year + 9281) % 76
- tmonth = 14 + Leap_y(rb_year)
- print("月\t朔\t望\t长度\t中气\t时间\t时间\t时间")
- print("- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -")
- month = 11
- #zq = 0
- for moon in range(1, tmonth + 1):
- if moon % 8 == 0:
- #print("\n")
- pass
- print_s(rb_year, moon)
- month += 1
- if month > 12:
- month = 1
- input("\nPress Enter to continue.")
- # 润年
- def Leap_y( rbyear):
- isLeap = 0
- if ((rbyear - 1) * 235 ) % 19 >= 12:
- isLeap = 1
- return isLeap
- # 润月
- def Leap_m(rbyear, month):
- isLeap = 0
- completed_month = (rbyear - 1) * (235.0/19.0) + (month - 1)
- acd_first = (completed_month * (29.0+499.0/940.0) )
- acd_last = ((completed_month + 1.0) * (29.0+499.0/940.0) )
- qi_first = int(acd_first)/(30.0+14.0/32.0)
- qi_last = int(acd_last) / (30.0+14.0/32.0)
- if qi_first - int(qi_first) != 0:
- if int(qi_first) == int(qi_last) or qi_last == int(qi_last):
- isLeap = 1
- return isLeap
- # 打印结果
- def print_s(rbyear, moon):
- global zq
- global month
- name_s = acd_shuo(rbyear, moon)
- name_w = acd_wang(rbyear, moon)
- time_s = ( acd_shuo(rbyear, moon) - float(name_s) ) * 24.0
- time_w = ( acd_wang(rbyear, moon) - float(name_w) ) * 24.0
- length = int(acd_shuo(rbyear, moon + 1)) - name_s
- if Leap_m(rbyear, moon) == 0: #if is not a leap month.
- zq += 1
- name_q = acd_qi(rbyear, zq);
- time_q = ( acd_qi(rbyear, zq) - (float)(name_q) ) * 24.0
- 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))
- else:
- month -= 1
- print("{}(Leap)\t1\t{:.1f}\t{:.3f}\t{:.1f}\t{:.3f}".format(month, time_s, name_w - name_s + 1, time_w, length))
- # 朔
- def acd_shuo(rbyear, moon):
- completed_month = ((rbyear - 1) * 235 / 19) + moon - 1
- return completed_month * (29.0+499.0/940.0)
- # 望
- def acd_wang(rbyear, moon):
- completed_month = ((rbyear - 1) * 235 / 19) + moon - 1
- return (completed_month + 0.5) * (29.0+499.0/940.0)
- # 气
- def acd_qi(rbyear, qi):
- completed_qi = ((rbyear - 1) * 12) + qi - 1
- return completed_qi * (30.0+14.0/32.0)
- if __name__ == '__main__':
- main()
四分历python实现的更多相关文章
- Python 历遍目录
Automate the Boring Stuff 学习笔记 01 使用 os 模块的 walk() 函数可以实现历遍目录的操作,该函数接收一个绝对路径字符串作为必选参数,返回三个参数: 当前目录—— ...
- python笔记4-遍历文件夹目录os.walk()
前言 如何遍历查找出某个文件夹内所有的子文件呢?并且找出某个后缀的所有文件 walk功能简介 1.os.walk() 方法用于通过在目录树种游走输出在目录中的文件名,向上或者向下. 2.walk()方 ...
- python学习历程之split()方法获取cmd mysql 结果集
if __name__=='__main__': FServerId = raw_input("Please input source id:") GetFileKey(FServ ...
- 使用Python进行描述性统计
目录 1 描述性统计是什么?2 使用NumPy和SciPy进行数值分析 2.1 基本概念 2.2 中心位置(均值.中位数.众数) 2.3 发散程度(极差,方差.标准差.变异系数) 2.4 偏差程度(z ...
- python与ruby的差别
1.引用文件差别 Ruby:同一目录下的文件,如/usr/local/ruby/foo.rb与/usr/local/ruby/bar.rb两个文件.如果直接在foo.rb中 require 'bar' ...
- python学习笔记:Day02
一.列表(list) 1.定义一个列表 name=["tom","jerry","12","13","lose ...
- 【转】你真的理解Python中MRO算法吗?
你真的理解Python中MRO算法吗? MRO(Method Resolution Order):方法解析顺序. Python语言包含了很多优秀的特性,其中多重继承就是其中之一,但是多重继承会引发很多 ...
- Python全栈之路---运算符与基本的数据结构
运算符 一.算术运算符: 练习: + 加法 两个对象相加 1 + 2得到3:'a' + 'b'得到'ab'. - 减法 一个数减去另一个数或者是负数 5 - 3得到2:-2得到一个负数 * 乘法 两个 ...
- Python简史
Python简史 作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! Python是我喜欢的语言,简洁,优美,容易使用.前两天,我很激 ...
随机推荐
- Vue2学习笔记:v-on
Vue的事件: v-on: click/mouseover/mouseover/mousedown/dbclick/... 下面是点击事件介绍: 1.点击事件 <!DOCTYPE html> ...
- 关于easyUI分页
首先前台会传来两个参数,分别是rows(一页数据的大小,即一页有多少条数据)和page(第几页),根据这两个参数可以计算出从数据库中从第几 条数据开始取和要取多少条数据.数据取出来后,因为easyUI ...
- [翻译] FeSpinner
FeSpinner The loader collection for iOS app. 收集的iOS加载动画. REQUIREMENT FeSpinner work on any version i ...
- September 30th 2017 Week 39th Saturday
The simplest answer is often the correct one. 最简单的答案通常是最正确的答案. Simplest is always best. Sometimes yo ...
- ZT 9种排序
9种排序 2012-09-19 14:58 66人阅读 评论(0) 收藏 编辑 删除 algorithmfpfilemergeintegerfloat [cpp] view plaincopy #in ...
- if 里面嵌套一个if&else (我自己又细分了别的条件,加了elif)
场景: 一个陌生人敲门..... gender = input("你是男的是女的?") if gender == "女": print("请进&quo ...
- CSS 鼠标样式
设置鼠标指针放在一个元素边界范围内时所用的光标形状,需要对元素的css属性cursor进行设置. cursor属性可能的值: default 默认光标(通常是一个箭头) auto 默认.浏览器设置的( ...
- Ubuntu中文目录文件夹改为英文
打开终端,在终端中输入命令: export LANG=en_US xdg-user-dirs-gtk-update 在弹出的窗口中询问是否将目录转化为英文路径,同意并关闭. 在终端中输入命令: exp ...
- 【[SDOI2016]生成魔咒】
这是一道\(SA\)的练手好题 建议做之前先去做一下2408 之后你就肯定会做这道题了 首先上面那道题的答案就是 \[\sum_{i=1}^nn+1-sa[i]-het[i]\] 就是对于每一个后缀求 ...
- jenkins 基本插件