1、Python编程基础一、客观部分:(单项选择、多项选择、不定项选择、判断)(一)、单项选择1、Python程序在执行一次之后会自动生成扩展名为( B )的字节码文件,以提高运行效率。A、.pyB、.pycC、.pybD、.pyf2、Python3.x环境创建Python脚本文件时,需要将文件编码格式设置为( C )。A、ANSIB、GBKC、UTF-8D、UNICODE3、下列选项中,用于接收标准输入数据(即从键盘输入)、返回为string类型(字符串)的函数是( B )。A、evalB、inputC、printD、get4、执行“print(0x20)”,则在屏幕上会输出( D )。A、20
2、B、0x20C、16D、325、下列选项中,执行时不会报错的语句是( C )。A、int(23.5)B、float(23.5+1)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 )。A、t3B、t4C、t3:4D、t4:58、下列选项中,执行时不会报错的语句是( D )。A、Python,TrueB、3.5,1.2
3、,TrueC、3.5,1.2,TrueD、3.5,1.2,True9、下列选项中,错误的描述是( C )。A、字典中的每一个元素是一个键:值对B、字典中不同元素的键不能相同C、字典中不同元素的值不能相同D、通过“”可以创建一个空字典10、3*5*2的运算结果为( C )。A、30B、225C、75D、报错11、调用函数时函数名后面的一对小括号中给出的参数称为( A )。A、实参B、形参C、类型参数D、名字参数12、不定长的位置参数在传递给函数时会被封装成( A )。A、元组B、列表C、集合D、字典13、一个脚本文件M.py单独执行时,其_name_变量的值为( B )。A、MB、_main_C
4、、M.pyD、不存在14、局部变量的作用域是( B )。A、从定义变量的位置到文件结束位置B、从定义变量的位置到函数结束位置C、所有函数D、所有文件15、内层函数使用外层函数中定义的变量,应使用( B )关键字。A、localB、nonlocalC、globalD、nonglobal 16、lambda函数是指( B )。A、在一个函数内部通过调用自己完成问题的求解B、不使用def定义函数的形式C、一个函数不断被其他函数调用完成问题的求解D、把函数作为参数的一种函数17、在闭包中,外层函数的返回值是( B )。A、内层函数的调用B、内层函数的引用C、任意值D、无返回值18、类中的( A )对应
5、一个类可以用来保存哪些数据。A、属性B、方法C、数据D、对象19、类中在特定情况下由系统自动执行的方法是( C )。A、类方法B、静态方法C、内置方法D、普通方法20、析构方法的形参个数为( B )。A、0B、1C、至少1个D、不限21、用于获取父类代理对象的方法是( D )。A、parentB、proxyC、delegateD、super22、类方法的第一个形参对应( A )。A、类B、对象C、第一个实参D、第二个实参23、为A类中的t属性定义一个获取属性值的方法(即getter),则应使用( A )装饰器。A、propertyB、t.getterC、property.getterD、t.p
6、roperty.getter24、已知“a=1,2,3”且“b=a:”,则执行“a1=10”后,b的值为( B )。A、1,10B、1,2,3C、1,10,3D、报错25、统计列表ls中的值为3的元素个数应使用( A )。A、ls.count(3)B、count(ls,3)C、ls.len(3)D、len(ls,3)26、已知“a=dict(x=1,y=dict(y1=2,y2=3)”且“b=a.copy()”,则执行“ayy1=10”后,则print(b)的输出结果为( C )。A、x=1,y=y1=10,y2=3B、x=1,y=y1=2,y2=3C、x:1,y:y1:10,y2:3D、x:
7、1,y:y1:2,y2:327、生成器解决了使用列表存储数据可能存在的( A )问题。A、内存不足B、访问速度慢C、元素值不能重复D、元素可修改28、与正则表达式“aba-z*c”匹配的字符串是( A )。A、abdecB、abcC、ab0cD、cabc29、已知m是一个Match对象,则m.groups()返回的结果必然是一个( B )。A、字符串B、元组C、列表D、不确定30、要从文件中按行读取所有数据,则应使用文件对象的( D )方法。A、readB、readallC、readlineD、readlines(二)、多项选择1、下列占位运算符中,表示有符号浮点型十进制数的占位符是( AC
8、)。A、%fB、%dC、%FD、%s2、下列选项中,计算结果为True的表达式包括( ABC )。A、15=8B、not 15=8 or 15=8 and 15x: print(y) if yz: print(y) else: print(z)else: print(x) if xz: print(x) else: print(z)参考答案:(1)5(2)79、下面程序的功能是使用for循环实现1到n直接按所有奇数的求和,请将程序补充完整。n=eval(input(请输入一个大于0的整数:)_(1)_for i in range(_(2)_): sum+=iprint(sum)参考答案:(1)
9、sum=0(2)1,n+1,210、请写出下面程序的输出结果。m,n=24,36while m!=n: while mn: m-=n while nm: n-=mprint(m)参考答案:(1)24(2)1211、请写出下面程序的输出结果。def ModifyVal(x,y): x=ydef ModifyListElement(ls,idx,val): lsidx=valc=1,3,5ModifyVal(c,4,5,6)print(c)c=2,4,6,8ModifyListElement(c,2,20)print(c)参考答案:(1)1, 3, 5(2)2, 4, 20, 812、请指出下面程
10、序中存在的错误并改正。def StudentInfo(country=中国, chineselevel=良好, name): print(姓名:%s,中文水平:%s,国家:%s%(name,chineselevel,country)StudentInfo(country=美国, chineselevel=一般, name=约翰)参考答案:带默认参数值的形参应在不带默认参数值的形参后面,可将“def StudentInfo(country=中国, chineselevel=良好, name):”改为“def StudentInfo(name, country=中国, chineselevel=良
11、好):”13、下面程序输出结果是:10 (15, 20) a: 25, b: 30。请将下面程序补充完整。def Fun(x, _(1)_, _(2)_): print(x, args1, args2)Fun(10, 15, 20, a=25, b=30)参考答案:(1)*args1(2)*args214、请指出下面程序中存在的错误并改正。def Sum(a,b,c): print(a+b+c)t=(1,2,3)Sum(*t)参考答案:t是元组,拆分时应使用一个*,因此应将“*t”改为“*t”15、请写出testM.py运行后的输出结果。M.py中的代码:def PrintSum(m,n):
12、print(m+n)PrintSum(10,15)testM.py中的代码:import MM.PrintSum(1,2)参考答案:(1)25(2)316、将下面代码放在test.py脚本文件中。当执行“python test.py 5”时输出15,当执行“python test.py 10”时输出55。请将下面程序补充完整。import _(1)_n=int(_(2)_)sum=0for i in range(1,n+1): sum+=iprint(求和结果:%d%sum)参考答案:(1)sys(2)sys.argv117、请指出下面程序中存在的错误并改正。M.py中的代码:def Prin
13、tSum(m,n): print(m+n)testM.py中的代码。import M as mM.PrintSum(3,5)参考答案:import导入模块时通过“as”为模块起了别名,则在使用该模块时只能使用别名而不能用原模块名,因此应将“M.PrintSum(3,5)”改为“m.PrintSum(3,5)”18、请写出下面程序的输出结果。def f1(): print(f1函数被调用!)def f2(): print(f2函数被调用!)f1=f2f1()f2()参考答案:(1)f2函数被调用!(2)f2函数被调用!19、请指出下面程序中存在的错误并改正。def f1(): print(x)d
14、ef f2(): x=50 #将全局变量x的值修改为50 print(x)x=10f2()f1()参考答案:在一个函数中修改一个全局变量的值必须使用global关键字,因此应在f2函数的开始加上“global x”20、下面程序输出结果为50,请指出下面程序中存在的错误并改正。def f1(): x=10 def f2(): x=50 f2() print(x)f1()参考答案:在内层函数中修改外层函数局部变量的值必须使用nonlocal关键字,因此应在f2函数的开始加上“nonlocal x”21、请写出下面程序的输出结果。def FunAdd(f,x,y): return f(x)+f(y
15、)print(FunAdd(lambda x:x*2+1,3,-5)print(FunAdd(lambda x:x*2+1,3,-5)参考答案:(1)-2(2)3622、下面程序输出结果为25,请将下面程序补充完整。def outer(x): def inner(y): _(1)_ return x+y return _(2)_f=outer(5)print(f(20)参考答案:(1)nonlocal x(2)inner23、请将下面程序补充完整。class Student: passif _name_=_main_: stu1=Student() stu2=Student() _(1)_=u
16、nknown _(2)_=19 print(stu1.name) #输出unknown print(stu2.name) #输出unknown print(stu1.age) #输出19 #print(stu2.age) #取消前面的注释符则会报错参考答案:(1)Student.name(2)stu1.age24、请将下面程序补充完整。class Student: def _(1)_(self,_(2)_): self.name=name def PrintInfo(self): print(姓名:%s%self.name)if _name_=_main_: stu1=Student() st
17、u2=Student(李晓明) stu1.PrintInfo() #输出“姓名:unknown” stu2.PrintInfo() #输出“姓名:李晓明”参考答案:(1)_init_(2)name=unknown25、请将下面程序补充完整。class A: _(1)_: print(A类的方法被调用!)_(2)_: def fb(self): print(B类的方法被调用!)if _name_=_main_: b=B() b.fa() b.fb()参考答案:(1)def fa(self)(2)class B(A)26、请将下面程序补充完整。d=dict(a=1,b=2)for _(1)_: p
18、rint(k,v)for _(2)_: print(k,dk)参考答案:(1)k,v in d.items()(2)k in d.keys()或k in d27、请将下面程序补充完整。_(1)_pattern=_(2)_(r)result=pattern.match(南开大学)print(result:,result)参考答案:(1)import re(2)pile28、编写程序实现以下功能:对于数值x,如果x在区间(1,2上,则输出x+2.5;如果x在区间-1,1上,则输出4.35x;如果x在区间-2,-1)上,则输出x;如果x为其他值,则输出“无效值”。参考答案:x=eval(input(
19、请输入一个数值:)if x1 and x=-1 and x=-2 and x0: print(有两个实根)elif t=0: print(有一个实根)else: print(无实根)30、使用for循环编写程序实现以下功能:计算1!+2!+n!。参考答案:n=eval(input(请输入一个大于0的整数:)sum=0rlt=1for i in range(1,n+1): rlt*=i sum+=rltprint(结果为:%d%sum)31、使用while循环编写程序实现以下功能:把一张100元人民币换成10元、5元、1元面额,将所有可能的换法及换法总数输出。参考答案:n,i=0,0while
20、i=100/10: j=0 while j=(100-i*10)/5: print(10元%d张,5元%d张,1元%d张%(i,j,100-i*10-j*5) n+=1 j+=1 i+=1print(总共有%d种换法%n)32、使用while循环编写程序实现以下功能:输入一个整数,判断其是否是素数,并输出判断结果。参考答案:n=eval(input(请输入一个大于1的整数:)m=int(n*0.5)i=2while i=m: if n%i=0: break i+=1if i=m: print(不是素数)else: print(是素数)33、编写程序实现以下功能:输入若干整数(输入0结束),每个
21、整数输入完毕后,马上输出该整数是否为素数。要求判断一个整数是否为素数的功能用一个函数实现。参考答案:def IsPrime(n): m=int(n*0.5) i=2 while i=m: if n%i=0: print(%d不是素数%n) break i+=1 else: print(%d是素数%n)while True: n=eval(input(请输入一个整数(输入0结束程序):) if n=0: break elif n2: print(输入的整数必须大于1,请重新输入!) continue else: IsPrime(n)34、编写程序实现以下功能:输入若干个整数(输入0结束),将不能
22、被3整除的整数相加,并将求和结果输出。要求判断一个整数n是否能被另一个整数m整除的功能用一个函数实现。参考答案:def IsMultiple(n,m): if n%m=0: return True return Falsesum=0while True: n=eval(input(请输入一个整数(输入0结束程序):) if n=0: break if IsMultiple(n,3)=False: sum+=nprint(所有不能被3整除的整数之和为:%d%sum)35、编写程序实现以下功能:运行程序时指定一个整数参数,程序运行后输出该数的阶乘。例如,程序存放在脚本文件test.py中,则执行“
23、python test.py 5”会输出120(即5!),执行“python test.py 3”会输出6(即3!)。参考答案:import sysn = int(sys.argv1)if n1: print(输入整数必须大于0!)else: fac=1 for i in range(1,n+1): fac*=i print(fac)36、请定义一个Circle类,具体要求为:(1)每个Circle类对象可以存储圆心和半径信息;(2)具有设置圆心和半径的方法SetCenter和SetRadius;(3)具有输出圆信息的方法PrintInfo;(4)具有计算圆面积的方法GetArea。参考答案:
24、class Circle: x,y,r=0,0,1 def SetCenter(self,x,y): self.x=x self.y=y def SetRadius(self,r): self.r=r def PrintInfo(self): print(圆心:(%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.PrintInfo() print(面
25、积为:%f%c.GetArea()37、请定义一个Time类,具体要求为:(1)每个Time类对象可以存储一个时间(包括时、分、秒);(2)具有设置当前时间的方法SetTime;(3)具有每次增加1秒的方法AddOneSec;(4)具有输出当前时间的方法PrintTime。参考答案:class Time: h,m,s=0,0,0 def SetTime(self,h,m,s): self.h=h self.m=m self.s=s def AddOneSec(self): self.s+=1 if self.s=60: self.m+=1 self.s=0 if self.m=60: self
26、.h+=1 self.m=0 if self.h=24: self.h=0 def PrintTime(self): print(当前时间:%02d:%02d:%02d%(self.h,self.m,self.s)if _name_=_main_: t=Time() t.SetTime(23,58,59) for i in range(100): t.PrintTime() t.AddOneSec()38、请定义一个Cylinder类,具体要求为:(1)每个Cylinder类对象可以存储一个圆柱体(包括半径和高);(2)具有用于初始化半径和高的构造方法;(3)具有输出圆柱体信息的方法Print
27、Info;(4)具有计算圆柱体体积的方法GetVolume。参考答案:class Cylinder: r,h=1,1 def _init_(self,r,h): self.r=r self.h=h def GetVolume(self): return 3.14*self.r*self.r*self.h def PrintInfo(self): print(半径:%f,高:%f%(self.r,self.h)if _name_=_main_: c=Cylinder(3.1,2.5) c.PrintInfo() print(圆柱体体积为:%f%c.GetVolume()39、编写程序实现以下功能
28、:根据指定值从一个列表中查找所有匹配元素的位置,要求使用列表中的index方法进行查找。参考答案:def findall(ls,x): beg=0 total=ls.count(x) rlt= for i in range(total): pos=lsbeg:.index(x) rlt.append(pos+beg) beg=pos+beg+1 return rltif _name_=_main_: r=findall(1,3,3,5,2,3,6,3,7,9,3,3) print(匹配的元素下标为:,r)40、编写程序实现以下功能:在字符串s1中检索指定字符串s2,获取所有匹配字符串的起始字符
29、位置,要求使用字符串的find方法进行检索。参考答案:def findsubstr(str,sub): beg=0 rlt= while True: pos=str.find(sub,beg) if pos=-1: break rlt.append(pos) beg=pos+1 return rltif _name_=_main_: r=findsubstr(cat dog cat dog cat cat dog,cat) print(匹配字符串的起始字符下标为:,r)41、编写程序实现以下功能:利用正则表达式对象的search方法,查找一个字符串中的所有HTML标记(即由一对尖括号括起来的内容)。参考答案:import redef findhtmlmarks(str): pattern=pile(r) beg=0 ls= while True: rlt=pattern.search(str,beg) if rlt=None: break ls.append(rlt) beg=rlt.end() return lsls=findhtmlmarks(南开大学/h