四分历python实现

根据一个新加坡人的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()
时间: 2024-10-05 21:40:23

四分历python实现的相关文章

Python 历遍目录

Automate the Boring Stuff 学习笔记 01 使用 os 模块的 walk() 函数可以实现历遍目录的操作,该函数接收一个绝对路径字符串作为必选参数,返回三个参数: 当前目录——指程序当前工作目录——名称(字符串格式) 当前目录——指程序当前所历遍到的目录——下所有子文件夹(列表格式) 当前目录——指程序当前所历遍到的目录——下所有文件(列表格式) 假设有如下文件结构: 程序代码如下: import os for folderName, subfolders, filena

python walk历遍目录

import osimport fnmatch def is_file_match(filename, patterns): for pattern in patterns: if fnmatch.fnmatch(filename, pattern): return True return False def find_specific_files(root, patterns=['*'], exclude_dir=[]): for root, dirnames, filenames in os

Python内建方法

参考: https://docs.python.org/3.4/library/functions.html https://docs.python.org/2/library/functions.html http://blog.csdn.net/jgood/article/details/4371991 以上链接分别为Python官网的3.4版本的内建方法说明.2.X(指2.6和2.7)版本的内建方法说明.以及JGood对2.X版本的内建方法说明的翻译. abs(x) 返回一个数的绝对值.参

Python基础教程【读书笔记】 - 2016/7/31

希望通过博客园持续的更新,分享和记录Python基础知识到高级应用的点点滴滴! 第十波:第10章  充电时刻 Python语言的核心非常强大,同时还提供了更多值得一试的工具.Python的标准安装包括一组模块,称为标准库standard library.展示这些模块的工作方式,讨论如何分析它们,学习它们所提供的功能. [10.1] 模块 已经知道如何创建和执行自己的程序,也学会了怎么用import从外部模块获取函数并且为自己的程序使用.接下来看看怎么编写自己的模块. [10.1.1] 模块是程序

Python基础教程(第十章 自带电池)

本文内容全部出自<Python基础教程>第二版,在此分享自己的学习之路. ______欢迎转载:http://www.cnblogs.com/Marlowes/p/5459376.html______ Created on Marlowes 现在已经介绍了Python语言的大部分基础知识.Python语言的核心非常强大,同时还提供了更多值得一试的工具.Python的标准安装中还包括一组模块,称为标准库(standard library).之前已经介绍了一些模块(例如math和cmath,其中包

Python基础篇(八)

key words:私有变量,类静态变量,生成器,导入Python模块,r查看模块可以使用的函数,查看帮助信息,启动外部程序,集合,堆,时间模块,random模块,shelve模块,文件读取等 >>> class Rectangle: ...     def __init__(self): ...         self.__width = 0 ...         self.__height = 0 ...     def setSize(self,width,height): .

python学习笔记:Day02

一.列表(list) 1.定义一个列表 name=["tom","jerry","12","13","lose","me"]  2.索引 与字符串的索引一样,列表索引从0开始. print ("第一个元素:%s"%name[0]) >>第一个元素:tom print ("最后一个元素:%s"%name[-1])>>最后一个元

Python 2.7数据类型操作_20161010

为兼容python3.x版本 print 后都加了括号 python 数据类型 参考廖雪峰大神python2.7教程 http://www.liaoxuefeng.com/wiki/001374738125095c955c1e6d8bb493182103fac9270762a000/001374738264643de15c5c4abad47dd9510e3b86286acb8000 # -*- coding: utf-8 -*- #一.20161010 字符型 数据类型字符型 变量 运算符 可以

Python 基础 - Day 5 Learning Note - 模块 之 标准库:xml (9)

xml 模块介绍 和json一样,适用于不同语言及程序的数据交换的协议.但是json用起来更简单,并有代替xml的趋势. 现在多数金融数据提供方(e.g. bloombegy)还在用xml的方式. 在python中,生成和解析 XML 文件 用 导入 xml.etree.ElementTree 模块 xml文件的格式 xml的格式如下,就是通过<>节点来区别数据结构的: xml的格式 常用操作 读取xml import xml.etree.ElementTree as ET tree = ET