您好,欢迎访问三七文档
当前位置:首页 > 机械/制造/汽车 > 实验1--熟悉python程序设计
浙江大学城市学院实验报告课程名称数据结构----使用python实验项目名称实验一熟悉python程序设计学生姓名专业班级学号实验成绩指导老师(签名)日期一.实验目的和要求1、通过相关例题的编写,掌握python一般程序设计思想和方法。2、掌握python字符串、列表、字典等数据结构以及函数设计的常规方法。3、通过对算法的分析,掌握计算时间复杂度和空间复杂度的基本方法。4、学习理解python类的定义以及类、对象、属性、方法的概念。二.实验内容第一部分:编程项目1.编写一个程序,输入一个球体的半径(浮点数),输出球体的直径、圆周长、表面积、体积。#EX1clf1.1defball():whileTrue:try:p=3.1415r=float(input(请输入球体半径:))ifr=0:print(输入的球体半径不能小于0!)else:print(球体的直径是:%.3f%(r*2))print(球体的圆周长是:%.3f%(2*p*r))print(球体的表面积是:%.3f%(4*p*(r**2)))print(球体的体积是:%.3f%((4/3)*p*pow(r,3)))breakexceptValueError:print(输入错误,请输入数字!)if__name__==__main__:ball()2.一个雇员一周的总薪水,等于其每小时的薪水乘以一周正常工作的小时数,再加上加班费,加班费等于总的加班时间乘以每小时薪水的1.5倍。定义一个函数,以每小时的薪水、总的常规工作时间、总的加班时间为参数,计算并返回该雇员的总周薪。#EX1clf1.2defmoney():whileTrue:try:x=int(input(请输入本周常规工作时间(小时):))ifx0:print(一周常规工作时间不能小于0小时!)elifx40:print(一周常规工作时间不能超过40小时!)else:breakexceptValueError:print(输入错误!请输入整数!)whileTrue:try:y=int(input(请输入本周加班时间(小时):))ify0:print(一周的加班时间不能小于0小时!)else:breakexceptValueError:print(输入错误!请输入整数!)whileTrue:try:z=float(input(请输入您的时薪:))ifz0:print(您的时薪工资不能小于0!)else:breakexceptValueError:print(输入错误!请输入整数!)print(-*30)print(您的常规上班时间是:%d小时%(x))print(您的加班时间是:%d小时%(y))print(您的时薪是:%.2f元/小时%(z))print(您的周工资是:%.2f元%((x*z)+(y*1.5*z)))if__name__==__main__:money()3.统计学家想要设计一组函数计算一个列表(list)中所有数据的中位数、众数和平均数。中位数是将列表排序后出现在中间位置的数(若列表为奇数个元素,则中位数只有1个;若列表为偶数个元素,则中位数有2个,为中间2个元素),众数是在列表中出现最频繁的元素(可能不止一个)。输入一组整数到列表中,编写相应函数,分别求中位数、众数、平均数。4.4.编写一个函数,实现n个盘从A通过B移到C的整个移动过程。#EX1clf1.4hanodefhano(n,A,B,C):ifn==1:print(A,-,C)else:hano(n-1,A,B,C)print(A,-,C)hano(n-1,B,A,C)n=int(input(请输入盘子的个数n:))hano(n,A,B,C)as第二部分:读书笔记1.学习归纳python中字符串、列表、字典三种结构的使用方法以及常用函数。一.列表方法ls.extend(object)向列表ls中插入object中的每个元素,object可以是字符串,元组和列表(字符串“abc”中包含3个元组),相当于ls和object合并。注意:object如果是整型,必须以列表的方式传入,不可以以整型或元组的方式传入ls.append(object)将object作为一个整体插入到ls最后,object可以是字符串,元组,列表和字典ls.insert(index,object)将object作为一个整体插入到ls指定的索引位置,object可以是字符串,元组,列表和字典ls.pop([index])删除指定索引位置的元素,返回被删除的元素,如果参数为空,则默认删除最后一个索引位置的元素。注意:有返回值ls.remove(value)删除指定的元素。注意:value是序列里面的值,不是索引ls.reverse()将列表中元素进行逆向排列ls.sort(cmp=None,key=None,reverse=False)默认将列表中元素进行升序排列,可以通过reverse参数将升序设为降序.列表,元组公用的方法ls.count(value)统计列表中元素value的个数ls.index(value,[start,[stop]])返回列表中指定元素所在的索引位置,可以通过start和stop参数设置搜索范围。注意:如果不存在则会报出异常字典方法dic.clear()删除字典中所有项dic.fromkeys(S[,v])新建字典,键为S,值为v,如果S为长字符串,返回的键为字符串中的每一个字符,值将重复。注意:dic字典中的项不会改变dic.get(k[,d])获取字典中指定键的值,如果k不属于字典中的键,则返回None。注意:相当于dic[k],但是dic[k]如果k不属于字典中的键,则报出异常dic.setdefault(k[,d])类似于dit.get(k,d)方法,如果k属于字典中的键,则返回对应的值,否则,将往字典中插入键值dic.has_key(k)返回字典中是否包含键k,返回值为True和Falsedic.items()以列表的形式返回字典中的键值,每一对键值存放在元组中dic.keys()以列表的形式返回字典所有键dic.values()以列表的形式返回字典中所有值(values)dic.iteritems()/dic.iterkeys()/dic.itervaleus()键值迭代器,一般用于for循环dic.viewitems()返回字典中键值的视图,单个键值对存放在元组中,所有键值对存放在列表中,返回类型为dict_items,也可以作为迭代用于for循环dic.viewkeys()/dic.viewvalues()返回字典中值的视图,单个值存放在元组中,所有值存放在列表中,返回类型为dict_items,也可以作为迭代用于for循环dic.pop(k[,d])删除字典中指定键的值,并返回被删除键的对应值dic.popitem()随机删除某个键值对,并返回被删除键的对应值,无需往方法中传入参数dic.update([E,]**F)将字典E中的键值对更新到dic中,相当于列表dic和列表E合并后更新到列表dic中dic.copy()只复制字典中的父对象,对子对象采取引用的办法。改变子对象的内容会影响到复制和被复制的字典。2.学习归纳python中函数定义、参数以及函数调用的一般方法。3.学习python中类(class)定义的方法,以及类、对象、属性、方法等概念以及一般使用方式。尝试定义以下几个类:矩形(长、宽、周长、面积)、图书(包括书号、书名、作者、出版社、价格)、通讯录(姓名、性别、电话号码、邮件地址、类别……)第三部分:程序时间性能1.测试程序的运行时间在此,我们通过一个比较,分析实现同样功能的不同写法两个程序段的执行效率的例子,掌握测试算法运行时间的基本方法。这里涉及到python中time库,time库中提供了处理与时间相关的函数,可自行查阅相关资料学习。步骤1:输入下面程序并运行。importtimex=eval(input(inputx:))#输入1.9n=int(input(inputn:))#输入大于10000t1=time.clock()#当前时间sum=1foriinrange(1,n+1):sum1=1;forjinrange(1,i+1):sum1=sum1*(-1.0/x)sum=sum+sum1t2=time.clock()#再取当前时间t=t2*1000-t1*1000#程序运行经过时间,毫秒print(sum=%f,用时%d毫秒\n%(sum,t))#上述程序功能另一种写法t1=time.clock()#当前时间sum=1sum1=1foriinrange(1,n+1):sum1=sum1*(-1.0/x)sum=sum+sum1t2=time.clock()#再取当前时间t=t2*1000-t1*1000#程序运行经过时间,毫秒print(sum=%f,用时%d毫秒\n%(sum,t))步骤2:请读懂上面程序,并分析:程序运行结果:输入x:_______1.9_________________________输入n:____________12121____________________输出为:___________sum=1.000000,用时2毫秒________________________sum=1.000000,用时2646毫秒_________________________________这两个程序段实现了同一个功能是:这两个算法在程序结构上的区别是:__________________________________________________________________________________________________________________________________________它们的时间复杂度分别是:第一个算法为,第二个算法为。你的判断是:算法_______一_______优于算法________二______。2.给出上面程序的运行结果截图。三.心得体会(记录实验感受、上机过程中遇到的困难及解决办法、遗留的问题、意见和建议等。)【附录----源程序】
本文标题:实验1--熟悉python程序设计
链接地址:https://www.777doc.com/doc-1840684 .html