Python语言课程设计报告格式Word文件下载.docx
- 文档编号:13105726
- 上传时间:2022-10-05
- 格式:DOCX
- 页数:12
- 大小:116.35KB
Python语言课程设计报告格式Word文件下载.docx
《Python语言课程设计报告格式Word文件下载.docx》由会员分享,可在线阅读,更多相关《Python语言课程设计报告格式Word文件下载.docx(12页珍藏版)》请在冰豆网上搜索。
Project/数据挖掘和统计分析可视化调研报告/程序/PPT等/爬虫数据采集服务(附代码数据),咨询QQ:
3025393450
#%s自基础时间1970-01-0100:
00:
00到date的秒数
#计算现在时间到基础时间的秒数
#计算今天到生日日期间隔秒数(s1-s2)
#判断生日是否已经过去了,如果过去,则计算下一年到现在的时间
(3)基本思路
1.``和$()用法是一样的,用来包裹命令。
2.进行加减等运算时用$(())
3.if命令[]中前后都有空格
4.date的一些用法
1.3算法设计
(1)算法流程图
(2)模块说明
在datetime模块里有一个计算时间差的timedelta。
让两个datetime对象相减就得到timedelta
(3)算法实现
核心算法的实现(写代码段和注释)
path='
./info.txt'
importdatetime
fromdateutil.relativedeltaimportrelativedeltafilewritepath="
./result.txt"
filewrite=open(filewritepath,"
w"
)
#判断生日前一年是不是闰年
defshifouzengjaiyitian(before,now):
ifbefore.year!
=now.year:
ifshifoushirunnian(before.year):
return1
return0
defshifoushirunnian(years):
if((years%4==0andyears%100!
=0)or(years%400==0)):
#判断是否是闰
年
returnTrue
else:
returnFalse
withopen(path)asfile_object:
contents=file_object.readlines()forlineincontents:
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()
foriinrange(0,100):
nextyear_birth=birth+relativedelta(years=i)ifnextyear_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"
breakfilewrite.flush()
1.4.调试分析
(1)优点分析:
用if条件句进行判断,当输入的时间年月日时分秒都在各自的范围之内时,则正确,否则错误
(2)缺点分析:
调用库函数清屏重新显示时分秒,就这样知直到倒数完
(3)改进的方法:
用到for循环if条件句,先把输出的时间换算成时分秒的格式,接着从小时开始判断
1.5.测试
题目2:
阿姆斯壮数
在三位的整数中,例如153可以满足13+53+33=15,3这样的数称之为Armstrong
数
水仙花数(Narcissisticnumber)也被称为超完全数字不变数(pluperfectdigital
invariant,PPDI)、自恋数、自幂数、阿姆斯壮数或阿姆斯特朗数(Armstrongnumber),
水仙花数是指一个3位数,它的每个位上的数字的3次幂之和等于它本身(例如:
1^3+
5^3+3^3=153)。
(1)数据结构
。
结构定义如下:
它的每个位上的数字的3次幂之和等于它本身(例如:
1^3+5^3+3^3=153)。
n为1时,自幂数称为独身数。
显然,0,1,2,3,4,5,6,7,8,9都是自幂数。
n为2时,没有自幂数。
n为3时,自幂数称为水仙花数,有4个:
153,370,371,407;
n为4时,自幂数称为四叶玫瑰数,共有3个:
1634,8208,9474;
n为5时,自幂数称为五角星数,共有3个:
54748,92727,93084;
n为6时,自幂数称为六合数,只有1个:
548834;
n为7时,自幂数称为北斗七星数,共有4个:
1741725,4210818,9800817,9926315;
n为8时,自幂数称为八仙数,共有3个:
24678050,24678051,88593477;
n为9时,自幂数称为九九重阳数,共有4个:
146511208,472335975,534494836,
912985153;
n为10时,自幂数称为十全十美数,只有1个:
4679307774。
1,第一次循环
sum=sum+(temp%10)**3意思就是取temp的个位数的立方
temp//=10意思是除以10,整除去掉余数(例如:
283//10=28)也叫地板除2,第二次循环
sum=sum+(temp%10)**3这时temp已经变成两位数,现在除10取余数就相当于原数据的十位,二sum=个位的立方(sum)+原数据十位的立方
这是的原理就是一个N位的十进制正整数,如果它的每个位上的数字的N次方的和等于这个数本身,则称其为花朵数,
defArmstrong():
foriinrange(100,1000):
a=i//100b=(i%100)//10c=i%10
if(a**3+b**3+c**3==i):
print("
%d\n"
%i)pass
pass
passArmstrong()
篇python使用循环打印所有三位数水仙花数的实例,具有很好的参考价值
运行效率有待提升
使用函数进行包装
题目3:
Shell排序法——改良的插入排序
插入排序法由未排序的后半部前端取出一个值,插入已排序前半部的适当位置,概念简单但速度不快。
排序要加快的基本原则之一,是让后一次的排序进行时,尽量利用前一次排序后的结果,以加快排序的速度,Shell排序法即是基于此一概念来改良插入排序法。
以从小到大排序为例,元素0为第一个元素,插入排序是从元素1开始,尽可能插到前面。
插入时分插入位置和试探位置,元素i的初始插入位置为i,试探位置为i-1,在插入元素i时,依次与i-1,i-2 元素比较,如果被试探位置的元素比插入元素大,那么被试
探元素后移一位,元素i插入位置前移1位,直到被试探元素小于插入元素或者插入元素位于第一位。
将数组(Python中相当于list)中的元素分为两个部分:
一、是前部分,是已经排好序的;
二、后一部分是带排序的。
每次取待排序的一个元素,插入到前面已经排好序的部分,要求不破坏前半部分的有序性。
**
在完成插入排序时我想了两种方法(本质一样):
第一种:
先找到元素要插入的位置,然后将从该位置(包括)到待插入元素位置之间的元素都向后移动一位,最后将元素插入该位置。
defshaker_sort(unsorted):
foriinrange(len(unsorted)-1,0,-1):
swapped=False
forjinrange(i,0,-1):
ifunsorted[j]<
unsorted[j-1]:
unsorted[j],unsorted[j-1]=unsorted[j-1],unsorted[j]swapped=True
forjinrange(i):
ifunsorted[j]>
unsorted[j+1]:
unsorted[j],unsorted[j+1]=unsorted[j+1],unsorted[j]
swapped=Trueifnotswapped:
returnunsortedshaker_sort(unsorted)print(unsorted)
1.4.调试分析
(1)优点分析:
实例,具有很好的参考价值
(2)缺点分析:
最坏情况下,时间复杂度为n^2/2.
(3)改进的方法:
1.5.测试
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Python 语言 课程设计 报告 格式