资源描述
《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 )。
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、t[3]B、 t[4]C、 t[3:4]D、 t[4:5]8、下列选项中,执行时不会报错的语句是(D )。
A、{['Python', True]}B、(3. 5, [1. 2, True]}C、(3. 5, (1. 2, True}}D、(3. 5, 1. 2, True)14、请指出下面程序中存在的错误并改正。
def Sum(a,b,c):
print(a+b+c)
t=(l,2,3)
Sum(**t)参考答案:
t是元组,拆分时应使用一个*,因此应将“**i"改为“*t"
15、请写出testM.py运行后的输出结果。
M.py中的代码:
def PrintSum(m,n):
print(m+n)PrintSum(IO,15)testM.py中的代码:
import MM.PrintSum(l,2)参考答案:
(1) 25316、将下面代码放在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. argv[l]17、请指出下面程序中存在的错误并改正。
M.py中的代码:
def PrintSum(m,n):
print(m+n)testM.py中的代码。 import M as m
M.Prints um(3,5)参考答案:
import导入模块时通过“as"为模块起了别名,则在使用该模块时只能使用 别名而不能用原模块名,因此应将“ M. PrintSum(3,5)"改为"m. PrintSum(3,5) ”18、请写出下面程序的输出结果。
def fl ():
printCfl函数被调用! *)
def(2():
printCf2函数被调用!’)
fl=f2
fl()
f2()参考答案:
(1) f2函数被调用!
(2) f2函数被调用!
19、请指出下面程序中存在的错误并改正。
def fl ():
print(x)
def 12():
x=50#将全局变量x的值修改为50print(x)
x=10
f2()
fl()参考答案:
在一个函数中修改一个全局变量的值必须使用global关键字,因此应在£2 函数的开始加上“global x"20、下面程序输出结果为50,请指出下面程序中存在的错误并改正。
def fl ():
x=10deff2():
x=50f2()print(x)
fl()参考答案:
在内层函数中修改外层函数局部变量的值必须使用nonlocal关键字,因此 应在f2函数的开始加上"nonlocal x"21、请写出下面程序的输出结果。
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、下面程序输出结果为25,请将下面程序补充完整。
def outer(x):
def inner(y):
(1) return x+yreturn (2)
f=outcr(5)
print(f(2O))参考答案:
(1) nonlocal xinner23、请将下面程序补充完整。
class Studencpass
if _name_=='_main_
slul=Studen(()
stu2=Student()
(I ) -unknown'
(2) =19
print(stu 1 .name) #输出 unknown
print(stu2.name) #输出 unknown prin((stul.age) # 输出 19
#print(stu2.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=,unknown'25、请将下面程序补充完整。
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,d[k])参考答案:
(1) k, v in d. iterns()k in d. keys ()或 k in d27、请将下面程序补充完整。
(1)
pattcrn= (2) (r'<[A<]*>')
result=pattem.match('<h 1 > 南开大学 </h 1 >*)
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 x>l and x<=2:
print(x+2.5)elif x>=-l and x<=l:
print(4.35*x)elif x>=-2 and x<-l:
print(x)else:
print('无效值,)29、编写程序实现以下功能:判断ax&+bx+c=0 (这里用人表示乘方)是否是一 元二次方程,如果是的话再判断是否有两个实根、一个实根或没有实根,并将判 断结果输出。
参考答案:
a=eval(input('请输入 a 的值:’))b=eval(input('请输入 b 的值:'))c=eval(input('in输入 c 的值:*)) t=b*b~4*a*cif a==0:
printC不是一元二次方程)elift>0:
print(,有两个实根)elift==O:
print(,有一个实根')else:
printed 实根,)30、使用for循环编写程序实现以下功能:计算l!+2!+・・・+n!。
参考答案:
n=eval(input(,请输入一个大于0的整数:'))sum=0rll=lfor i in range(l,n+l):
rlt*=i
sum+=rltprint。结果为:%d'%sum)31、使用while循环编写程序实现以下功能:把一张100元人民币换成1()元、5 元、1元面额,将所有可能的换法及换法总数输出。
参考答案:
n,i=0,0while i<= 100//10:
j=0
while j<=(100-i*10)//5:
printflO元%《张,5元%(1 张,]元%《张'%(i,j,l()0-i*10-j*5))
n+=l
j+=l
i+=lprint('总共有%<1种换法%n)32、使用while循环编写程序实现以下功能:输入一个整数,判断其是否是素数, 并输出判断结果。
参考答案:
n=eval(input('请输入-个大于1的整数:’))m=int(n**0.5)i=2while i<=m:
ifn%i==0:
break
i+=lifi<=m:
print('不是素数)else:
print。是素数)33、编写程序实现以下功能:输入若干整数(输入0结束),每个整数输入完毕 后,马上输出该整数是否为素数。要求判断一个整数是否为素数的功能用一个函 数实现。
参考答案:
def IsPrimc(n):
m=int(n**0.5)
i=2
while i<=m:
if n%i==O:
print('%d不是素数%n)breaki+=l
else:
printC%d 是素数%n)while True:
n=eval(input(,请输入一个整数(输入。结束程序):’))
ifn==O:
break
elif n<2:
prinl(输入的整数必须大于I,请重新输入L)continue
else:
IsPrime(n)34、编写程序实现以下功能:输入若干个整数(输入0结束),将不能被3整除 的整数相加,并将求和结果输出。要求判断一个整数n是否能被另一个整数m 整除的功能用一个函数实现。
参考答案:
def IsMultiple(n,m):
if n%m==0:
return True
return Falsesum=0while True:
n=eval(i叩ut(,请输入一个整数(输入0结束程序):))
if n==0:
break
if 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.argv[l])if n<l:
prints输入整数必须大于0! *)else:
fac=l
for i in range( 1 ,n+1):
fac*=i
print(fac)36、请定义一个Circle类,具体要求为:(1)每个Circle类对象可以存储圆心和 半径信息;(2)具有设置圆心和半径的方法SetCenter和Se信adius; (3)具有输 出圆信息的方法Printinfo; (4)具有计算圆面积的方法Get Area o参考答案:
class Circle:
x,y,r=0,0,l
def SelCenter(self,x,y):
self.x=xself.y=y
def SetRadius(self,r):
self.r=r
def Printlnfo(self):
printC圆心:(%f,%f),半径:%f%(self.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.PrintlnfoO
print('面积为:%f%c.Get Area。)37、请定义一个Time类,具体要求为:(1)每个Time类对象可以存储一个时 间(包括时、分、秒);(2)具有设置当前时间的方法SetTime; (3)具有每次增 加1秒的方法AddOncSec; (4)具有输出当前时间的方法PrintTime。
参考答案:
class Time:
h,in,s=0,0.0
def SetTime(self,h,m,s):
self.h=hself.m=mself.s=s
def 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=O
def 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):
l.PrintTimeOt.AddOneSec()38、请定义一个Cylinder类,具体要求为:(1)每个Cylinder类对象可以存储一 个圆柱体(包括半径和高);(2)具有用于初始化半径和高的构造方法;(3)具 有输出圆柱体信息的方法Printinfo; (4)具有计算圆柱体体积的方法Get Volume o 参考答案:
class Cylinder:
r,h=l,l
def_init_(self,r,h):
self.r=rself.h=h
def GctVolume(self):
return 3.14*self.r*self.r*self.h
def Printlnfo(self):
print('半径:%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=0
total=ls.count(x)
rlt=[]
for i in range(total):
pos=ls[bcg:J.indcx(x)rlt.appcnd(pos+bcg)beg=pos+beg+I
return rltif _name_=='_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=0
rit=n
while True:
pos=str.find(sub,beg)if pos==-l:
breakrlt.append(pos)beg=pos+1
return rltif _name_=='_main_r=findsubstr('cat dog cat dog cat cat dog','cat') printed配字符串的起始字符下标为:,,r)41、编写程序实现以下功能:利用正则表达式对象的search方法,查找一个字符 串中的所有HTML标记(即由一对尖括号o括起来的内容)o参考答案:
import redef findhtmlmarks(str):
pattern=pile(r,<[A<l*>,)
beg=0
ls=[]
while True:
rlt=pattern.search(str,beg)if rlt==None:
breakIs.append(rlt) beg=rlt.end()
return Isls=findhtmlmarks(,<body><h 1 > 南开大学 </h 1 ></body>')print(ls)42、编写程序实现以卜,功能:在字符串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、不存在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 )对应一个类可以用来保存哪些数据。
字符串的起始字符位置,要求使用字符串的index方法进行检索。 参考答案:
def findsubstr(str,sub):
beg=O
rlt=[l
while True:
try:
pos=str.index(sub,beg) rlt.appcnd(pos)beg=pos+1except ValucError:
break
return rltif _name_=-_main_r=findsubstr('cat dog cat dog cat cat dog','cat') printC匹配字符串的起始字符下标为:\r)
19、类中在特定情况下由系统自动执行的方法是(C )。
D、普通方法
D、不限
D、 super
D、第二个实参
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[:]”,则执行“a[l]=10”后,b 的值为(B )。
A、[1,10]B、[1, [2,3]]C. [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()",则执行 “a['y']['yl']=10”后,则 print (b)的输出结果为(C )。
A、(x=l, y={yl=10, y2=3}}B、(x=l,y={yl=2,y2=3})C^ {'x': 1,' y': {'yl': 10,' y2':3}}D、{' x' : 1,' y' : {' yl' :2,' y2' :3))27、生成器解决了使用列表存储数据可能存在的(A )问题。
A、内存不足B、访问速度慢C、元素值不能重复D、元素可修改28、与正则表达式"*b[a-z]*c”匹配的字符串是(A )0A、 abdecB、 abcC、 abOcD、 cabc29、已知m是一个Match对象,则m. groups ()返回的结果必然是一个(B )o
30、要从文件中按行读取所有数据,则应使用文件对象的(D )方法。
A、readB、readall C、readlineD、readlines
(二)、多项选择1、下列占位运算符中,表示有符号浮点型十进制数的占位符是(AC )。
A、%fB、%dC、%FD、%s2、下列选项中,计算结果为True的表达式包括(ABC )。
A、15>=8 B、not 15<8 C、15>=8 or 15<8 D、15>=8 and 15<83、下列选项中,可以用于判断x和y是否对应同样存储单元的语句是(BC )0A、x=yB> 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、 return 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、字符串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、在for循环和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、一个类属性只能通过类名访问。(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、对于可变类型的对象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} src{0} tools,. format (os. sep) 返回的字符串相同。(J)24、如果一个except子句捕获多个异常,则多个异常名应写为元组的形式。(J )二、主观部分:
(一)、程序题1、请写出下面程序的运行结果。
test=,Python,
Test=27.5
print(test)
tcst= 15
print(Test)参考答案:
(1) Python27. 52、下面程序运行结果为“105”,请将程序补充完整(每个空只能填写一条语句)。
x=5
y=10
(1)
print(x,y)参考答案:(1) x,y=y,x3、请写出下面程序的输出结果。
sl=,大家'
好!’
s2='ltVs a book!'
print(sl)
print(s2)参考答案:
(1) 大家好!
(2) It's a book!
4、下面程序运行结果为:
大家好!
我是李晓明!
请将程序补充完整(每个空只能填写一条语句)。
(1)
print(s)参考答案:
(1) s="大家好! \n我是李晓明!"5、请写出下面程序的输出结果。
ls=[l, 2.5, 'test', 3+4j, True, [3,1.63], 5.3]
print(ls[3:5])
print(ls[-3])参考答案:
(1) [(3+4j), True]True6、下面程序运行结果为:
张三
95请将程序补充完整。
info={'name':'张三','age': 19, 'score': ('python,:95,'math,:921}
print(info (1) )
print(info (2) )参考答案:
(1) ['name']['score']['python']7、请写出下面程序的输出结果。
x,y=[l,2,3],[l,2,3]
print(x==y)
print(x is y)参考答案:
(1) TrueFalse8、请写出下面程序的输出结果。
x,y,z=3,5,7
if y>x:
print(y)if y>z:
print(y)else:
print(z)
else:
print(x)if x>z:
print(x)else:
print(z)参考答案:
(1) 579、下面程序的功能是使用for循环实现1到n直接按所有奇数的求和,请将程 序补充完整。
n=eval(input('iW输入一个大于0的整数:'))
(1)
fbr i in range( (2) ):
sum+=i
print(sum)参考答案:
(1) sum=0l,n+l,210、请写出下面程序的输出结果。
n】.n=24,36
while m!=n:
while m>n:
m-=n
while n>m:
n-=m
print(m)参考答案:
(1) 241211、请写出下面程序的输出结果。
def Modify Val(x,y):
x=y
def ModifyListElement(ls,idx,val):
ls[idx]=val
c=[l,3,5]
ModifyVal(c,[4,5,6])
print(c)
c=[246,8]
ModifyListElcmcnt(c,2,20)
print(c)参考答案:
(1) [1, 3, 5][2, 4, 20, 8]12、请指出下面程序中存在的错误并改正。
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
展开阅读全文