Python课程设计实训报告简易计算器、简易时钟_第1页
Python课程设计实训报告简易计算器、简易时钟_第2页
Python课程设计实训报告简易计算器、简易时钟_第3页
Python课程设计实训报告简易计算器、简易时钟_第4页
Python课程设计实训报告简易计算器、简易时钟_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

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

文档简介

Python语言程序课程设计(报告)《Python语言程序课程设计》(报告)题目:简易计算器、简易时钟

摘要本文主要设计了建议数学计算器。该设计的硬件平台是计算机实训中心的电脑,主要由窗口编辑及按钮的创建、按钮功能的定义、数据的处理显示等几部分组成。软件采用python语言编程。实现的主要功能是进行一些基本的数学运算,主要技术指标是不同类别的函数之间联系的建立,本设计的优点是代码较为简单通俗易懂,可以应用到软件开发、计算机编程等领域。需要改进的是代码重复率高,书写较为繁琐。(要求200~300字)关键词:tkinter模块的应用、按钮的创建、列表与运算数据之间的转换、目录TOC\o"1-3"\h\u第1章概述 51.1课题选择 51.2设计目的 61.3设计工具 6第2章设计内容 72.1编写一个简易计算器 72.11设计任务及要求 72.12程序代码 72.13编译调试及运行结果 112.2编写一个可自动校准时间的时钟 122.2.1设计任务及要求 122.2.2程序代码 122.2.3编译调试及运行结果 15第3章总结 16参考文献 19高级程序设计实践课程设计(报告)第1章概述课题选择 当今世界是电子信息技术革命的时代,全面智能化是这个时代的主题。尤其是对于劳动密集型产业,对全面自动化的需求量极大,不仅能节省人力资源,而且效率更高,收益更大。计算机语言的普及与算法的成熟是发展这一切至关重要的步骤,网络实力成为了衡量一个国家发展程度的重要指标,因此,计算机技术的进步也远超其他物理或硬件设备的发展。一、计算机专业一直是人们口中的热门专业,近年来,高校的计算机专业也不断扩招。随着互联网的发展,计算机专业人才的缺乏也没有得到有效缓解。国内的软件开发人才,网络技术、信息安全等方面的人才缺乏比较严重。高水平的系统分析师,资深项目策划人员非常少,从事程序开发的程序员也比较缺乏。二、社会对计算机人才总需求量有明显变化,企业是吸纳人才的主力,随着国有企业改革步伐加大,对高新技术人才、计算机专业大学生的需求会迅速增长,高新技术企业每年产值增长在百分之二十以上。三、计算机专业就业前景随着科技的进步和信息事业的发展,尤其是计算机技术的发展与网络应用的逐渐普及。四、计算机已成为人们工作和生活中不可缺少的东西。IT行业的发展。在最近几年内IT在职场排行榜中仍旧处于所有行业中的“老大”。虽然说计算机这行就业单位很多,但是面临的竞争也非常激烈。只有对基础知识的学习才可以受用终身。随着科技的进步和信息事业的发展,尤其是计算机技术的发展与网络应用的逐渐普及。计算机已成为人们工作和生活中不可缺少的东西。IT行业迅猛发展,就业工作岗位也比比皆是。在最近几年内IT行业在职场排行榜中仍旧处于所有行业中的“老大”。计算机专业学生就业方向也应该有所提高。虽然说计算机这行就业单位很多,但是面临的竞争也非常激烈。只有对基础知识的学习才可以受用终身1.2设计目的能够进行基础运算,并且保正正确率,追求更高效、更简便的算法,让书写的程序一目了然,为不编程过程探索更多路径,扩展自我视野、充实认知,计算机语言发展迅速,日新月异,及时掌握不同代码之间的变通,以便在未来遇到较为先进的程序能及时掌握先进的思想。Python是一门开源的高级动态编程语言,支持命令式编程、函数式编程、面向对象程序设计,语法简洁清晰,并且拥有大量功能丰富而强大的标准库和扩展库。本课程通过上机实验,使得学生能够理解Python的编程模式,验证、理解直至熟练运用课堂所学知识。本实验课程的目的是:通过本课程的学习,使得学生能够熟练使用IDLE或其他Py开发环境,熟练运用列表、元组、字典、集合等基本数据类型以及相关列表推导式、切片等特性来解决实际问题,熟练掌握Python分支结构、循环结构、函数设计以及类的设计与使用,熟练使用正则表达式处理字符串,熟练使用Python。1.3设计工具 图1.3python第2章设计内容2.1题目12.1.1设计任务及要求设计一款计算器能进行简单的四则运算 至少能保证三位数则以内的准确性2.1.2程序代码importtkinter#导入tkinter模块root=tkinter.Tk()root.minsize(280,500)result=tkinter.StringVar()result.set(0)result2=tkinter.StringVar()#创建显示面板,label=tkinter.Label(root,font=('微软雅黑',20),bg='#EEE9E9',bd='9',fg='#828282',anchor='se',textvariable=result2)label.place(width=280,height=170)label2=tkinter.Label(root,font=('微软雅黑',30),bg='#EEE9E9',bd='9',fg='black',anchor='se',textvariable=result)label2.place(y=170,width=280,height=60)#创建显示面板,并默认显示数字为0#数字键按钮btn7=tkinter.Button(root,text='7',font=('微软雅黑',20),fg=('#4F4F4F'),bd=0.5,command=lambda:pressNum('7'))btn7.place(x=0,y=285,width=70,height=55)btn8=tkinter.Button(root,text='8',font=('微软雅黑',20),fg=('#4F4F4F'),bd=0.5,command=lambda:pressNum('8'))btn8.place(x=70,y=285,width=70,height=55)btn9=tkinter.Button(root,text='9',font=('微软雅黑',20),fg=('#4F4F4F'),bd=0.5,command=lambda:pressNum('9'))btn9.place(x=140,y=285,width=70,height=55)btn4=tkinter.Button(root,text='4',font=('微软雅黑',20),fg=('#4F4F4F'),bd=0.5,command=lambda:pressNum('4'))btn4.place(x=0,y=340,width=70,height=55)btn5=tkinter.Button(root,text='5',font=('微软雅黑',20),fg=('#4F4F4F'),bd=0.5,command=lambda:pressNum('5'))btn5.place(x=70,y=340,width=70,height=55)btn6=tkinter.Button(root,text='6',font=('微软雅黑',20),fg=('#4F4F4F'),bd=0.5,command=lambda:pressNum('6'))btn6.place(x=140,y=340,width=70,height=55)btn1=tkinter.Button(root,text='1',font=('微软雅黑',20),fg=('#4F4F4F'),bd=0.5,command=lambda:pressNum('1'))btn1.place(x=0,y=395,width=70,height=55)btn2=tkinter.Button(root,text='2',font=('微软雅黑',20),fg=('#4F4F4F'),bd=0.5,command=lambda:pressNum('2'))btn2.place(x=70,y=395,width=70,height=55)btn3=tkinter.Button(root,text='3',font=('微软雅黑',20),fg=('#4F4F4F'),bd=0.5,command=lambda:pressNum('3'))btn3.place(x=140,y=395,width=70,height=55)btn0=tkinter.Button(root,text='0',font=('微软雅黑',20),fg=('#4F4F4F'),bd=0.5,command=lambda:pressNum('0'))btn0.place(x=70,y=450,width=70,height=55)#运算符号按钮btnac=tkinter.Button(root,text='AC',bd=0.5,font=('黑体',20),fg='orange',command=lambda:pressCompute('AC'))#归零btnac.place(x=0,y=230,width=70,height=55)btnback=tkinter.Button(root,text='back',font=('微软雅黑',20),fg='#4F4F4F',bd=0.5,command=lambda:pressCompute('b'))#删除btnback.place(x=70,y=230,width=70,height=55)btndivi=tkinter.Button(root,text='/',font=('微软雅黑',20),fg='#4F4F4F',bd=0.5,command=lambda:pressCompute('/'))#除法btndivi.place(x=140,y=230,width=70,height=55)btnmul=tkinter.Button(root,text='*',font=('微软雅黑',20),fg="#4F4F4F",bd=0.5,command=lambda:pressCompute('*'))#乘法btnmul.place(x=210,y=230,width=70,height=55)btnsub=tkinter.Button(root,text='-',font=('微软雅黑',20),fg=('#4F4F4F'),bd=0.5,command=lambda:pressCompute('-'))#减法btnsub.place(x=210,y=285,width=70,height=55)btnadd=tkinter.Button(root,text='+',font=('微软雅黑',20),fg=('#4F4F4F'),bd=0.5,command=lambda:pressCompute('+'))#加法btnadd.place(x=210,y=340,width=70,height=55)btnequ=tkinter.Button(root,text='=',bg='orange',font=('微软雅黑',20),fg=('#4F4F4F'),bd=0.5,command=lambda:pressEqual())#等于号btnequ.place(x=210,y=395,width=70,height=110)btnper=tkinter.Button(root,text='%',font=('微软雅黑',20),fg=('#4F4F4F'),bd=0.5,command=lambda:pressCompute('%'))#百分号btnper.place(x=0,y=450,width=70,height=55)btnpoint=tkinter.Button(root,text='.',font=('微软雅黑',20),fg=('#4F4F4F'),bd=0.5,command=lambda:pressCompute('.'))#小数点btnpoint.place(x=140,y=450,width=70,height=55)#操作函数lists=[]#设置一个变量保存运算数字和符号的列表isPressSign=False#添加一个判断是否按下运算符号的标志,假设默认没有按下按钮isPressNum=False#数字函数defpressNum(num):#设置一个数字函数判断是否按下数字并获取数字将数字写在显示版上globallists#全局化lists和按钮状态isPressSignglobalisPressSignifisPressSign==False:passelse:#重新将运算符号状态设置为否result.set(0)isPressSign=False#判断界面的数字是否为0oldnum=result.get()#第一步ifoldnum=='0':#如过界面上数字为0则获取按下的数字result.set(num)else:#如果界面上的而数字不是0则链接上新按下的数字newnum=oldnum+numresult.set(newnum)#将按下的数字写到面板中#运算函数defpressCompute(sign):globallistsglobalisPressSignnum=result.get()lists.append(num)#引用上述列表中的数字lists.append(sign)#直接引用按钮设置中俄的运算符号isPressSign=Trueifsign=='AC':#清空列表内容,并显示默认数字0lists.clear()result.set(0)ifsign=='b':a=num[0:-1]lists.clear()result.set(a)#获取运算结果函数defpressEqual():globallistsglobalisPressSigncurnum=result.get()lists.append(curnum)computrStr=''.join(lists)#讲列表内容用join命令将字符串链接起来endNum=eval(computrStr)#用eval命令运算字符串中的内容result.set(endNum)#讲运算结果显示到屏幕1result2.set(computrStr)#将运算过程显示到屏幕2lists.clear()#清空列表内容root.mainloop()#输出运算结果2.1.3编译调试及运行结果图2.11 图2.122.2题目2.2.1设计任务及要求设计一款能自主校准时间的时钟2.2.2程序代码importturtlefromdatetimeimport*defskip(step):turtle.penup()#画笔抬起turtle.forward(step)#画笔移动stepturtle.pendown()#画笔落下#建立表针,定制表针形状和名字defmake_hand(name,length):turtle.reset()skip(-length*0.1)#表针一端,过表盘中心一小段,开始绘制turtle.begin_poly()#开始记录多边形的第一个顶点。turtle.forward(length*1.1)#设置表针长度,绘制表针turtle.end_poly()#停止记录多边形的顶点。当前的乌龟位置是多边形的最后一个顶点。将与第一个顶点相连。handForm=turtle.get_poly()#返回最后记录的形状turtle.color('black')turtle.register_shape(name,handForm)#三个表针初始化,实例化definit_hand():globalsec_hand,min_hand,hou_hand,printer#重置Turtle指向北turtle.mode("logo")#logo:向上(北)顺时针standard:向右(东)逆时针#建立三个表针Turtle并初始化make_hand("sec_Hand",135)make_hand("min_Hand",110)make_hand("hou_Hand",70)sec_hand=turtle.Turtle()sec_hand.shape("sec_Hand")min_hand=turtle.Turtle()min_hand.shape("min_Hand")hou_hand=turtle.Turtle()hou_hand.shape("hou_Hand")#笔的属性forhandinsec_hand,min_hand,hou_hand:hand.shapesize(1,1,3)hand.speed(0)#建立输出打印的文字Turtleprinter=turtle.Turtle()#隐藏画笔的turtle形状printer.hideturtle()printer.penup()#设置表盘defset_clock(radius):turtle.reset()turtle.pencolor('red')#设置画笔颜色turtle.fillcolor('pink')#设置绘制图形的填充颜色turtle.pensize(10)#画笔宽度foriinrange(60):skip(radius)#逢五使用线条并加粗ifi%5==0:turtle.forward(20)skip(-radius-20)skip(radius+20)#设置数字的位置及字体,大小ifi==0:turtle.write(int(12),align="center",font=("Courier",14,"bold"))elifi==30:skip(25)turtle.write(int(i/5),align="center",font=("Courier",14,"bold"))skip(-25)elifi==25ori==35:skip(20)turtle.write(int(i/5),align="center",font=("Courier",14,"bold"))skip(-20)else:turtle.write(int(i/5),align="center",font=("Courier",14,"bold"))skip(-radius-20)#非五,以点代替else:turtle.dot(5)skip(-radius)turtle.right(6)#显示星期defshow_week(t):week=["星期一Mon","星期二Tue","星期三Wed","星期四Thu","星期五Fri","星期六Sat","星期日Sun"]returnweek[t.weekday()]#t.weekday()周一为0,周二为1...可作为列表的index#显示日期defshow_data(t):y=t.yearm=t.monthd=t.dayreturn"{}年{}月{}日".format(y,m,d)#显示时间#defshow_time(t):#m=t.minute#h=t.hour#return"{}:{}".format(h,m)#显示整个时钟defshow_clock():#获取时间t=datetime.today()second=t.second+t.microsecond*0.000001minute=t.minute+second/60.0hour=t.hour+minute/60.0sec_hand.setheading(6*second)min_hand.setheading(6*minute)hou_hand.setheading(30*hour)turtle.tracer(False)printer.forward(65)printer.write(show_week(t),align='center',font=("Courier",14,"bold"))printer.back(65)printer.write("TheClockofHua",align="center",font=("Courier",16,"bold"))printer.back(65)printer.write(show_data(t),align='center',font=("Courier",14,"bold"))#printer.back(25)#printer.write(show_time(t),align="center",font=("Courier",14,"bold"))#回到原点,以便于下一轮的显示printer.home()turtle.tracer(True)#100ms后继续调用show_clockturtle.ontimer(show_clock,100)#main函数defmain():turtle.tracer(False)#设置背景ts=turtle.getscreen()ts.bgcolor("#cccccc")#初始化init_hand()#设置时钟set_clock(180)turtle.tracer(True)#显示时钟show_clock()turtle.mainloop()if__name__=="__main__":main()2.2.3编译调试及运行结果 图2.2.1第3章总结在这次实训过程中,我学习了python的基础知识,并且实践了我的python基础技能,使用python软件进行开发,我的Python编程技能,使用Python进行程序开发。首先,我们开始了Python的基础语法学习,包括变量、基本数据类型、运算符、条件语句、循环结构等,以便快速开发简单应用程序。然后,我们学习工Python的觉用模块,如time.reosasyssIQ等,以便实现一些常见的蛋求。此外,课程中还讲解了Python的面向对象编程,以及函数式编程,并且为我们提供了大量的例子,以便帮助我们理解,并且编写出自己的代码。当然,Python还有许多很少使用的特性,我们也可以在实训中学习,比如正则表达式、装饰器等。此外,在实训中,我也完成了一些实际项目,例如用Python构建计算器,用Python做一个简单的时钟。这些项目让我熟悉了Python的基础知识,让我可以在实际的开发中更加快速的使用Python。总的来说,这次实训让我收获颇丰,从学习Python的基础语法,到实践Python的面向对象,函数式编程,以及一些特殊用法。但我仍然不足,需要通过不断的学习和实践,才能更加熟练的使用Python。下一步,我将继续深入学习,以提升自己的Python技能,并在实际项目中不断应用,以更好的实现自己的目标。网络科技的应用还是在校园内开办,学校内网站的数据更新也很快,不仅能提供更新的信息,还能提供给同学们的学习、生活带来新的动力。网络科技应用,是一门全新的学科,也是一门全新的学科。在大学里面,网络科技是一门全新学科,也是一门全新的学科。但是,网络与现实之间是存在着巨大的差异,网络科技是一种新型的科技,它具有极大的应用能力,可以帮助学生解决一些网络上遇不起的现实问题。在网络科技的应用,可以提高自己的交互能力、网络与现实的应用能力,从而使自己的人生受益,使自己的人生受益。这次实训带给我太多的感触,它让我知道事业途中的艰难。让我知道了实际的工作并不像在学校学习那样轻松。虽然我现在的知识结构还很差,但是我知道要学的知识,要靠努力学习,要靠行动实践。没有实践,学习就是无稽之谈。这次实训让我感觉在瞬间长大:我们不可能永远呆在井底,过着无忧无虑的生活,我们总是要踏入社会的,新时代的社会,就是要靠我们这些年轻的能源代来推动。不论在不久后的我,面临的是就业压力,还是继续深造,我想我都应该好好经营时间,充实、完善自我。实训中除了学到不少python的专业知识,也了解了包括人际交往,沟通方式的内容,对于团队开发来说,团结一致使我深有体会。团队的合作注重沟通和信任,不能不屑于做自利的事,永远都要保持亲和诚信,把专业理论运用到具体实践中,加深我对理论的掌握和运用。除此课本上的知识毕竟有限。通过实训,我班同学都有这样一个感觉,课本上的理论知识与实际作作有很大的区别,只有知识是远远不够的,专业技能急需提高。从最初的笨手笨脚,到现在可以熟练的按照流程开发软件,这都与我班每个人的努力是分不开的。这次的实训,教会了我们很多东西,同时也锻炼了我踏实、稳重品质,每个人都很珍惜这来之不易的实训机会。在实际工作中经常会和不同的同事领导打交道,这就需要学会沟通的方式及说话技巧,学会灵活应对。通过这本次实训,我班同学都收获颇丰,总体来说对这次实训还是很满意的。尽管实训很累,每天早出晚归。但真的很感谢学校能够提供我们这样好的实训机会。我们深刻的了解到,只有经历过,才知道其中的滋味。对于我来说,喜欢体验生活,可以说通过这次实训,真真切切的让我了解了什么是软件开发,什么是软件工程,让我对于软件最初的观点也有了本质性的改变!程序员不仅仅是一份职业,更是一份细心+一份耐心+一份责任成就一份的价值的诠释。即将面向工作岗位的我们更要不断加强python的专业技能,计算机行业发展迅速、日新月异,未来的变数非常多,所以我们要更多更快的掌握最新的知识,以便能够应对突飞猛进的信息时代。为此

温馨提示

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

评论

0/150

提交评论