实验(抽象)函数_第1页
实验(抽象)函数_第2页
实验(抽象)函数_第3页
实验(抽象)函数_第4页
实验(抽象)函数_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、实验步骤:1.编写一个类,创建两个数组用于存放从1901到2050年之间所有的闰月,闰年,之后再通过编写几个函数,将阳历转化为阴历,输出即可。2. 根据图形找*, 分别与行数i之间的关系及规律,然后用for循环控制输出即可。3. 根据阶乘计算方法用for循环依次计算乘积,直到满足条件为止,然后用if语句控制输出即可。4. 运行程序,根据报错信息发现程序的问题。5. 编写一个函数,用for循环遍历所有三位数,当数符合水仙花条件:一个三位数,其各位数字立方和等于该数 本身,将此数输出即可。6. 编写一个函数,把用户密码设置为一个字符串,将用户输入的密码与设置的密码进行比较,如果相同,输出“密码输入

2、正确!”;如果用户密码里包含*,则不算输入错误,但需要重新输入;其他输入情况都算输入错误,计入输入错误的次数,当用户输入错误次数超过3次时,用户不能再输入密码。实验结果:1. 公历 2017-12-19农历冬月初二 2. please input the number of raw:4 * * * * * * * * * * * * * * * * 3. 1 的阶乘是: 12 的阶乘是: 23 的阶乘是: 64 的阶乘是: 245 的阶乘是: 1206 的阶乘是: 7207 的阶乘是: 50408 的阶乘是: 403209 的阶乘是: 10 的阶乘是: 11 的阶乘是: 12 的阶乘是: 13

3、 的阶乘是: 14 的阶乘是: 15 的阶乘是: 0016 的阶乘是: 00017 的阶乘是: 600018 的阶乘是: 2800019 的阶乘是: 20 的阶乘是: 4.python中函数可以嵌套定义,但在函数内部定义的函数只能在内部使用,外部无法调用5. water()水仙花数是: 153 370 371 4076. testify()please input your password:输入正确! testify()please input your password:1please input your password:2please input your password:3*pl

4、ease input your password:4 testify()please input your password:1please input your password:2please input your password:3*please input your password:4*please input your password:输入正确! testify()please input your password:1please input your password:1please input your password:1疑难小结:1.输出三角图形时一直报参数类型错,经

5、检查,发现raw_input()是输入字符串,与for循环里的行数n类型不一致,改成input()后解决了此问题。2.python中函数可以嵌套定义,但在函数内部定义的函数只能在内部使用,外部无法调用3.阳历转阴历,研究了好久,也没什么头绪。经上网查询资料,大概了解了下阴历,阳历之间的关系,发现还挺复杂的,因为主要需要考虑闰年和闰月的问题。程序清单:1.import datetimeclass Lunar(object): g_lunar_month_day = 0x4ae0, 0xa570, 0x5268, 0xd260, 0xd950, 0x6aa8, 0x56a0, 0x9ad0, 0x

6、4ae8, 0x4ae0, #1910 0xa4d8, 0xa4d0, 0xd250, 0xd548, 0xb550, 0x56a0, 0x96d0, 0x95b0, 0x49b8, 0x49b0, #1920 0xa4b0, 0xb258, 0x6a50, 0x6d40, 0xada8, 0x2b60, 0x9570, 0x4978, 0x4970, 0x64b0, #1930 0xd4a0, 0xea50, 0x6d48, 0x5ad0, 0x2b60, 0x9370, 0x92e0, 0xc968, 0xc950, 0xd4a0, #1940 0xda50, 0xb550, 0x56a0

7、, 0xaad8, 0x25d0, 0x92d0, 0xc958, 0xa950, 0xb4a8, 0x6ca0, #1950 0xb550, 0x55a8, 0x4da0, 0xa5b0, 0x52b8, 0x52b0, 0xa950, 0xe950, 0x6aa0, 0xad50, #1960 0xab50, 0x4b60, 0xa570, 0xa570, 0x5260, 0xe930, 0xd950, 0x5aa8, 0x56a0, 0x96d0, #1970 0x4ae8, 0x4ad0, 0xa4d0, 0xd268, 0xd250, 0xd528, 0xb540, 0xb6a0,

8、0x96d0, 0x95b0, #1980 0x49b0, 0xa4b8, 0xa4b0, 0xb258, 0x6a50, 0x6d40, 0xada0, 0xab60, 0x9370, 0x4978, #1990 0x4970, 0x64b0, 0x6a50, 0xea50, 0x6b28, 0x5ac0, 0xab60, 0x9368, 0x92e0, 0xc960, #2000 0xd4a8, 0xd4a0, 0xda50, 0x5aa8, 0x56a0, 0xaad8, 0x25d0, 0x92d0, 0xc958, 0xa950, #2010 0xb4a0, 0xb550, 0xb5

9、50, 0x55a8, 0x4ba0, 0xa5b0, 0x52b8, 0x52b0, 0xa930, 0x74a8, #2020 0x6aa0, 0xad50, 0x4da8, 0x4b60, 0x9570, 0xa4e0, 0xd260, 0xe930, 0xd530, 0x5aa0, #2030 0x6b50, 0x96d0, 0x4ae8, 0x4ad0, 0xa4d0, 0xd258, 0xd250, 0xd520, 0xdaa0, 0xb5a0, #2040 0x56d0, 0x4ad8, 0x49b0, 0xa4b8, 0xa4b0, 0xaa50, 0xb528, 0x6d20

10、, 0xada0, 0x55b0, #2050 #数组gLanarMonth存放阴历1901年到2050年闰月的月份,如没有则为0,每字节存两年 g_lunar_month = 0x00, 0x50, 0x04, 0x00, 0x20, #1910 0x60, 0x05, 0x00, 0x20, 0x70, #1920 0x05, 0x00, 0x40, 0x02, 0x06, #1930 0x00, 0x50, 0x03, 0x07, 0x00, #1940 0x60, 0x04, 0x00, 0x20, 0x70, #1950 0x05, 0x00, 0x30, 0x80, 0x06, #

11、1960 0x00, 0x40, 0x03, 0x07, 0x00, #1970 0x50, 0x04, 0x08, 0x00, 0x60, #1980 0x04, 0x0a, 0x00, 0x60, 0x05, #1990 0x00, 0x30, 0x80, 0x05, 0x00, #2000 0x40, 0x02, 0x07, 0x00, 0x50, #2010 0x04, 0x09, 0x00, 0x60, 0x04, #2020 0x00, 0x20, 0x60, 0x05, 0x00, #2030 0x30, 0xb0, 0x06, 0x00, 0x50, #2040 0x02, 0

12、x07, 0x00, 0x50, 0x03 #2050 START_YEAR = 1901 # 月份 lm = 正二三四五六七八九十冬腊 # 日份 ld = 初一初二初三初四初五初六初七初八初九初十十一十二十三十四十五十六十七十八十九二十廿一廿二廿三廿四廿五廿六廿七廿八廿九三十 def _init_(self, dt = None): 初始化:参数为datetime.datetime类实例,默认当前时间 self.localtime = dt if dt else datetime.datetime.today() def ln_year(self): # 返回农历年 year, _, _ =

13、 self.ln_date() return year def ln_month(self): # 返回农历月 _, month, _ = self.ln_date() return month def ln_day(self): # 返回农历日 _, _, day = self.ln_date() return day def ln_date(self): # 返回农历日期整数元组(年、月、日)(查表法) delta_days = self._date_diff() #阳历1901年2月19日为阴历1901年正月初一 #阳历1901年1月1日到2月19日共有49天 if (delta_day

14、s 49): year = self.START_YEAR - 1 if (delta_days = tmp: delta_days -= tmp year += 1 tmp = self._lunar_year_days(year) #计算月 (foo, tmp) = self._lunar_month_days(year, month) while delta_days = tmp: delta_days -= tmp if (month = self._get_leap_month(year): (tmp, foo) = self._lunar_month_days(year, mont

15、h) if (delta_days 4 def _lunar_month_days(self, lunar_year, lunar_month): if (lunar_year self._get_leap_month(lunar_year) and self._get_leap_month(lunar_year): iBit -= 1 if (self.g_lunar_month_daylunar_year - self.START_YEAR & (1 iBit): low += 1 if (lunar_month = self._get_leap_month(lunar_year): if

16、 (self.g_lunar_month_daylunar_year - self.START_YEAR & (1 (iBit -1): high = 30 else: high = 29 return (high, low) def _lunar_year_days(self, year): days = 0 for i in range(1, 13): (high, low) = self._lunar_month_days(year, i) days += high days += low return days # 返回指定公历日期的儒略日 def _julian_day(self):

17、 ct = self.localtime #取当前时间 year = ct.year month = ct.month day = ct.day if month = 2: month += 12 year -= 1 B = year / 100 B = 2 - B + year / 400 dd = day + 0. #本日12:00后才是儒略日的开始(过一秒钟)*/ return int(365.25 * (year + 4716) + 0.01) + int(30.60001 * (month + 1) + dd + B - 1524.5 # 返回指定年份的节气的儒略日数 def _ju

18、lian_day_of_ln_jie(self, year, st): s_stAccInfo = 0.00, .40, .60, .80, .60, .80, .80, .60, .00, .40, .40, .00, .80, .20, .20, .20, .40, .80, .20, .00, .40, .40, .20, .60 #已知1900年小寒时刻为1月6日02:05:00 base1900_SlightColdJD = . if (st 24): return 0.0 stJd = 365. * (year - 1900) + s_stAccInfost / 86400.0 return base1900_SlightColdJD + stJd# 测试def test(ct=None): ln = Lunar(ct) print(公历 .format(ln.localtime.date() print( .format(ln.ln_date_str()if _name_ = _main_: ct = datetime.datetime(2017,12,19) test(ct)2.def rawnum(): n=input(

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论