**
Python程序设计期末复习试题集
**
注意:请弄清楚题目中涉及的知识点和题目中出现的各个函数的用法(包括函数参数的含义),判断题也有可能成为填空题。
一、判断题(错误已标记)//注意有少许错误
1.Python不允许使用关键字作为变量名,允许使用内置函数名作为变量名,但这会改变函数名的含义。
2.Python变量使用前必须先声明,并且一旦声明就不能再当前作用域内改变其类型。×
3.集合支持双向索引,-1表示最后一个元素的下标。
4.已知x为非空列表,那么表达式 sorted(x, reverse=True) == list(reversed(x)) 的值一定是True。
5.使用Python列表的方法insert()为列表插入元素时会改变列表中插入位置之后元素的索引。
6.假设x是含有5个元素的列表,那么切片操作x[10:]是无法执行的,会抛出异常。×
7.当以指定“键”为下标给字典对象赋值时,若该“键”存在则表示修改该“键”对应的“值”,若不存在则表示为字典对象添加一个新的“键-值对”。
8.对于生成器对象x = (3 for i in range(5)),连续两次执行list(x)的结果是一样的。×
9.表达式 ‘a’+1的值为’b’。×
10.表达式 list(’[1, 2, 3,4]’) 的值是[1, 2, 3, 4]。×
11.表达式 {1, 2} * 2 的值为 {1, 2, 1, 2}。×
12.已知x = (1, 2, 3, 4),那么执行x[1] =6之后,x的值为(1, 6, 3, 4)。×
13.内置函数len()返回指定序列的元素个数,适用于列表、元组、字符串、字典、集合以及range、zip等迭代对象。
14.已知x和y是两个等长的整数列表,那么表达式[i+j for i,j in zip(x,y)]的作用是计算这两个列表所表示的向量的和。
15.表达式(i**2 for i in range(100))的结果是个元组。×
16.已知列表x = [1, 2, 3,4],那么表达式x.find(5)的值应为-1。×
17.在没有导入标准库math的情况下,语句x = 3 or math.sqrt(9)也可以正常执行,并且执行后x的值为3。
18.如果仅仅是用于控制循环次数,那么使用for i in
range(20)和for i in range(20, 40)的作用是等价的。
19.对于带有else子句的循环语句,如果是因为循环条件表达式不成立而自然结束循环,则执行else子句中的代码。
20.已知x为非空字符串,那么表达式 ‘,’.join(x.split(’,’)) == x 的值一定为True。
21.已知x和y是两个字符串,那么表达式sum((1 for i,j in zip(x,y) if
i==j))可以用来计算两个字符串中对应位置字符相等的个数。
22.已知x =‘Python是一种非常好的编程语言’.encode(),那么表达式x.decode(‘gbk’)的值为’Python是一种非常好的编程语言’。×
23.正则表达式模块re的match()方法是从字符串的开始匹配特定模式,而search()方法是在整个字符串中寻找模式,这两个方法如果匹配成功则返回match对象,匹配失败则返回空值None。
24.正则表达式只进行形式上的检查,并不保证一定合法有效。
25.在函数内部没有任何声明的情况下直接为某个变量赋值,这个变量一定是函数内部的局部变量。
26.在函数中,如果有为变量赋值的语句并且没有使用global对该变量进行声明,那么该变量一定是局部变量。
27.在定义函数时,某个参数名字前面带有一个*符号表示可变长度参数,可以接收任意多个普通实参并存放于一个元组之中。
28.定义函数时,带有默认值的参数必须出现在参数列表的最右端,任何一个带有默认值的参数右边不允许出现没有默认值的普通位置参数。
29.已知seq为长度大于10的列表,并且已导入random模块,那么[random.choice(seq) for i in
range(10)]和random.sample(seq,10)等价。×
30.在面向对象程序设计中,函数和方法是完全一样的,都必须为所有参数进行传值。×
31.对于Python类中的私有成员,可以通过“对象名._类名__私有成员名”的方式来访问。
32.在类定义的外部没有任何办法可以访问对象的私有成员。×
33.使用内置函数open()打开文件时,只要文件路径正确就总是可以正确打开的。×
34.对文件进行读写操作之后必须显式关闭文件以确保所有内容都得到保存。
35.假设os模块已导入,那么列表推导式 [filename
for filename in os.listdir(‘C:\Windows’) if
filename.endswith(’.exe’)] 的作用是列出C:\Windows文件夹中所有扩展名为.exe的文件。
36.Python的主程序文件python.exe属于二进制文件。
37.使用pickle进行序列化得到的二进制文件使用struct也可以正确地进行反序列化。×
38.在try…except…else结构中,如果try块的语句引发了异常则会执行else块中的代码。×
39.异常处理结构也不是万能的,处理异常的代码也有引发异常的可能。 40.文本文件是可以迭代的,可以使用for line in
fp类似的语句遍历文件对象fp中的每一行。
41.在函数中yield语句的作用和return完全一样。×
42.包含yield语句的函数一般成为生成器函数,可以用来创建生成器对象。
43.已知x是个列表对象,那么执行语句y =
x之后,对y所做的任何操作都会同样作用到x上。
44.在函数内部,既可以使用global来声明使用外部全局变量,也可以使用global直接定义全局变量。
45.不同作用域中的同名变量之间互相不影响,也就是说,在不同的作用域内可以定义同名的变量。
46.函数中的return语句不一定能够得到执行。
47.如果在函数中有语句 return 3,那么该函数一定会返回整数3。×
48.一个函数如果带有默认值参数,那么必须所有参数都设置默认值。× 49.以读模式打开文件时,文件指针指向文件开始处。
50.标准库os的listdir()函数默认只能列出指定文件夹中当前层级的文件和文件夹列表,而不能列出其子文件夹中的文件。
51.如果在设计一个类时实现类__len __()方法,那么该类的对象会自动支持Python内置函数len()。
52.只可以动态为对象增加数据成员,而不能为对象动态增加成员方法。×
53.属性可以像数据成员一样进行访问,但赋值时具有方法的优点,可以对新值进行检查。
54.类方法和静态方法是属于类的,不能直接访问属于对象的成员。 55.通过对象能调用类方法和静态方法。
56.异常处理结构中的finally块中代码仍然有可能出错从而再次引发异常。
57.一旦代码抛出异常并且没有得到正确的处理,整个程序会崩溃,并且不会继续执行后面的代码。
一、填空题 //注意有少许错误
1.已知x = [1, 2, 3],那么连续执行y = [1, 2, 3]和y.append(4)这两条语句之后,x的值为_[1, 2, 3]_______。
2.已知x = [[]] * 3,那么执行语句x[0].append(1)之后,x的值为_____[[1], [1], [1]]__________。
3.已知x = [[] for i in range(3)],那么执行语句x[0].append(1)之后,x的值为___[[1], [], []]____。
4.已知x = {1:1, 2:2},那么执行语句x[3] = 3之后,表达式sorted(x.items())的值为____________ [(1, 1), (2, 2), (3, 3)]___。
5.已知列表对象x = [‘11’, ‘2’, ‘3’],则表达式 min(x) 的值为___‘11’________。
6.语句 x = (3) 执行后x的值为______3__________。
7.语句x = 3==3, 5执行结束后,变量x的值为____(True, 5)________。
8.表达式 3 and not 5 的值为_____False_________。
9.已知 x = 3,并且id(x)的返回值为 496103280,那么执行语句 x += 6 之后,表达式 id(x) == 496103280 的值为___False________。
10.任意长度的Python列表、元组和字符串中最后一个元素的下标为____-1____。
11.已知 x = {‘a’:‘b’, ‘c’:‘d’},那么表达式 ‘b’ in x 的值为_____False_________。
12.已知 x = [3, 5, 7],那么执行语句 x[len(x):] = [1, 2]之后,x的值为____[3, 5, 7, 1, 2]__________。
13.已知 x = list(range(10)),则表达式 x[-4:] 的值为___[6, 7, 8, 9]_______。
14.已知x = [1, 2, 3],那么连续执行y = x和y.append(4)这两条语句之后,x的值为___[1, 2, 3,4]_________________。
15.已知列表 x = list(range(10)),那么执行语句 del x[::2]之后,x的值为__[1, 3, 5, 7, 9]_______。
16.表达式 [index for index, value in enumerate([3,5,7,3,7]) if value == max([3,5,7,3,7])] 的值为____[2, 4]___________。
17. 已知 x = [1,2,3,4,2],那么表达式 [x.index(i) for i in x if i==2] 的值为____[1, 1]__________。
18.已知 vec = [[1,2], [3,4]],则表达式 [[row[i] for row in vec] for i in range(len(vec[0]))] 的值为__[[1, 3], [2, 4]]__。
19.表达式 {1, 2, 3} < {1, 2, 4} 的值为___False________。
20.已知 x = range(1,4) 和 y = range(4,7),那么表达式 sum([i*j for i,j in zip(x,y)],0) 的值为_____32_____。
21.表达式 r’c:\windows\notepad.exe’.endswith((’.jpg’, ‘.exe’)) 的值为__True_____。
22.已知 path = r’c:\test.html’,那么表达式 path[:-4]+‘htm’ 的值为__‘c:\test.htm’________。
23.表达式 ‘C:\Windows\notepad.exe’.startswith(‘C:’) 的值为__True_______。
24.表达式 len(‘Hello world!’.ljust(20)) 的值为____20_____。
25.表达式 len(‘abcdefg’.ljust(3)) 的值为__7_______。
26.已知 x = [[1]] * 3,那么执行语句 x[0][0] = 5之后,变量x的值为___[[5], [5], [5]]_____________。
27.在函数内部可以通过关键字____globa____________来定义全局变量。
28.如果函数中没有return语句或者return语句不带任何返回值,那么该函数的返回值为______None___________。
29.表达式 list(map(lambda x: x+5, [1, 2, 3, 4, 5])) 的值为_[6, 7, 8, 9, 10]__。
30.已知 x = range(1,4) 和 y = range(4,7),那么表达式 sum([i*j for i,j in zip(x,y)],0) 的值为_____32_____。
31.表达式{*range(4), 4, *(5, 6, 7)}的值为__{0, 1, 2, 3, 4, 5, 6, 7}________________。
32.表达式 5 if 5>6 else (6 if 3>2 else 5) 的值为___6______。
33.已知 g = lambda x, y, z=5: xyz,则语句 print(g(2, 3)) 的输出结果为__30_____。
34.表达式 tuple(map(lambda x: len(x), [‘aa’, ‘b’, ‘ccc’])) 的值为____(2, 1, 3)______。
35.已知x = [3, 2, 4, 1],那么执行语句x = x.sort()之后,x的值为__None__________。
36.表达式list(filter(lambda x: x>5, range(10)))的值为___[6, 7, 8, 9]______________。
37.表达式sorted({‘a’:3, ‘b’:9, ‘c’:78})的值为____[‘a’, ‘b’, ‘c’]_____________。
38.表达式 re.split(’.+’, ‘alpha.beta…gamma…delta’) 的值为___[‘alpha’, ‘beta’, ‘gamma’,‘delta’]___。
39.已知 x = ‘a234b123c’,并且re模块已导入,则表达式 re.split(’\d+’, x) 的值为_[‘a’, ‘b’, ‘c’]。
40.假设re模块已导入,那么表达式 re.findall(’(\d)\1+’, ‘33abcd112’) 的值为__[‘3’, ‘1’]。
41.已知 x = ‘a b c d’,那么表达式 ‘,’.join(x.split()) 的值为___‘a,b,c,d’________。
42.已知 x = [[1,3,3], [2,3,1]],那么表达式 sorted(x, key=lambda item:item[0]+item[2]) 的值为__________[[2, 3, 1], [1, 3, 3]]____________________________。
43.已知 x = [[1,3,3], [2,3,1]],那么表达式 sorted(x, key=lambda item:(item[1], -item[2])) 的值为______[[1, 3, 3], [2, 3, 1]]______________________________。
44.定义类时,如果某个成员以两个下划线开头但不以两个下划线结束,则表示该成员为___私有成员____(私有成员、公有成员?)。
45.在Python语言中,定义类的关键字是 class ,创建对象时,调用的初始化方法的名称是 构造方法 。
46.定义类时,——不必须__ (必须、不必须?)指定基类。
47.一般建议使用___self______作为对象成员方法的第一个参数名字。
48.定义类时,如果在某个成员方法的定义之前加上修饰器@property,则表示这是一个___属性_______。
49.Python内置函数___open__________用来打开或创建文件并返回文件对象。
50.对文件进行写入操作之后, flush()__ 方法用来在不关闭文件对象的情况下将缓冲区内容写入文件。
51.对于文本文件,使用Python内置函数open()成功打开后返回的文件对象___可以___(可以、不可以?)使用for循环直接迭代。
52.已知当前文件夹中有纯英文文本文件readme.txt,请填空完成功能把readme.txt文件中的所有内容复制到dst.txt中,with open(‘readme.txt’) as src, open(‘dst.txt’, ___’w’_________) as dst:dst.write(src.read())。
53.Python标准库os.path中用来判断指定路径是否为文件的方法是______isfile()_________。
54.Python标准库os.path中用来判断指定路径是否为文件夹的方法是_____isdir()_________。
55.Python标准库os中用来列出指定文件夹中的文件和子文件夹列表的函数是___listdir()___。
56.标准库os中的函数____getcwd()_____ 可以用来获取当前工作文件夹的路径。
57.Python标准库os.path中用来分割指定路径中的文件扩展名的函数是____splitext()______。
58.标准库os.path中的函数___join()_______用来把多个路径连接成为一个完整的路径,并插入适当的路径分隔符(在Windows操作系统中为反斜线)。
59.在try…except…异常处理结构中,__Except___________用于尝试捕捉可能出现的异常。
19. 语句assert 3!=3 会(会、不会?)引发异常。