PTPressPython3程序设计习题参考答案_第1页
PTPressPython3程序设计习题参考答案_第2页
PTPressPython3程序设计习题参考答案_第3页
PTPressPython3程序设计习题参考答案_第4页
PTPressPython3程序设计习题参考答案_第5页
已阅读5页,还剩26页未读 继续免费阅读

下载本文档

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

文档简介

习题1答案1.选择题C C C C D B C B D C 2.简答题(1)Python语言地开发者是谁?Python地作者GuidovanRossum是荷兰人.(2)在Windows10操作系统下,Python默认地安装路径是什么?在Windows10操作系统下,Python默认地安装路径是C:\Users\Administrator\AppData\Local\Programs\Python\Python38-32.(3)简述Python程序地运行过程。Python源文件地扩展名是.py。在执行时,Python解释器先将.py文件中地源代码翻译成中间代码,这个中间代码是一个扩展名为.pyc地文件,再由Python虚拟机(PVM)逐条将字节码翻译成机器指令执行。(4)列举出IDLE编程环境5个以上快捷键地功能。快捷键功能说明Ctrl+[缩进代码Ctrl+]取消缩进代码Alt+3注释代码行Alt+4取消注释代码行Alt+/单词自动完成,只要文中出现过,就可以帮妳自动补齐。多按几次可以循环选择Alt+P浏览历史命令(上一条)Alt+N浏览历史命令(下一条)F1打开Python帮助文档F5运行程序Ctrl+F6重启Shell,之前定义地对象与导入地模块全部失效(5)简述程序地编译方式与解释方式地区别。编译是将源程序代码转换成目的代码地过程。源代码是计算机高级语言代码,而目的代码则是机器语言代码。解释是将源代码逐条转换成目的代码同时逐条运行目的代码地过程。执行解释地计算机程序称为解释器(Interpreter)。解释与编译地区别在于编译是一次性地翻译,程序被编译后,运行地时候不再需要源代码。解释则在每次程序运行时都需要解释器与源代码。这两者地区类似于外语资料地翻译与实时地同声传译。(6)叙述程序设计地IPO模式地特点。程序设计模式地IPO模式,即程序包括输入(Input),处理(Process),输出(Output)3部分。输入是程序设计地起点,包括文件输入,网络输入,交互输入,参数输入等。输出是程序展示运算成果地方式,包括文件输出,网络输出,控制台输出,图表输出等。而处理部分则是编程地核心,包括数据处理与赋值,更重要地是算法。3.编程题(1)参考例1-3,输入三角形地底边长与高,计算并输出三角形地面积。#h0101.py#计算三角形面积s。importmatha=eval(input("底边长:"))h=eval(input("底边对应地高:"))s=a*h/2print("三角形地面积是{:.2f}".format(s))(2)参考例1-6,在列表中给出若干字符串,计算并输入最长地字符串。#ex0102.pylst=['hi',"program",'school','for','''chinese''']lst1=[]foriteminlst:lst1.append(len(item))p=max(lst1)foriteminlst:iflen(item)==p:print(item,end="")(3)略。习题2答案1.选择题D D D D D A C A B DC B2.简答题(1)什么是标识符?简述Python标识符地命名规则。计算机中地数据,如一个变量,方法,对象等都需要有名称,以方便程序调用。由用户定义地,由程序使用地符号就是标识符。●Python地标识符可以由字母,数字与下划线"_"组成,且不能以数字开头。●标识符区分大小写,没有长度限制。●标识符不能使用计算机语言中预留有特殊作用地关键字。●标识符地命名尽量符合见名知意地原则,从而提高代码地可读性。(2)什么是关键字?True与False是否是Python地关键字?Python语言保留某些单词用作特殊用途,这些单词被称为关键字,也叫保留字。True与False是Python地关键字。(3)比较运算符地运算结果是什么类型?布尔类型(4)整数地二进制,八进制,十六进制都用什么格式描述?将十进制数转换为二进制,八进制,十六进制地函数是什么?,二进制(以"OB"或"Ob"开头),八进制(以数字"0o"或"0O"开头)与十六进制(以"Ox"或"OX"开头)。bin(),hex(),oct()(5)Python地数值类型数据有几种?举例说明。数值类型(Number)是Python地基本数据类型,包含整型,浮点型,复数类型与布尔类型等4种。3.编程题(1)输入三科成绩,计算平均分与总分。x=eval(input("请输入A科成绩:"))y=eval(input("请输入B科成绩:"))z=eval(input("请输入C科成绩:"))print("3科成绩地平均分是{},总分是{}".format((x+y+z)/3,x+y+z))(2)编写程序,给出三角形地三边,输出三角形地面积。#输入三角形三条边,有海伦公式计算三角形面积s。importmatha=eval(input("请输入a边长:"))b=eval(input("请输入b边长:"))c=eval(input("请输入c边长:"))p=(a+b+c)/2s=math.sqrt(p*(p-a)*(p-b)*(p-c))print("三角形地面积是{:.2f}".format(s))习题3答案1.选择题B A B B A C A A D C2.简答题(1)字符串有哪3种表示形式?Python中地字符串是字符集合,它被引号所包含,引号可以是单引号,双引号或者三引号(三个连续地单引号或者双引号)。单引号与双引号包含地是单行字符串,二者地作用相同。三引号可以包含多行字符串。(2)字符串地format()方法中,该方法地参数有哪几种?str.format()方法中地str被称为模板字符串,其中包括多个由"{}"表示地占位符,占位符接收format()方法中地参数。str模板字符串与format()方法中地参数地对应关系有以下3种情况。第一种,位置参数匹配。在模板字符串中,如果占位符{}为空(没有表示顺序地序号),按照参数出现地先后次序匹配。如果占位符{}指定参数地序号,按照序号对应参数替换。第二种,使用键值对地关键字参数匹配。format()方法中地参数用键值对形式表示时,在模板字符串中用"键"来表示。第三种,使用序列地索引作为参数匹配。如果format()方法地参数是列表或元组,可以用其索引(序号)来匹配。(3)字符串合并与拆分地函数是什么,通过示例来验证。split(sep,num),以sep为分隔符分隔字符串,如果num有指定值,则仅截取num个子字符串join(seq),以指定字符串作为分隔符,将seq中所有地元素(地字符串表示)合并为一个新地字符串(4)len('您好,Helen')与len("\n\t\r")地值都是多少?8与3(5)"China"in"Ilovechina"地值是True还是False?False(6)"Ilovechina".find("China")地值是多少?-13.编程题(1)编写程序,给出一个英文句子,统计单词个数。sentence='''residentXiJinpingurgedall-outeffortstoachievethegoalofeliminatingpovertyinChinawithintwoyearsinhisthree-dayinspectiontourofChongqing,whichendedonWednesday.'''sentence=sentence.replace(",","")sentence=sentence.replace(".","")words=sentence.split()print(len(words))(2)编写程序,给出一个字符串,将其中地字符"E"用空格替换后输出。sentence='''residEntXiJinpingurgEdall-outEfforts'''print(sentence.replace("E",""))(3)从键盘交互式输入一个人地18位地身份证号,以类似于"2001年09月12日"地形式输出该人地出生日期。xx=input("IDCardNumber:")print(xx[6:10]+"年"+xx[10:12]+'月'+xx[12:14]+"日")习题4答案1.选择题C A A D A D B D C DA D2.简答题(1)程序流程图包括哪些元素?控制流,处理流,判断框,起始结束框等。(2)叙述pass语句地作用。pass语句地意义是空语句,主要是为了保持程序结构地完整性设计地。pass语句一般用做占位语句,该语句不影响其后面语句地执行。(3)跳转语句break与continue地区别是什么?break语句地作用是循环体内部跳出,即结束循环。有时也称为断路语句,就是循环被中断,不再执行循环体。continue语句需要用于循环结构中,它地作用是终止当前这一轮地循环,跳过本轮剩余地语句,直接进入下一轮循环。continue语句有时也被称为短路语句,指地是只对本次循环短路,并不终止整个循环。(4)叙述for循环与while循环地执行过程。for循环从序列中逐一提取元素,放在循环变量中,对于序列中地每个元素执行一次语句块。序列可以是字符串,列表,文件或range()函数等。3.编程题(1)给定某一字符串s,对其中地每一字符c大小写转换:如果c是大写字母,则将它转换成小写字母;如果c是小写字母,则将它转换成大写字母;如果c不是字母,则不转换。s="abc32TT9ac"t=""foriinrange(len(s)):ifs[i].islower():t+=s[i].upper()elifs[i].isupper():t+=s[i].lower()else:t+=s[i]print(t)(2)输入一个整数,将各位数字反转后输出。num=eval(input("请输入一个整数:"))s=str(num)print(s[::-1])(3)计算12-22+32-42+…+972-982+992。s=0flag=1foriinrange(1,100):s=s+i*i*flagflag*=-1print(s)(4)一个数如果恰好等于它地因子这与,这个数就称为"完数",例如,6地因子为1,2,3,而6=1+2+3,因此6就是"完数"。编程找出100内地所有完数。fornuminrange(1,100):t=0s=""foriinrange(1,num//2+1):ifnum%i==0:t+=is+=str(i)+""ift==num:print("{}是完数,其因子为:{}".format(t,s))(5)输入两个正整数m与n,求其最大公约数与最小公倍数。

m=eval(input("请输入正整数m:"))n=eval(input("请输入正整数n:"))ifm<n:m,n=n,mt=m*nr=m%nwhiler!=0:m=nn=rr=m%nprint("最大公约数是:{}".format(n))print("最小公倍数是:{}".format(int(t/n)))习题5答案1.选择题B A D C D C D C D DA B D B2.简答题(1)列表,元组,字典都用什么标记或函数创建?列表使用标记"[]"可以创建,元组通常使用标记"()"创建。字典可以用标记"{}"创建,字典中每个元素都包含键与值两部分,键与值用冒号分开,元素之间用逗号分隔。列表与元组相互转换地函数是tuple(lst)与list(tup),都可以创建元组与列表;dict()是用于创建字典地函数。(2)列表与元组两种序列结构有什么区别?列表它元组都是Python中常用地序列类型。创建列表时,只要把逗号分隔地元素使用方括号括起来即可。列表是可变地,可向列表中任意增加元素或删除元素,可以对列表进行遍历,排序,反转等操作。元组是包含0个或多个元素地不可变序列类型。创建元组时,只要将元组地元素用小括号包围,并使用逗号隔开即可。元组中地任何元素不能替换或删除。元组与列表地区别在于元组地元素不能修改。(3)字典有什么特点?列出任意5种字典地操作函数。字典是Python中内置地映射类型。字典可以看成元素对构成地列表,其中一个元素是键,另一个元素是值。在搜索字典时,首先查找键,当查找到键后就可以直接获取该键对应地值。字典中地值并没有特殊地顺序,但是都存储在一个特定地键(key)里,键可以是数字,字符串以及元组等。此外,字典中地元素(键值对)是无序地。函数或操作功能描述dicts.keys()返回所有地键信息dicts.values()返回所有地值信息dicts.items()返回所有地键值对dicts.get(key,defualt)键存在则返回相应值,否则返回默认值dicts.pop(key,default)键存在则返回相应值,同时删除键值对,否则返回默认值dicts.popitem()随机从字典中取出一个键值对,以元组(key,value)形式返回dicts.clear()删除所有地键值对dicts.update(dicts2)更新字典,参数dict2为更新地字典(4)遍历列表与元组有哪几种方法?列表与元组地遍历地方式相同,以列表为列说明如下。遍历列表可以逐个处理列表中地元素,通常使用for循环与while循环来实现。for循环可以直接访问列表中地元素,用while循环遍历列表,需要先获取列表地长度,将获得地长度作为循环地条件。(5)给定列表变量ls,ls.pop(i)方法地功能是什么?返回列表ls中地第i项元素并删除该元素(6)列表与元组相互转换地函数是什么?列表与元组相互转换地函数是tuple(lst)与list(tup),其中地参数分别是被转换对象。(7)给定字典变量dicts,dicts.items()方法地功能是什么?返回字典中所有地键值对3.编程题(1)编写程序,随机生成由英文字符与数据组成地4位验证码。importrandomletters1="ABCDEFGHIJKLMN"letters2="opqrstuvwxyz"letters3="0123456789"letters=letters1+letters2+letters3code=""foriinrange(4):code+=random.choice(letters)print("产生地验证码是:{}".format(code))(2)用字典描述学生信息,包括no(学号),name(姓名),score(成绩)等。使用列表存储学生信息地,并根据给定学生姓名,查找学生地信息。stu1={"no":101,"name":"Rose","address":"Changjianroad","score":92}stu2=dict(id=201,name="Mike",address="Huangheroad",score=83)stu3=dict([('id',103),('name','Kate'),('address','Xinanroad'),('pcode','116033'),('score',90)])lst=[stu1,stu2,stu3]var=input("请输入要查找学生地姓名:")result=Falseforiteminlst:ifvar.strip()initem.values():print(item)result=Trueifresult==False:print("信息不存在")(3)使用input函数,输入若干单词,按字典顺序输出单词(如果某个单词出现多次,只输出一次)。words=input("请输入若干单词,用英文逗号分割:")word_list=words.split(",")aset=set()foriinword_list:#去除重复元素aset.add(i)word3=list(aset)#将集合转换为列表后,排序word3.sort()print(word3)(4)利用元组创建一个存储Python关键字地对象,并检测给定地单词是否是Python关键字。tup1=("in","break","continue","True","False","if","while","pass")var=input("Enteraword:")ifvarintup1:print("这个单词是Python关键字")else:print("这个单词不是Python关键字")(5)编写程序,删除列表中地重复元素。提示:将列表作为集合对象地参数,再使用list()函数将集合转换为列表即可。第2章STYLEREF"标题1+1"错误!文档中没有指定样式地文字。 PAGE20 PAGE21 PAGE1习题6答案1.选择题B D D B C B C D D AA A2.简答题(1)什么是嵌套函数?举例说明。嵌套函数通常是指函数地嵌套定义,即在函数内部定义地函数,但内嵌地函数只能在该函数内部使用,闭包应用了函数地嵌套定义。defsum(n):deffact(a):#嵌套函数,求阶乘t=1foriinrange(1,a+1):t*=ireturnts=0foriinrange(1,n+1):s+=fact(i)#调用嵌套函数fact()returnsn=5print(sum(n))(2)函数地可变参数有哪几种,各有什么特点?可变参数指地是在函数定义时,该参数可以接受任意个数地参数。可变参数有两种形式,参数名称前加星号(*)或者加两个星号(**)。定义可变参数地函数语法格式如下。deffunname(formal_args,*args,**kwargs):statementsreturnexpression在上面地函数格式定义中,formal_args为定义地传统参数,代表一组参数,*args与**kwargs为可变参数。函数传入地参数个数会优先匹配formal_args参数地个数,*args以元组地形式保存多余地参数,**kwargs以字典地形式保存带有指定名称形式地参数。(3)函数传递时,基本数据类型做参数与组合数据类型做参数,有什么区别?举例说明。基本数据类型地变量作为实际参数时,是将常量或变量地值传递给形参,是一种值传递地过程,实参与形参是两个独立不有关地变量,因此,实参值一般是不会改变地。列表,元组,字典等组合数据类型地变量用做函数参数时,这些变量在函数体外,是全局变量。形参与实参之间传递地只是组合数据类型变量(参数)地地址(引用),如果在函数内部修改了参数地值,参数地地址是不发生改变地,这种修改将影响到外部地全局变量。(4)在内置函数中,列出5种常用地数学运算函数与字符运算函数(略)(5)global语句地功能是什么?为了能在函数内部读/写全局变量,Python提供了global语句,用于在函数内部声明全局变量。(6)什么是默认参数?定义函数时,可以给函数地形式参数设置默认值,这种参数被称为默认参数。当调用函数地时候,由于默认参数在定义时已被赋值了,所以可以直接忽略。如果默认参数没有传入值,则直接使用默认值;如果默认参数传入了值,则使用传入地新值替代。3.编程题(1)编写函数isodd(x),若x不是整数,给出提示后退出程序;如果x为奇数,返回True,如果x为偶数,返回False。defisodd(x):ifint(x)!=x:print("x不是整数,程序退出")returnelifx//2!=x/2:returnTrueelse:returnFalseprint(isodd(3))print(isodd(3.2))print(isodd(32))(2)编写函数change(str1),其功能是对参数str1进行大小写转换,其中地大写字母转换成小写字母;小写字母转换成大写字母;非英文字符不转换。defchange(str1):t=""foriinrange(len(str1)):ifstr1[i].islower():t+=str1[i].upper()elifstr1[i].isupper():t+=str1[i].lower()else:t+=str1[i]returntprint(change("iu98kLLD"))(3)编写并测试函数gcd(m,n)与l(m,n),功能是求两个整数地最大公约数与最小公倍数。defgcd(m,n):ifm<n:m,n=n,mr=m%nwhiler!=0:m=nn=rr=m%nreturnndefl(m,n):t=m*nreturnint(t/gcd(m,n))m=eval(input("请输入正整数m:"))n=eval(input("请输入正整数n:"))print("最大公约数是",gcd(m,n))print("最小公倍数是",l(m,n))(4)编写并测试函数reverse(x),输入一个整数,将各位数字反转后输出。defreverse(x):y=str(x)y=y[::-1]returnint(y)print(reverse(12345))(5)用递归方法反转一个字符串,例如"abcde",反转为"edcba"。deffunc(s):iflen(s)<1:returnsreturnfunc(s[1:])+s[0]s="abcde"result=func(s)print(result)(6)编写程序求12-22+32-42+…+972-982+992。(略)习题7答案1.选择题A A D C D A C B B A2.简答题(1)什么是对象?什么是类?类与对象地关系是什么?对象(Object)对应客观世界地事物,将描述事物地一组数据与与这组数据有关操作封装在一起,形成一个实体,这个实体就是对象。具有相同或相似性质地对象地抽象就是类(Class)。因此,对象地抽象是类,类地具体化就是对象。(2)面向对象语言有哪三个特性?封装性,继承性与多态性(3)什么是面向对象编程地继承性?有什么优点?继承(Inheritance)描述了类之间地关系,在这种关系中,一个类共享了一个或多个其它类定义地数据与操作。继承地类(子类)可以对被继承地类(父类)地操作进行扩展或重定义。通过继承,可以在无须重新编写原有类地情况下,对原有类地功能进行扩展。继承不仅增强了代码复用性,提高了开发效率,而且为程序地修改补充提供了便利。(4)类属性与实例属性地区别是什么?属性也叫成员变量,分为两种类型:一种是实例属性,另一种是类属性。实例属性是在构造方法__init__()中定义地,定义时以self作为第1个参数;类属性是在类中方法之外定义地属性。在类地地外部,实例属性属于实例(对象),只能通过对象名访问;类属性属于类,可以通过类名访问,也可以通过对象名访问,被类地所有对象共享。(5)构造方法与析构方法名字都是什么?类中定义地名字为__init__()地方法(以两个下画线"_"开头与结尾)被称为构造方法。__del__()方法是析构方法。(6)构造方法作用是什么?与实例方法有什么不同?类中定义地名字为__init__()地方法(以两个下画线"_"开头与结尾)被称为构造方法。一个类定义了__init__()方法以后,创建对象时,就会自动为新生成地对象调用该方法。构造方法一般用于完成对象数据成员设置初值或进行其它必要地初始化工作。实例方法也叫成员方法,需要通过对象调用,实现特定地功能。(7)列举出5种重载地运算符及对应地方法。方法名 重载说明 运算符调用方式__add__ 对象加法运算 x+y,x+=y__sub__ 对象减法运算 x-y,x-=y__div__ 对象除法运算 x/y,x/=y__mul__ 对象乘法运算 x*y,x*-=y__mod__ 对象取余运算 x%y,x%=y__repr__或__str__ 打印或转换对象 print(x),repr(x),str()__getitem__ 对象对象索引运算 x[key],x[i:j]__setitem__ 对象索引赋值 x[key],x[i:j]=3.阅读程序self.value=200MyClass.value=100super().value=100self.value=200UClass.value=200用对象访问,cc.value=200用类访问,UClass.value=2004.编程题(1)设计一个Group类,在该类中包括:一个数据成员score(每个学生地分数),两个类成员total(班级地总分)与count(班级地人数)。成员方法setScore(socre)用于设置分数,成员方法sum()用于累计总分,类方法average()用于求平均值。交互式输入某组学生地成绩,显示该组地总分与平均分。classGroup:total=count=0defsetScore(self,score):self.score=scoredefgetScore(self):returnself.scoredef__init__(self,score):self.setScore(score)Group.count+=1self.sum()defsum(self):Group.total+=self.getScore()@classmethoddefaverage(cls):returnGroup.total/Group.count@classmethoddefshow(cls):print("总分是:{}".format(Group.total))print("平均分是:{}".format(Group.average()))s1=Group(90)s2=Group(87)s3=Group(93)Group.show()(2)为二次方程式ax2+bx+c=0设计一个名为Equation地类,这个类包括:●代表三个系数地成员变量a,b,c。●一个参数为a,b,c地构造方法。●一个名为getDiscriminant()地方法返回判别式地值。●一个名为getRoot1()与getRoot2()地方法返回等式地两个根:如果判别式为负,这些方法返回0。importmathclassEquation:def__init__(self,a,b,c):self.a=aself.b=bself.c=cdefgetDeta(self):returnself.b*self.b-4*self.a*self.cdefgetRoot1(self):ifself.getDeta()<0:return0else:return(-self.b+math.sqrt(self.getDeta()))/(2*self.a)defgetRoot2(self):ifself.getDeta()<0:return0else:return(-self.b-math.sqrt(self.getDeta()))/(2*self.a)e1=Equation(1,4,5)print(e1.getRoot1(),e1.getRoot2())(3)设计一个描述自由落体运动地类,要求能获得任意时刻地速度及位移,并进行测试。已知重力加速度为9.8m/s2。classMovement:acceleration=9.8def__init__(self,t):self.t=tdefgetSpeed(self):returnMovement.acceleration*self.tdefgetDistance(self):returnMovement.acceleration*self.t*self.t/2m1=Movement(3)print("{:.1f}秒后,速度是{:.2f},位移是{:.2f}".format(m1.t,m1.getSpeed(),m1.getDistance()))习题8答案1.选择题B D A D C A C C B D2.简答题(1)Python导入模块时一般采用什么搜索顺序?Python模块地路径搜索顺序如下:当前目录,环境变量pythonpath包含地目录,python标准库目录与第三方包目录。(2)Python地内置属性__name__有什么作用?__name__是Python地内置属性,用于表示当前模块地名字,也能反映一个包地结构。如果.py文件作为模块被调用,__name__地属性值为模块文件地主名,如果模块独立运行,__name__属性值为__main__。语句if__name__=='main'地作用就是控制这两种不同情况执行代码地过程,当__name__值为"main"时,文件作为脚本直接执行,而使用import或from语句导入到其它程序中时,模块中地代码是不会被执行地。(3)Python地第三方库如何安装?如何查看当前计算机中已经安装地第三方库?用户可以使用pip工具安装第三方库。pip工具由Python官方提供并维护,是常用且高效地在线第三方库安装工具。pip3是Python地内置命令,用于Python3版本安装第三方库,需要在命令行下执行。pip3list命令用于列出当前系统中已安装地第三方库。(4)叙述用Python地第三方库pyinstaller打包文件地过程与注意事项。pyinstaller是用于源文件打包地第三方库,它能够在Windows,Linux,MacOSX等操作系统下将Python源文件打包。打包后地Python文件可以在没有安装Python地环境中运行,也可以作为一个独立文件方便传递与管理。使用pyinstaller命令打包文件,需要注意以下几个问题。●文件路径中不能出现空格与英文句号(.),如果存在,需要修改Python源文件地名字。●源文件需要是UTF-8编码。采用IDLE编写地源文件均保存为UTF-8格式,可以直接使用。●如果命令提示符前地路径提示符是d:\python,生成地打包生成文件地位置与与’>’提示符前地路径是一致地。(5)模块与包有什么区别?它们之间地关系是什么?模块是一个包含变量,语句,函数或类地程序文件,文件地名字就是模块名加上.py扩展名.包是模块文件所在地目录,模块是实现某一特定功能地函数与类地文件。模块通常在包中,包用于模块地组织。(6)举例说明random库中5种函数地功能。random.random(),返回一个介于左闭右开[0.0,1.0)区间地浮点数>>>random.random()0.8880685743559004random.randint(a,b),返回range[a,b]之间地一个随机整数,等价于range(a,b+1)>>>random.randint(10,20)19random.randrange(stop),返回range(0,stop)之间地一个整数>>>random.randrange(10)8random.choice(seq),从非空序列seq中随机选取一个元素。如果seq为空,则报告IndexError异常 >>>random.choice(['a','b','c','d','e'])'c'random.uniform(a,b),返回一个介于a与b之间地浮点数。如果a>b,则是b到a之间地浮点数。结果可能包含a与b>>>random.uniform(10,20)17.27824882833889(7)turtle.setup()方法功能是什么?turtle.setup()方法,用于设置绘图窗口地大小与位置。(8)使用jieba库地什么方法可以实现精确分词,并返回一个列表?jieba.lcut(s),精确模式分词菩萨返回一个列表类型。3.阅读程序(1)代码1:9;代码2:45(2)代码1:turtle.fd;代码2:turtle.seth3.编程题(1)使用random库,产生10个100到200之间地随机数,并求其最大值,平均值,标准差与中位数。#平均数defmean(numlist):s=0.0fornuminnumlist:s=s+numreturns/len(numlist)##标准差=sqrt(((x1-x)^2+(x2-x)^2+(xn-x)^2)/n)。defdev(numlist,mean):sdev=0.0fornuminnumlist:sdev=sdev+(num-mean)**2return(sdev/(len(numlist)-1))**0.5defmedian(numlist):numlist.sort()half=len(numlist)//2return(numlist[half]+numlist[~half])/2#函数调用ls1=[1,3,-6,5,8]ls2=[3.2,9,-32,56,0,1]v1=max(ls2)v2=mean(ls2)v3=dev(ls2,v2)v4=median(ls2)print("最大值:{:.2f},平均值:{:.2f},标准差:{:.2f},中位数:{:.2f}".format(v1,v2,v3,v4))(2)使用datetime库,对一个日期(含时间),输出不少于8种日期格式。(略)(3)使用turtle库绘制一个叠加三角形。importturtleastt.setup(260,260,None,None)t.pu()t.fd(-60)t.pensize(2)t.width(2)t.pencolor("darkgreen")t.pd()t.fd(100)t.seth(120)t.pencolor("black")t.fd(100)t.seth(-120)t.pencolor("blue")t.fd(100)t.pencolor("purple")t.fd(100)t.seth(0)t.pencolor("green")t.fd(100)t.pencolor("gold")t.fd(100)t.seth(120)t.pencolor("red")t.fd(100)t.seth(-120)t.pencolor("grey")t.fd(100)t.seth(120)t.pencolor("violet")t.fd(100)(4)编写程序统计《水浒转》中前10位出场最多地人物。参考例8-17完成,程序略。习题9答案1.选择题A D C D B B B C B D2.简答题(1)常用地文本文件编码方式有哪几种?汉字在不同地编码中各占几个字节?ASCII码即美国标准信息交换码,仅对10个数字,26个大写英文字母,26个小写英文字母及一些其它常用符号进行了编码。ASCII采用8位(1字节)编码.UTF-8编码是国际通用地编码方式,用8位(1字节)表示英语(兼容ASCII码),以24位(3字节)表示中文及其它语言,UTF-8对全世界所有国家地字符进行了编码。GB2312编码是中国制定地中文编码,用1字节表示英文字符,用2字节表示汉字字符。GBK是对GB2312地扩充。Unicode是国际组织制定地可以容纳世界上所有文字与符号地字符编码方案,它是编码转换地基础。采用不同地编码方式,写入文件地内容可能是不同地。就汉字编码而言,GBK编码地1个汉字占2个字符,UTF-8编码地1个汉字占3个字符,Unicode编码中地1个汉字占1个字符。(2)列出任意4种文件访问模式,说明其意义。r 只读模式打开,默认值。该模式打开地文件需要存在,如果不存在,将报异常r+ 读写模式打开。该模式打开地文件需要存在,如果不存在,将报异常w 写模式打开。文件如果存在,清空内容后重新创建文件w+ 读写模式打开。文件如果存在,清空内容后重新创建文件a 追加地方式打开,写入地内容追加到文件尾。该模式打开地文件如果已经存在,不会清空,否则新建一个文件(3)文本文件与二进制文件在读写时有什么区别?举例说明。当文件被打开后,根据文件地访问模式可以对文件进行读写操作。以文本文件方式打开地文件,默认地,程序按照当前操作系统地编码方式来读写文件,也可以指定编码方式来读写文件;如果文件是以二进制文件方式打开地,按字节流方式读写。read()与write()方法可以读写二进制文件,但二进制文件只能读写bytes字符串。例如,>>>fileb=open(r"d:\pythonfile36\\ch7\\mydata.dat",'wb')#以'wb'方式打开二进制文件>>>fileb.write(b"HelloPython")#写bytes字符串>>>n=123>>>fileb.write(bytes(str(n),encoding='utf-8'))#将整数转换为bytes字符串写入文件>>>fileb.write(b"\n3.14")>>>fileb.close()#以'rb'方式打开二进制文件>>>file=open(r"d:\pythonfile36\\ch7\\mydata.dat",'rb')>>>print(file.read())b'HelloPython123\n3.14'>>>file.close()(4)readlines()方法与readline()方法读取文本文件时,主要区别是什么?readline([size]) 主要用于读取文件一行内容,可以使用参数size,读取指定长度地字符或字节。readlines([hint])用于读取文件地所有行,返回行所组成地列表。参数hint指定读入行数。(5)文件写操作主要使用哪两个方法?write()方法可向文件中写入字符串,同时文件指针后移;writelines()方法可向文件中写入字符串序列。(6)os模块地getcwd()函数有什么用途?os.getcwd(),当前Python脚本文件工作地路径。(7)如何创建csv文件?CSV文件是纯文本文件,可以使用记事本按照CSV文件地规则来建立。使用Excel工具录入数据,另存为CSV文件是比较常用地一种方法。(8)高维数据有什么特点?高维数据由键值对类型地数据构成,采用对象方式组织,属于维度更高地数据组织方式。3.阅读程序(1)代码1:line.replace(deleteword,"");代码2:fo.write(line1)(2)代码1:names; 代码2:len(names.split())(3)代码1:d[t[c]]=d.get(t[c],0)+1; 代码2:ls.sort(key=lambdax:x[1],reverse=True)4.编程题(1)将一个文件中地所有英文字母转换成大写,复制到另一文件中。fi=open("ex0701.py",'r')fo=open("f2.txt",'w')forlineinfi:line=line.upper()fo.write(line)fi.close()fo.close()(2)将一个文件中地指定单词删除后,复制到另一个文件中。fi=open("ex0702.py",'r')fo=open("f2.txt",'w')deleteword="line"forlineinfi:line1=line.replace(deleteword,"")#print(line1)fo.write(line1)fi.close()fo.close()(3)接收用户从键盘输入地一个文件名,然后判断该文件是否存在于当前目录。若存在,则输出以下信息:文件是否可读与可写,文件地大小,文件是普通文件还是目录。importos,os.pathfilename=input("请输入文件地全名:")ifos.path.exists(filename):print("该文件存在于当前目录下")print("下面是文件信息")print("文件大小是:",os.path.getsize(filename))ifos.path.isfile(filename):print(filename,"是一个文件")else:print(filename,"是一个目录")else:print("该文件不存在!")(4)将一文本文件加密后输出,规则如下:大写英文字符A变换为C,B变换为D,……,Y变换为A,Z变换为B,小写英文字符规则同上,其它字符不变。s="abc123^&**KJFDFDLKy"s2=""forcins:ifc.islower():c=(ord(c)-ord('a')+3)%26+ord('a')#print(chr(c),end="")elifc.isupper():c=(ord(c)-ord('A')+3)%26+ord('A')#print(chr(c),end="")else:c=ord(c)s2+=chr(c)print(s2)习题10答案1.选择题D B B C C D B A B D2.简答题(1)什么叫异常?简述Python地异常处理机制。异常(Exception)就是程序在运行过程中发生地,由于硬件故障,软件设计错误,运行环境不满足等原因导致地程序错误事件,比如除0溢出,引用序列中不存在地索引,文件找不到等,这些事件地发生将阻止程序地正常运行。异常处理机制如下。程序执行过程中如果出现异常,会自动生成一个异常对象,该异常对象被提交给Python解释器,这个过程称为抛出异常。抛出异常也可以由用户程序自行定义。当Python解释器接收到异常对象时,会寻找处理这一异常地代码并处理,这一过程叫捕获异常。如果Python解释器找不到可以处理异常地方法,则运行时系统终止,应用程序退出。Python通过try-except语句处理异常。(2)除了上列出地7种常见异常外,查文档,列举3种其它地内置异常类。KeyboardInterrupt,TimeoutError,EOFError,MemoryError,ImportError等(3)如何创建用户自定义异常?创建用户自定义异常地基本步骤如下。声明一个新地异常类,使之以Exception类或其它某个已经存在地系统异常类或用户异常类为父类。为新地异常类定义属性与方法,或重载父类地属性与方法,使这些属性与方法能够体现该类所对应地错误地信息(4)异常处理中地else语句与循环中地else语句类似,当try语句没有捕获到异常信息时,将不执行except语句块,而是执行else语句块。使用raise语句能显式地抛出异常,其格式如下:raise异常类

#抛出异常,并隐式地创建类对象raise异常类对象

#抛出异常,创建异常类地对象raise

#重新抛出刚刚发生地异常(6)断言语句地格式是:assertboolCondition,description,当boolCondition地值为真时,将触发异常。这种说法正确吗?不正确3.阅读程序(1)19 #创建z3对象时正常执行。年龄错误#创建Lisi对象时报异常(2)Location1/Location2/Location44.编程题(1)编程实现索引超出范围异常IndexError类型。try:chars=['a','b','c','d','e']chars[4]=1print(chars)chars[5]='xx'exceptIndexError:print("索引超过范围")(2)设计一个一元二次方程类,并为这个类添加异常处理。importmathclassEquationException(Exception): def__init__(self,eid,message):#异常描述self.eid=eidself.message=messageclassExceptionDemo:#业务逻辑defputing(self,a,b,c):print("calledputing()");deta=b*b-4*a*cifdeta<0:raiseEquationException(101,"deta值小于零")else:x1=(-b+math.sqrt(deta))/(2*a)x2=(-b-math.sqrt(deta))/(2*a)print("一元二次方程地根是{},{}".format(x1,x2))print("normalexit")myobject=ExceptionDemo()#功能测试try:myobject.puting(4,4,-2)myobject.puting(2,3,2)exceptEquationExceptionase:print("Exceptioncaught,id:{},message:{}".format(e.eid,e.message))(3)定义一个Circle类,其中有求面积地方法,当半径小于0时,抛出一个用户自定义异常。(略)(4)从键盘输入一个整数,求100除以它地商,并显示。要求对从键盘输入地数值进行异常处理。n=eval(input("请输入数值:"))try:s=100/nprint(s)exceptExceptionasee:print(ee)习题11答案1.选择题A C D D B D D C2.简答题(1)窗口对象地mainloop()方法有什么作用?mainloop()方法用于启动事件循环。GUI窗口启动,等待响应用户操作。(2)使用pack()方法地布局有什么特点?pack()方法以块地方式布局组件,该方法将组件显示在默认位置,是最简单,直接地用法。(3)使用grid()方法地布局有什么特点?使用grid()方法地布局被称为网格布局,它按照二维表格地形式,将容器划分为若干行与若干列,组件地位置由行列所在位置确定。(4)Frame组件可以用于布局,主要作用是什么?框架(Frame)是一个容器组件,通常用于对组件进行分组,从而实现复杂地布局。(5)请列举出Label组件6种以上地属性。属性说明text设置标签显示地文本bg与fg指定组件地背景色与前景色width与height指定组件地宽度与高度padx与pady组件内文本左右与上下地预留空白宽度,默认值为1(像素)anchor设置文本在组件内部地位置,取值为N,S,W,E,NW,SW,NE,SEjustify设置文本对齐方式,取值为LEFT(左对齐),RGHT(右对齐)或CENTER(居中对齐)font设置字体(6)Radiobutton组件与Checkbutton组件地区别是什么?Radiobutton组件用于创建单选按钮组。按钮组由多个单选按钮组成,选中按钮组中地一项时,其它选项则取消取中。Checkbutton组件用于创建复选框,Checkbutton组件与Radiobutton组件地功能类似,但Radiobutton组件实现地是单选功能,而Checkbutton在系列选项中可以选择0个或多个,实现复选功能。(7)Python地GUI编程中,组件与容器地概念有什么区别?组件是指标签,按钮,列表框等对象,需要将其放在容器中显示。容器是指可放置其它组件或容器地对象,例如,窗口或Frame(框架),容器也可以叫做容器组件。3.阅读程序代码1:win,textvariable=number,width=24代码2:mand=puting4.编程题(1)编制求两个正整形数最小公倍数程序。要求:两个输入框txt,txt2,用来输入整形数据;一个按钮;一个不可编辑地输入组件txt3。当单击按钮时,在txt3中显示两个整形数地最小公倍数地值。fromtkinterimport*defputing():n1=int(number1.get())n2=int(number2.get())ifn1<n2:n1,n2=n2,n1t=n1*n2temp=n1%n2whiletemp!=0:n1=n2n2=temptemp=n1%n2result="最小公倍数是:"+str(t/n2)label3.config(text=result)win=Tk()win.title("最小公倍数")win.geometry("300x350")label1=Label(win,text='请输入数值1:')label1.config(width=16,height=3)label1.config(font=('宋体',12))label1.grid(row=0,column=0)number1=StringVar()txt1=Entry(win,textvariable=number1,width=16)txt1.grid(row=0,column=1)label0=Label(win,text='请输入数值2:')label0.config(width=16,height=3)label0.config(font=('宋体',12))label0.grid(row=1,column=0)number2=StringVar()txt2=Entry(win,textvariable=number2,width=16)txt2.grid(row=1,column=1)label2=Label(win,text='请单击确认:')label2.config(width=14,height=3)label2.config(font=('宋体',12))label2.grid(row=2,column=0)button1=Button(win,text="计算") button1.config(justify=CENTER) #设置按钮文本居中button1.config(width=14,height=2) #设置按钮地宽与高button1.config(bd=3,relief=RAISED) #设置边框宽度与样式button1.config(anchor=CENTER) #设置内容在按钮内部居中button1.config(font=('隶书',12)) button1.config(mand=puting)button1.grid(row=2,column=1)label3=Label(win,text='显示结果')label3.config(width=22,height=3)label3.config(font=('宋体',12))label3.place(x=50,y=230)win.mainloop()(2)设计GUI界面,模拟QQ登录界面,用户输入用户名与密码,如果正确提示登录成功;否则提示登录失败。请参考例11-17完成。(3)例11-17使用Button组件地mand参数实现事件处理,将事件处理地方法使用bind()方法实现。importtkinterimporttkinter.messagebox#创建应用程序窗口win=tkinter.Tk()varName=tkinter.StringVar()varName.set('')varPwd=tkinter.StringVar()varPwd.set('')#创建标签labelName=tkinter.Label(text='UserName:',justify=tkinter.RIGHT,width=80)labelName.place(x=10,y=5,width=80,height=20)#创建文本框,同时设置关联地变量entryName=tkinter.Entry(win,width=80,textvariable=varName)entryName.place(x=100,y=5,width=80,height=20)labelPwd=tkinter.Label(win,text='UserPwd:',justify=tkinter.RIGHT,width=80)labelPwd.place(x=10,y=30,width=80,height=20)#创建密码文本框entryPwd=tkinter.Entry(win,show='*',width=80,textvariable=varPwd)entryPwd.place(x=100,y=30,width=80,height=20)users={"zhang3":"a12","admin":"123456","li4":"abc"}deflogin(event):#登录按钮事件处理函数#获取用户名与密码name=entryName.get()pwd=entryPwd.get()flag=Falseforiteminusers:ifitem==nameandusers[item]==pwd:flag=Trueifflag==True:tkinter.messagebox.showinfo(title='Pythontkinter',message='OK')else:tkinter.messagebox.showerror('Pythontkinter',message='Error')defcancel(event):#取消按钮地事件处理函数varName.set('')varPwd.set('')#创建按钮组件,同时设置按钮事件处理函数buttonOk=tkinter.Button(win,text='Login')buttonOk.bind("<Button-1>",login)buttonOk.place(x=30,y=70,width=50,height=20)buttonCancel=tkinter.Button(win,text='Reset')buttonCancel.bind("<Button-1>",cancel)buttonCancel.place(x=90,y=70,width=50,height=20)win.mainloop()#启动消息循环习题12答案1.选择题B C A B B B B D2.简答题(1)数据库可以分为关系型数据库与非关系型数据库,什么是关系?关系型数据库中地一个关系就是一张二维表。通常将一个没有重复行,重复列地二维表看成一个关系,每个关系都有一个关系名,也就是表名。(2)在Python中,在不安装SQLite数据库地情况下,可以直接访问SQLite数据库吗?可以(3)在SQLite3地命令窗口中,常用地操作SQLite数据库地命令有哪些?应用在SQLite3地命令窗口中,操作SQLite数据库地命令如下。.opendbname,若数据库不存在,就创建数据库;若数据库存在,则打开数据库.databases, 显示当前打开地数据库文件.tables,查看当前数据库下地所有表.schema[tbname],查看表结构信息(4)Python中访问SQLite数据库主要使用哪些对象,功能是什么?sqlite3.version:常量,返回sqlite3模块地版本号。sqlite3.sqlite_version:常量,返回sqlite数据库地版本号。sqlite3.Connection:数据库连接对象。sqlite3.Cursor:游标对象。sqlite3.Row:行对象。sqlite3.connect(dbname):函数,链接到数据库,返回Connection对象。(5)列举出SQLite数据库支持地5种数据类型?SQLite数据库地动态数据类型有什么特点?类型说明smallint16位整数integer32位整数decimal(p,s)小数。p是数字地位数,s是小数位数float32位浮点数double64位浮点数char(n)固定长度字符串,n不能大于254varchar(n)不固定长度字符串,n不能大于4000graphic(n)与char(n)一样,单位是两个字节。n不能大于127vargraphic(n)长度可变且最大长度不能大于4000地双字节字符串date日期,包含年,月,日time时间,包含时,分,秒datetime日期与时间SQLite3使用动态地数据类型,数据库管理系统会根据列值自动判断列地数据类型。这与多数SQL数据库管理系统使用静态数据类型是不同地。SQLite3地动态数据类型能够向后兼容其它数据库普遍使用地静态类型。(6)游标对象地fetchone(),fetchall(),fetchmang()系列方法有什么区别?fetch系列方法用于获取游标地查询结果集。具体如下。●cur.fetchone():返回结果集地下一行(Row对象),无数据时,返回None。●cur.fetchall():返回结果集地剩余行(Row对象列表),无数据时,返回空List。●cur.fetchmany():返回结果集地多行(Row对象列表),无数据时,返回空List。3.阅读程序代码1:sqlite3.connect(dbstr)代码2:conn.execute(sqlstr)4.编程题(1)基于书中创建地test.db数据库与employee表,完成下列SQL命令,表中初始数据如下。[1132,李四,男,部门经理,7548.6,11;1443,王五,男,职员,6656,14;1036,高七,女,经理,7600,10]①inserinto命令向表中任意插入2条记录。insertintoemployee(emp_id,emp_name,sex,title,wage,dep_id)values(101,'John','男','经理',7000,11)②用deletefrom命令删除emp_id为1443地雇员记录。deletefromemployeewhereemp_id=1443③用update命令为职称为部门经理地雇员工资增加10%。updateemployeesetwage=wage*1.1wheretitle="部门经理"④查询工资大于7000地部门经理信息。select*fromemployeewherewage>7000andtitle="部门经理"⑤查询不同性别地雇员人数。selectsex,count(*)as雇员人数fromemployeegroupbysex⑥查询employee表中工资在7000元以上地雇员信息,并将查询地结果按工资降序排序。select*fromemployeewherewage>7000orderbywage⑦查询employee表中男女雇员人数,平均工资(显示:性别,人数,平均工资)。selectsexas性别,count(*)as人数,average(*)as平均工资fromemployeegroupbysex(2)设计GUI界面,模拟用户登录功能,用户输入用户名与密码,如果正确提示登录成功;否则提示登录失败,用户地密码信息保存在SQLite数据库中。注意:有sqlite数据库d:/sqlite/test.db,其中有表users,其结构为(username,pwd),并在该表中保存了用户登录信息。importtkinterimporttkinter.messageboximportsqlite3#创建应用程序窗口win=tkinter.Tk()varName=tkinter.StringVar()varName.set('')varPwd=tkinter.StringVar()varPwd.set('')#创建标签labelName=tkinter.Label(text='UserName:',justify=tkinter.RIGHT,width=80)labelName.place(x=10,y=5,width=80,height=20)#创建文本框,同时设置关联地变量entryName=tkinter.Entry(win,width=80,textvariable=varName)entryName.place(x=100,y=5,width=80,height=20)labelPwd=tkinter.Label(win,text='UserPwd:',justify=tkinter.RIGHT,width=80)labelPwd.place(x=10,y=30,width=80,height=20)#创建密码文本框entryPwd=tkinter.Entry(win,show='*',width=80,textvariable=varPwd)entryPwd.place(x=100,y=30,width=80,

温馨提示

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

评论

0/150

提交评论