- 1、本文档共7页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Python语言课程设计报告
题目一:计算离自己生日还有多少天
1.1 问题描述
编程实现,从文件中读取同学的信息后,计算离他们下一次过生日还有多少天。并将结果按照下图格式,存放到“birthday.txt”文件中
1.2设计思想
(1)数据结构
#?输入自己生日,计算离自己生日还有多少天
#?History
#生日所在月
#生日所在日
#今年年份
#%s?自基础时间?1970-01-01?00:00:00?到date的秒数
#计算现在时间到基础时间的秒数
#计算今天到生日日期间隔秒数(s1-s2)
#判断生日是否已经过去了,如果过去,则计算下一年到现在的时间
(3)基本思路
1.``和$()用法是一样的,用来包裹命令。
2.进行加减等运算时用$(())
3.if?命令[]中前后都有空格
4.date的一些用法
1.3 算法设计
(1)算法流程图
(2)模块说明
在datetime模块里有一个计算时间差的 timedelta。让两个datetime对象相减就得到timedelta
(3)算法实现
核心算法的实现(写代码段和注释)
path = ./info.txt
import datetime
from dateutil.relativedelta import relativedelta
filewritepath = ./result.txt
filewrite = open(filewritepath,w)
#判断生日前一年是不是闰年
def shifouzengjaiyitian(before,now):
if before.year != now.year:
if shifoushirunnian(before.year):
return 1
return 0
def shifoushirunnian(years):
if ((years % 4 == 0 and years % 100 != 0) or (years % 400 == 0)): # 判断是否是闰年
return True
else:
return False
with open(path) as file_object:
contents = file_object.readlines()
for line in contents:
stripline = line.strip()
name = stripline.split(,)[0]
riqi = stripline.split(,)[1].split(:)[1]
birth = datetime.datetime.strptime(riqi, %Y年%m月%d日)
now = datetime.datetime.now()
for i in range(0,100):
nextyear_birth = birth + relativedelta(years=i)
if nextyear_birth now:
filewrite.writelines(name+,离下次生日(+nextyear_birth.strftime(%Y年%m月%d日)+)
+还有+str((nextyear_birth-now).days+1
+shifouzengjaiyitian(nextyear_birth+relativedelta(years=-1),now))+天\n)
break
filewrite.flush()
1.4.调试分析
(1)优点分析: 用if条件句进行判断,当输入的时间年月日时分秒都在各自的范围之内时,则正确,否则错误
(2)缺点分析:
调用库函数清屏重新显示时分秒,就这样知直到倒数完
改进的方法:
用到for循环if条件句,先把输出的时间换算成时分秒的格式,接着从小时开始判断
1.5.测试
题目2:阿姆斯壮数
1.1 问题描述
在三位的整数中,例如153可以满足13 + 53 + 33 = 153,这样的数称之为Armstrong数
水仙花数(Narcissistic number)也被称为超完全数字不变数(pluperfect digital invariant, P
文档评论(0)