1、Python编程基础课程期末复习资料一、客观部分:(单项选择、多项选择、不定项选择、判断)(一)、单项选择1、Python程序在执行一次之后会自动生成扩展名为(B )的字节码文件, 以提高运行效率。A .pyB、.pycC、.pybD、.pyf2、Pylhon3. x环境创建Python脚本文件时,需要将文件编码格式设置为(C )。A、ANSIB、GBKC、UTF-8D、UNICODE3、下列选项中,用于接收标准输入数据(即从键盘输入)、返回为string类型 (字符串)的函数是(B )。A、evalinputC printD get4、执行“print (0x20),则在屏幕上会输出(D )
2、。A、20B、 0x20C、 16D、 325、下列选项中,执行时不会报错的语句是(C )。A、int(23. 5) B、float C 23. 5+T) C、float (23. 5) D、int (2a, 8)6、下列选项中,描述错误的选项是(A )。A、列表中的元素类型必须相同B、列表中的元素之间用逗号分隔C、列表中的元素可以是列表类型D、列表中可以包含数字类型的元素7 已知t=(12, 34. 5, True, test, 3+5j),则下列选项中,输出结果为“(test,) ” 的选项是(C )0A、t3B、 t4C、 t3:4D、 t4:58、下列选项中,执行时不会报错的语句是(D
3、 )。A、Python, TrueB、(3. 5, 1. 2, TrueC、(3. 5, (1. 2, TrueD、(3. 5, 1. 2, True)14、请指出下面程序中存在的错误并改正。def Sum(a,b,c):print(a+b+c)t=(l,2,3)Sum(*t)参考答案:t是元组,拆分时应使用一个*,因此应将“*i改为“*t15、请写出testM.py运行后的输出结果。M.py中的代码:def PrintSum(m,n):print(m+n)PrintSum(IO,15)testM.py中的代码:import MM.PrintSum(l,2)参考答案:(1) 25316、将下面
4、代码放在test.py脚本文件中。当执行“python test.py 5”时输出15, 当执行python test.py 10时输出55。请将下面程序补充完整。import (1) n=int( (2) )sum=0for i in range(I,n+1):sum+=iprinted和结果:d%sum)参考答案:(1) syssys. argvl17、请指出下面程序中存在的错误并改正。M.py中的代码:def PrintSum(m,n):print(m+n)testM.py中的代码。 import M as mM.Prints um(3,5)参考答案:import导入模块时通过“as为模
5、块起了别名,则在使用该模块时只能使用 别名而不能用原模块名,因此应将“ M. PrintSum(3,5)改为m. PrintSum(3,5) ”18、请写出下面程序的输出结果。def fl ():printCfl函数被调用! *)def(2():printCf2函数被调用!)fl=f2fl()f2()参考答案:(1) f2函数被调用!(2) f2函数被调用!19、请指出下面程序中存在的错误并改正。def fl ():print(x)def 12():x=50#将全局变量x的值修改为50print(x)x=10f2()fl()参考答案:在一个函数中修改一个全局变量的值必须使用global关键字,
6、因此应在2 函数的开始加上“global x20、下面程序输出结果为50,请指出下面程序中存在的错误并改正。def fl ():x=10deff2():x=50f2()print(x)fl()参考答案:在内层函数中修改外层函数局部变量的值必须使用nonlocal关键字,因此 应在f2函数的开始加上nonlocal x21、请写出下面程序的输出结果。def FunAdd(f,x,y):return f(x)+f(y)print(FunAdd(lambda x:x*2+1,3,-5) print(FunAdd(lambda x:x*2+1,3,-5) 参考答案:(1) -23622、下面程序输出结
7、果为25,请将下面程序补充完整。def outer(x):def inner(y): (1) return x+yreturn (2) f=outcr(5)print(f(2O)参考答案:(1) nonlocal xinner23、请将下面程序补充完整。class Studencpassif _name_=_main_slul=Studen()stu2=Student() (I ) -unknown (2) =19print(stu 1 .name) #输出 unknownprint(stu2.name) #输出 unknown prin(stul.age) # 输出 19#print(stu
8、2.age) #取消前面的注释符则会报错 参考答案:(1) Student, namestul. age24、请将下面程序补充完整。class Student:def (1) (self, (2) ):self.name=namedef Prinilnfo(self):printC姓名:%s%self.name)if _name_=_main_stul=S(udent()stu2=Student(,李晓明)stul.PrintlnfoO#输出姓名:unknown”stu2.PrintInfo() #输出“姓名:李晓明” 参考答案:(1) _init_name=,unknown25、请将下面程序
9、补充完整。class A: ( I) :printCA类的方法被调用!) (2) :def fb(sclf)printCB类的方法被调用!)if _name_=_main_b=B()b.fa()b.fb()参考答案:(1) def fa(sclf)class B(A)26、请将下面程序补充完整。d=dict(a=l,b=2)for (I) :print(k,v)for (2) :print(k,dk)参考答案:(1) k, v in d. iterns()k in d. keys ()或 k in d27、请将下面程序补充完整。 (1) pattcrn= (2) (rA)result=patt
10、em.match( 南开大学 *)print(result:,result)参考答案:(1) import rere. compile28、编写程序实现以下功能:对于数值x,如果x在区间(1,2上,则输出x+2.5; 如果x在区间1,1上,则输出4.35x;如果x在区间.2,.1)上,则输出x;如果x 为其他值,则输出“无效值二参考答案:x=eval(input(,iW输入一个数值:)if xl and x=-l and x=-2 and x0:print(,有两个实根)elift=O:print(,有一个实根)else:printed 实根,)30、使用for循环编写程序实现以下功能:计算l
11、!+2!+n!。参考答案:n=eval(input(,请输入一个大于0的整数:)sum=0rll=lfor i in range(l,n+l):rlt*=isum+=rltprint。结果为:%d%sum)31、使用while循环编写程序实现以下功能:把一张100元人民币换成1()元、5 元、1元面额,将所有可能的换法及换法总数输出。参考答案:n,i=0,0while i= 100/10:j=0while j=(100-i*10)/5:printflO元张,5元(1 张,元张(i,j,l()0-i*10-j*5)n+=lj+=li+=lprint(总共有1种换法n)32、使用while循环编写
12、程序实现以下功能:输入一个整数,判断其是否是素数, 并输出判断结果。参考答案:n=eval(input(请输入-个大于1的整数:)m=int(n*0.5)i=2while i=m:ifn%i=0:breaki+=lifi=m:print(不是素数)else:print。是素数)33、编写程序实现以下功能:输入若干整数(输入0结束),每个整数输入完毕 后,马上输出该整数是否为素数。要求判断一个整数是否为素数的功能用一个函 数实现。参考答案:def IsPrimc(n):m=int(n*0.5)i=2while i=m:if n%i=O:print(%d不是素数n)breaki+=lelse:pr
13、intC%d 是素数n)while True:n=eval(input(,请输入一个整数(输入。结束程序):)ifn=O:breakelif n2:prinl(输入的整数必须大于I,请重新输入L)continueelse:IsPrime(n)34、编写程序实现以下功能:输入若干个整数(输入0结束),将不能被3整除 的整数相加,并将求和结果输出。要求判断一个整数n是否能被另一个整数m 整除的功能用一个函数实现。参考答案:def IsMultiple(n,m):if n%m=0:return Truereturn Falsesum=0while True:n=eval(i叩ut(,请输入一个整数(
14、输入0结束程序):)if n=0:breakif IsMultiplc(n,3)=Falsc:sum+=nprint(所有不能被3整除的整数之和为:%d*%sum)35、编写程序实现以下功能:运行程序时指定一个整数参数,程序运行后输出该数的阶乘。例如,程序存放在脚本文件test.py中,则执行“python test.py 5”会输出 120 (即 5!),执行 “python test.py 3会输出 6 (即 3!)。参考答案:import sysn = int(sys.argvl)if nl:prints输入整数必须大于0! *)else:fac=lfor i in range( 1 ,
15、n+1):fac*=iprint(fac)36、请定义一个Circle类,具体要求为:(1)每个Circle类对象可以存储圆心和 半径信息;(2)具有设置圆心和半径的方法SetCenter和Se信adius; (3)具有输 出圆信息的方法Printinfo; (4)具有计算圆面积的方法Get Area o参考答案:class Circle:x,y,r=0,0,ldef SelCenter(self,x,y):self.x=xself.y=ydef SetRadius(self,r):self.r=rdef Printlnfo(self):printC圆心:(%f,%f),半径:%f%(self
16、.x,self.y,self.r)def GetArea(self):return 3.14*self.r*self.rif _name_=_main_c=Circle()c.SetCenter(3.2,5.5)c.SetRadius(1.5)c.PrintlnfoOprint(面积为:f%c.Get Area。)37、请定义一个Time类,具体要求为:(1)每个Time类对象可以存储一个时 间(包括时、分、秒);(2)具有设置当前时间的方法SetTime; (3)具有每次增 加1秒的方法AddOncSec; (4)具有输出当前时间的方法PrintTime。参考答案:class Time:h,
17、in,s=0,0.0def SetTime(self,h,m,s):self.h=hself.m=mself.s=sdef AddOneSec(self):sclf.s+=lif self.s=60:self.m+=lself.s=Oif self.m=60:self.h+=lsclf.in=Oifself.h=24:sclf.h=Odef PrintTime(self):printC当前时间:02d:%02d:%()2d%(self.h,self.m,self.s)if _name_=_main_t=Time()t.SetTime(23,58,59)for i in range( 100):
18、l.PrintTimeOt.AddOneSec()38、请定义一个Cylinder类,具体要求为:(1)每个Cylinder类对象可以存储一 个圆柱体(包括半径和高);(2)具有用于初始化半径和高的构造方法;(3)具 有输出圆柱体信息的方法Printinfo; (4)具有计算圆柱体体积的方法Get Volume o 参考答案:class Cylinder:r,h=l,ldef_init_(self,r,h):self.r=rself.h=hdef GctVolume(self):return 3.14*self.r*self.r*self.hdef Printlnfo(self):print(
19、半径:f,高:%f%(self.r,self.h)if _name_=_main_c=Cylinder(3.1,2.5)c.PrintInfo()printCH柱体体积为:%f%c.GetVolume()39、编写程序实现以下功能:根据指定值从一个列表中查找所有匹配元素的位置, 要求使用列表中的index方法进行查找。参考答案:def findall(ls,x):beg=0total=ls.count(x)rlt=for i in range(total):pos=lsbcg:J.indcx(x)rlt.appcnd(pos+bcg)beg=pos+beg+Ireturn rltif _nam
20、e_=_main_r=findall( 1,3,3,5,2,3,6,3,7,9,3,3)printC匹配的元素下标为:,r)40、编写程序实现以下功能:在字符串S1中检索指定字符串S2,获取所有匹配 字符串的起始字符位置,要求使用字符串的find方法进行检索。参考答案:def flndsubstr(str,sub):bcg=0rit=nwhile True:pos=str.find(sub,beg)if pos=-l:breakrlt.append(pos)beg=pos+1return rltif _name_=_main_r=findsubstr(cat dog cat dog cat c
21、at dog,cat) printed配字符串的起始字符下标为:,,r)41、编写程序实现以下功能:利用正则表达式对象的search方法,查找一个字符 串中的所有HTML标记(即由一对尖括号o括起来的内容)o参考答案:import redef findhtmlmarks(str):pattern=pile(r,A,)beg=0ls=while True:rlt=pattern.search(str,beg)if rlt=None:breakIs.append(rlt) beg=rlt.end()return Isls=findhtmlmarks(, 南开大学 )print(ls)42、编写程序
22、实现以卜,功能:在字符串si中检索指定字符串s2,获取所有匹配9、下列选项中,错误的描述是(C )。A、字典中的每一个元素是一个键:值对B、字典中不同元素的键不能相同C、字典中不同元素的值不能相同D、通过可以创建一个空字典10、3*5*2的运算结果为(C )0A、30B、225 C、75D、报错11、调用函数时函数名后面的一对小括号中给出的参数称为(A )。A、实参13、形参C、类型参数D、名字参数12、不定长的位置参数在传递给函数时会被封装成(A )0A、元组B、列表C、集合D、字典13、一个脚本文件M.py单独执行时,其_脱爬_变量的值为(B )。An MB、 mainC、M. pyD、不
23、存在14、局部变量的作用域是(B )oA、从定义变量的位置到文件结束位置B、从定义变量的位置到函数结束位置C、所有函数D、所有文件15、内层函数使用外层函数中定义的变量,应使用(B )关键字。A、 localB、 nonlocalC、 globalD、 nonglobal16、lambda 函数是指(B )。A、在一个函数内部通过调用自己完成问题的求解B、不使用def定义函数的形式C、一个函数不断被其他函数调用完成问题的求解D、把函数作为参数的一种函数17、在闭包中,外层函数的返回值是(B )oA、内层函数的调用B、内层函数的引用C、任意值D、无返回值18、类中的(A )对应一个类可以用来保存
24、哪些数据。字符串的起始字符位置,要求使用字符串的index方法进行检索。 参考答案:def findsubstr(str,sub):beg=Orlt=lwhile True:try:pos=str.index(sub,beg) rlt.appcnd(pos)beg=pos+1except ValucError:breakreturn rltif _name_=-_main_r=findsubstr(cat dog cat dog cat cat dog,cat) printC匹配字符串的起始字符下标为:r)19、类中在特定情况下由系统自动执行的方法是(C )。D、普通方法D、不限D、 supe
25、rD、第二个实参A、类方法 B、静态方法 C、内置方法20、析构方法的形参个数为(B )oA、0B、1C、至少1个 21、用于获取父类代理对象的方法是(D )。A、 parentB、 proxyC、 delegate22、类方法的第一个形参对应(A )oA、类B、对象C、第一个实参 23、为A类中的t属性定义一个获取属性值的方法(即getter),则应使用(A ) 装饰器。A、propertyB、t. getterC、property, getterD、t. property, getter24、已知“a二1,2,3” 且“b=a:”,则执行“al=10”后,b 的值为(B )。A、1,10B
26、、1, 2,3C. 1, 10,3 D、报错25、统计列表Is中的值为3的元素个数应使用(A )oA、Is. count (3)B、count (Is, 3)C、Is. len(3)D lends, 3)26 己知 a a=dict(x=l, y=dict(yl=2, y2=3) w 且 “ b=a. copy(),则执行 “ayyl=10”后,则 print (b)的输出结果为(C )。A、(x=l, y=yl=10, y2=3B、(x=l,y=yl=2,y2=3)C x: 1, y: yl: 10, y2:3D、 x : 1, y : yl :2, y2 :3)27、生成器解决了使用列表存
27、储数据可能存在的(A )问题。A、内存不足B、访问速度慢C、元素值不能重复D、元素可修改28、与正则表达式*ba-z*c”匹配的字符串是(A )0A、 abdecB、 abcC、 abOcD、 cabc29、已知m是一个Match对象,则m. groups ()返回的结果必然是一个(B )o30、要从文件中按行读取所有数据,则应使用文件对象的(D )方法。A、readB、readall C、readlineD、readlines(二)、多项选择1、下列占位运算符中,表示有符号浮点型十进制数的占位符是(AC )。A、%fB、%dC、%FD、%s2、下列选项中,计算结果为True的表达式包括(AB
28、C )。A、15=8 B、not 15=8 or 15=8 and 15 x is yC、id(x)=id(y) D not x!=y4、下面关于pass的说法中,正确的是(AC )oA、pass表示一个空操作,只起到占位作用B、pass只能用在条件语句中C、if的分支语句中可以只包括passD、pass能够跳出循环语句5、已知有代码“for x in y:”,则y的数据类型可以是(ABD )。A、列表B、元组C、数值D、字符串6、如果希望用一个return语句结束函数但不返回任何数据,则可以写为 (BC )。A、 return FalseB、 returnC、 return NoneD、 r
29、eturn 07、下面关于包的叙述中,正确的是(ABD )。A、利用包可以将多个关系密切的模块组织在一起B、定义一个包就是创建一个文件夹并在该文件夹下创建一个名为_init_. py 的文件C、一个包下面只能包含模块D、一个包下面还可以包含子包8、下列选项中,描述正确的是(ACD )。A、构造方法是类的内置方法之一B、构造方法在定义类时自动执行C、构造方法在创建对象时自动执行D、构造方法可以设置默认参数值9、如果一个类C1通过继承己有类C而创建,则将C称作(BCD )oA、子类B、基类C、父类D、超类10、使用集合的update方法,传入的实参可以是(BCD )。A、数字B、元组C、列表D、字
30、符串11、字符串检索时,检索失败时不会引发异常的方法包括(AB )。A、find13、rfindC、indexD、rindex12、如果要替换字符串中与指定正则表达式匹配的子串,可以使用re模块的 (CD )函数。A、 replacesplitC、 subD、 subn(三)、判断部分K Matplotlib是一款Python编程环境下免费使用的绘图工具包,其工作方式 和绘图命令几乎和MATLAB类似。(J )2、Python是一种弱类型的语言,变量的类型由其值的类型决定。(J)3、二进制数转十进制数的规则是“按权展开求和二(V )4、伪代码必须符合Python语言的语法要求。(X)5、在fo
31、r循环和while循环后而可以跟着else分支,退出循环后必然会执行else后面的语句序列。(X )6、Python中的函数定义通过define关键字完成。(X)7、对于没有默认参数值的形参,在函数调用时必须为其指定实参。(J)8、使用a import Ml; M2; M3可以一次导入Ml、M2和M3这3个模块。(X)9、己知MyModule模块中有一个无参函数fun,且在脚本文件N. py中有importMyModule as M”,则在N. py中要调用MyModule模块中的fun函数应使用“M. fun()。(J)10、装饰器的作用是在不修改己有函数情况下向己有函数注入代码。(J)12
32、、一个类属性只能通过类名访问。(X)13、已知类的普通方法func有3个形参且都没有默认参数值,则调用该方法时 必须传入对应的3个实参。(X ) 14、已知Student类有一个属性_id, stu是Student类的对象,则通过“stu._id二1810101可以将stu对象中的_id属性赋值为字符串1810101。(X)15、_str_方法的返回值可以是整数。(X )16、如果一个子类有两个或更多父类,则这种继承关系称为多重继承。(J )17、Python中的多态是借助鸭子类型实现的。(V )18、己知B是A的父类,b是B类的对象,则A=type(b)返回结果为True。(X)19、对于可
33、变类型的对象a,通过“竺b”可以修改a的值,但赋值前和赋值后a 所对应的内存地址可能会发生变化。(V )20、通过“max(t) ”可以得到元组t中最大元素的值。(V )21、已知si和s2是两个集合,则执行“si. union(s2) ”后,si中的元素是原来si和s2两个集合中的元素的并集。(X )22、已知执行“ d=dict(sno=1810100, name=李晓明,age=19) ”,则执行“r=d pop(age) ”后,r 的值为 19。( V )23、os. path. join(., src , tools)与.0 src0 tools,. format (os. sep)
34、 返回的字符串相同。(J)24、如果一个except子句捕获多个异常,则多个异常名应写为元组的形式。(J )二、主观部分:(一)、程序题1、请写出下面程序的运行结果。test=,Python,Test=27.5print(test)tcst= 15print(Test)参考答案:(1) Python27. 52、下面程序运行结果为“105”,请将程序补充完整(每个空只能填写一条语句)。x=5y=10 (1) print(x,y)参考答案:(1) x,y=y,x3、请写出下面程序的输出结果。sl=,大家好!s2=ltVs a book!print(sl)print(s2)参考答案:(1) 大家好
35、!(2) Its a book!4、下面程序运行结果为:大家好!我是李晓明!请将程序补充完整(每个空只能填写一条语句)。 (1) print(s)参考答案:(1) s=大家好! n我是李晓明!5、请写出下面程序的输出结果。ls=l, 2.5, test, 3+4j, True, 3,1.63, 5.3print(ls3:5)print(ls-3)参考答案:(1) (3+4j), TrueTrue6、下面程序运行结果为:张三95请将程序补充完整。info=name:张三,age: 19, score: (python,:95,math,:921print(info (1) )print(info
36、 (2) )参考答案:(1) namescorepython7、请写出下面程序的输出结果。x,y=l,2,3,l,2,3print(x=y)print(x is y)参考答案:(1) TrueFalse8、请写出下面程序的输出结果。x,y,z=3,5,7if yx:print(y)if yz:print(y)else:print(z)else:print(x)if xz:print(x)else:print(z)参考答案:(1) 579、下面程序的功能是使用for循环实现1到n直接按所有奇数的求和,请将程 序补充完整。n=eval(input(iW输入一个大于0的整数:) (1) fbr i
37、in range( (2) ):sum+=iprint(sum)参考答案:(1) sum=0l,n+l,210、请写出下面程序的输出结果。n】.n=24,36while m!=n:while mn:m-=nwhile nm:n-=mprint(m)参考答案:(1) 241211、请写出下面程序的输出结果。def Modify Val(x,y):x=ydef ModifyListElement(ls,idx,val):lsidx=valc=l,3,5ModifyVal(c,4,5,6)print(c)c=246,8ModifyListElcmcnt(c,2,20)print(c)参考答案:(1)
38、 1, 3, 52, 4, 20, 812、请指出下面程序中存在的错误并改正。def Sludentlnfo(country=,中国chineselevel=良好name):print(*姓名:%s,中文水平:s,国家:%s%(name,chineselevel,country) Studentlnfo(country=美国chincselevel=-般name=约翰)参考答案:带默认参数值的形参应在不带默认参数值的形参后面,可将“def Student Info (country=* 中国,chineselevel=良好,name):改为def Studentlnfo(name, country中国,chineselevel=良好):”13、下面程序输出结果是:10 (15, 20) X: 25, b: 30。请将下面程序补充完整。defFun(x, (1) , (2) ):print(x, args 1, args2)Fun(10, 15, 20, a=25, b=30)参考答案:(1) *argsl*args2