python期末版二版-习题题库

《Python程序设计》题库

一、 填空题
1、 Python安装扩展库常用的是_工具。(pip)
2、 Python标准库math中用来计算平方根的函数是____。(sqrt)
3、 Python程序文件扩展名主要有__和两种,其中后者常用于GUI程序。(py、pyw)
4、 Python源代码程序编译后的文件扩展名为___。(pyc)
5、 使用pip工具升级科学计算扩展库numpy的完整命令是_______。(pip install –upgrade numpy)
6、 使用pip工具查看当前已安装的Python扩展库的完整命令是___。(pip list)
7、 在IDLE交互模式中浏览上一条语句的快捷键是____。(Alt+P)
8、 使用pip工具查看当前已安装Python扩展库列表的完整命令是___。(pip list)
9、 在Python中____表示空类型。(None)
10、 列表、元组、字符串是Python的___(有序?无序)序列。(有序)
11、 查看变量类型的Python内置函数是______。(type())
12、 查看变量内存地址的Python内置函数是_______。(id())
13、 以3为实部4为虚部,Python复数的表达形式为_或__。(3+4j、3+4J)
14、 Python运算符中用来计算整商的是___。(//)
15、 Python运算符中用来计算集合并集的是_。(|)
16、 使用运算符测试集合包含集合A是否为集合B的真子集的表达式可以写作_。(A < B )
17、 表达式[1, 2, 3]3的执行结果为____________。([1, 2, 3, 1, 2, 3, 1, 2, 3])
18、 list(map(str, [1, 2, 3]))的执行结果为___________。([‘1’, ‘2’, ‘3’])
19、 语句x = 3==3, 5执行结束后,变量x的值为___。((True, 5))
20、 已知 x = 3,那么执行语句 x += 6 之后,x的值为_____。(9)
21、 已知 x = 3,并且id(x)的返回值为 496103280,那么执行语句 x += 6 之后,表达式 id(x) == 496103280 的值为_。(False)
22、 已知 x = 3,那么执行语句 x *= 6 之后,x的值为______。(18)
23、 为了提高Python代码运行速度和进行适当的保密,可以将Python程序文件编译为扩展名____的文件。(pyc)
24、 表达式“[3] in [1, 2, 3, 4]”的值为______。(False)
25、 列表对象的sort()方法用来对列表元素进行原地排序,该函数返回值为 。(None)
26、 假设列表对象aList的值为[3, 4, 5, 6, 7, 9, 11, 13, 15, 17],那么切片aList[3:7]得到的值是____________。([6, 7, 9, 11])
27、 使用列表推导式生成包含10个数字5的列表,语句可以写为_____。([5 for i in range(10)])
28、 假设有列表a = [‘name’, ‘age’, ‘sex’]和b = [‘Dong’, 38, ‘Male’],请使用一个语句将这两个列表的内容转换为字典,并且以列表a中的元素为“键”,以列表b中的元素为“值”,这个语句可以写为___________。(c = dict(zip(a, b)))
29、 任意长度的Python列表、元组和字符串中最后一个元素的下标为__。(-1)
30、 Python语句”.join(list(‘hello world!’))执行的结果是__________。(’hello world!’)
31、 转义字符’\n’的含义是_________。(回车换行)
32、 Python语句list(range(1,10,3))执行结果为_________。([1, 4, 7])
33、 表达式 list(range(5)) 的值为______。([0, 1, 2, 3, 4])
34、 命令既可以删除列表中的一个元素,也可以删除整个列表。(del)
35、 已知a = [1, 2, 3]和b = [1, 2, 4],那么id(a[1])==id(b[1])的执行结果为
。(True)
36、 表达式 int(‘123’, 16) 的值为
。(291)
37、 表达式 int(‘123’, 8) 的值为___。(83)
38、 表达式 int(‘123’) 的值为___。(123)
39、 表达式 int(‘101’,2) 的值为____。(5)
40、 表达式 abs(-3) 的值为_。(3)
41、 切片操作list(range(6))[::2]执行结果为______。([0, 2, 4])
42、 使用切片操作在列表对象x的开始处增加一个元素3的代码为___。(x[0:0] = [3])
43、 语句sorted([1, 2, 3], reverse=True) == reversed([1, 2, 3])执行结果为___。(False)
44、 表达式 ‘ab’ in ‘acbed’ 的值为__。(False)
45、 Python 3.x语句 print(1, 2, 3, sep=’:’) 的输出结果为__。(1:2:3)
46、 表达式 sorted([111, 2, 33], key=lambda x: len(str(x))) 的值为______。([2, 33, 111])
47、 假设n为整数,那么表达式 n&1 == n%2 的值为___。(True)
48、 表达式 int(4
0.5) 的值为__。(2)
49、 达式 sorted([111, 2, 33], key=lambda x: -len(str(x))) 的值为__。([111, 33, 2])
50、 Python内置函数___可以返回列表、元组、字典、集合、字符串以及range对象中元素个数。(len())
51、 Python内置函数__用来返回序列中的最大元素。(max())
52、 Python内置函数__用来返回序列中的最小元素。(min())
53、 Python内置函数______用来返回数值型序列中所有元素之和。(sum())
54、 已知列表对象x = [‘11’, ‘2’, ‘3’],则表达式 max(x) 的值为_。(’3’)
55、 表达式 min([‘11’, ‘2’, ‘3’]) 的值为_______。(’11’)
56、 已知列表对象x = [‘11’, ‘2’, ‘3’],则表达式max(x, key=len) 的值为_。(’11’)
57、 语句 x = (3,) 执行后x的值为_____。((3,))
58、 语句 x = (3) 执行后x的值为______。(3)
59、 已知x=3和y=5,执行语句 x, y = y, x 后x的值是__。(5)
60、 可以使用内置函数_____查看包含当前作用域内所有全局变量和值的字典。(globals())
61、 可以使用内置函数_________查看包含当前作用域内所有局部变量和值的字典。(locals()()
62、 字典中多个元素之间使用__分隔开,每个元素的“键”与“值”之间使用__分隔开。(逗号、冒号)
63、 字典对象的_方法可以获取指定“键”对应的“值”,并且可以在指定“键”不存在的时候返回指定值,如果不指定则返回None。(get())
64、 字典对象的___方法返回字典中的“键-值对”列表。(items())
65、 字典对象的__方法返回字典的“键”列表。(keys())
66、 字典对象的____方法返回字典的“值”列表。(values())
67、 已知 x = {1:2},那么执行语句 x[2] = 3之后,x的值为______。({1: 2, 2: 3})
68、 表达式 {1, 2, 3, 4} - {3, 4, 5, 6}的值为________。({1, 2})
69、 表达式set([1, 1, 2, 3])的值为__________。({1, 2, 3})
70、 关键字____用于测试一个对象是否是一个可迭代对象的元素。(in)
71、 使用列表推导式得到100以内所有能被13整除的数的代码可以写作_________________________。([i for i in range(100) if i%130])
*
72、 表达式 3<5>2 的值为_____。(True)
73、 已知 x = {‘a’:’b’, ‘c’:’d’},那么表达式 ‘a’ in x 的值为____。(True)
74、 已知 x = {‘a’:’b’, ‘c’:’d’},那么表达式 ‘b’ in x 的值为____。(False)
75、 已知 x = {‘a’:’b’, ‘c’:’d’},那么表达式 ‘b’ in x.values() 的值为____。(True)
76、 表达式 1<2<3 的值为___。(True)
77、 表达式 3 or 5 的值为__(3)
78、 表达式 0 or 5 的值为___(5)
79、 表达式 3 and 5 的值为__。(5)
80、 表达式 3 and not 5 的值为____。(False)
81、 表达式 3 | 5 的值为____。(7)
82、 表达式 3 & 6 的值为___。(2)
83、 表达式 3 ** 2 的值为___。(9)
84、 表达式 3 * 2的值为_。(6)
85、 已知 x = [3, 5, 7],那么表达式 x[10:]的值为__。([])
86、 已知 x = [3, 5, 7],那么执行语句 x[len(x):] = [1, 2]之后,x的值为____。([3, 5, 7, 1, 2])
87、 已知 x = [3, 7, 5],那么执行语句 x.sort(reverse=True)之后,x的值为_______。([7, 5, 3])
88、 已知 x = [3, 7, 5],那么执行语句 x = x.sort(reverse=True)之后,x的值为___。(None)
89、 已知 x = [1, 11, 111],那么执行语句 x.sort(key=lambda x: len(str(x)), reverse=True) 之后,x的值为________。([111, 11, 1])
90、 表达式 list(zip([1,2], [3,4])) 的值为______________。([(1, 3), (2, 4)])
91、 已知 x = [1, 2, 3, 2, 3],执行语句 x.pop() 之后,x的值为___。([1, 2, 3, 2])
92、 表达式 list(map(list,zip(*[[1, 2, 3], [4, 5, 6]]))) 的值为______。([[1, 4], [2, 5], [3, 6]])
93、 表达式 [x for x in [1,2,3,4,5] if x<3] 的值为___________。([1, 2])
94、 表达式 [index for index, value in enumerate([3,5,7,3,7]) if value == max([3,5,7,3,7])] 的值为________。([2, 4])
95、 已知 x = [3,5,3,7],那么表达式 [x.index(i) for i in x if i3] 的值为____。([0, 0])
96、 已知列表 x = [1, 2],那么表达式 list(enumerate(x)) 的值为_____。([(0, 1), (1, 2)])
97、 已知 vec = [[1,2], [3,4]],则表达式 [col for row in vec for col in row] 的值为________________。([1, 2, 3, 4])
98、 已知 vec = [[1,2], [3,4]],则表达式 [[row[i] for row in vec] for i in range(len(vec[0]))] 的值为_______________。([[1, 3], [2, 4]])
99、 已知 x = list(range(10)),则表达式 x[-4:] 的值为____。([6, 7, 8, 9])
100、 已知 path = r’c:\test.html’,那么表达式 path[:-4]+’htm’ 的值为____。(’c:\test.htm’)
101、 已知 x = [3, 5, 7],那么执行语句 x[1:] = [2]之后,x的值为______。([3, 2])
102、 已知 x = [3, 5, 7],那么执行语句 x[:3] = [2]之后,x的值为______。([ 2])
103、 已知x为非空列表,那么执行语句y = x[:]之后,id(x[0]) == id(y[0])的值为____。(True)
104、 已知 x = [1, 2, 3, 2, 3],执行语句 x.remove(2) 之后,x的值为__。([1, 3, 2, 3])
105、 表达式 3<<2 的值为_____。(12)
106、 表达式 65 >> 1 的值为___。(32)
107、 表达式 chr(ord(‘a’)^32) 的值为_。(’A’)
108、 表达式 chr(ord(‘a’)-32) 的值为_。(’A’)
109、 表达式 abs(3+4j) 的值为__。(5.0)
110、 表达式 callable(int) 的值为_。(True)
111、 表达式 list(str([1,2,3])) == [1,2,3] 的值为____。(False)
112、 表达式 str([1, 2, 3]) 的值为________。(’[1, 2, 3]’)
113、 表达式 str((1, 2, 3)) 的值为________。(’(1, 2, 3)’)
114、 Python中用于表示逻辑与、逻辑或、逻辑非运算的关键字分别是_、。(and、or、not)
115、 Python 3.x语句 for i in range(3):print(i, end=’,’) 的输出结果为
_____。(0,1,2,)
116、 Python 3.x语句 print(1, 2, 3, sep=’,’) 的输出结果为______。(1,2,3)
117、 对于带有else子句的for循环和while循环,当循环因循环条件不成立而自然结束时__(会?不会?)执行else中的代码。(会)
118、 在循环语句中,语句的作用是提前结束本层循环。(break)
119、 在循环语句中,语句的作用是提前进入下一次循环。(continue)
120、 表达式 sum(range(1, 10, 2)) 的值为
。(25)
121、 表达式 sum(range(1, 10)) 的值为
。(45)
122、 表达式 ‘%c’%65 的值为___。(’A’)
123、 表达式 ‘%s’%65 的值为____。(’65’)
124、 表达式 ‘%d,%c’ % (65, 65) 的值为__。(’65,A’)
125、 表达式 ‘The first:{1}, the second is {0}’.format(65,97) 的值为____________________。(’The first:97, the second is 65’)
126、 表达式 ‘{0:#d},{0:#x},{0:#o}’.format(65) 的值为___。(’65,0x41,0o101’)
127、 表达式 isinstance(‘abcdefg’, str) 的值为__。(True)
128、 表达式 isinstance(‘abcdefg’, object) 的值为___。(True)
129、 表达式 isinstance(3, object) 的值为___。(True)
130、 表达式 ‘abcabcabc’.rindex(‘abc’) 的值为__。(6)
131、 表达式 ‘:’.join(‘abcdefg’.split(‘cd’)) 的值为____。(’ab:efg’)
132、 表达式 ‘Hello world. I like Python.’.rfind(‘python’) 的值为__。(-1)
133、 表达式 ‘abcabcabc’.count(‘abc’) 的值为___。(3)
134、 表达式 ‘apple.peach,banana,pear’.find(‘p’) 的值为____。(1)
135、 表达式 ‘apple.peach,banana,pear’.find(‘ppp’) 的值为__。(-1)
136、 表达式 ‘abcdefg’.split(‘d’) 的值为________。([‘abc’, ‘efg’])
137、 表达式 ‘:’.join(‘1,2,3,4,5’.split(‘,’)) 的值为________。(’1:2:3:4:5’)
138、 表达式 ‘,’.join(‘a b ccc\n\n\nddd ‘.split()) 的值为____。(’a,b,ccc,ddd’)
139、 表达式 ‘Hello world’.upper() 的值为_。(’HELLO WORLD’)
140、 表达式 ‘Hello world’.lower() 的值为___。(’hello world’)
141、 表达式 ‘Hello world’.lower().upper() 的值为_。(’HELLO WORLD’)
142、 表达式 ‘Hello world’.swapcase().swapcase() 的值为____。(’Hello world’)
143、 表达式 r’c:\windows\notepad.exe’.endswith(‘.exe’) 的值为___。(True)
144、 表达式 r’c:\windows\notepad.exe’.endswith((‘.jpg’, ‘.exe’)) 的值为_。(True)
145、 表达式 ‘C:\Windows\notepad.exe’.startswith(‘C:’) 的值为___。(True)
146、 表达式 len(‘Hello world!’.ljust(20)) 的值为___。(20)
147、 表达式 len(‘abcdefg’.ljust(3)) 的值为___。(7)
148、 表达式 len([i for i in range(10)]) 的值为____。(10)
149、 表达式 len(range(1,10)) 的值为___。(9)
150、 表达式 range(10)[-1] 的值为__。(9)
151、 表达式 range(10,20)[4] 的值为____。(14)
152、 表达式 round(3.4) 的值为_。(3)
153、 表达式 round(3.7) 的值为___。(4)
154、 表达式 ‘a’ + ‘b’ 的值为___。(’ab’)
155、 已知 x = ‘123’ 和 y = ‘456’,那么表达式 x + y 的值为____。(’123456’)
156、 表达式 ‘a’.join(‘abc’.partition(‘a’)) 的值为______。(’aaabc’)
157、 表达式 re.split(‘.+’, ‘alpha.beta…gamma…delta’) 的值为_____________。([‘alpha’, ‘beta’, ‘gamma’, ‘delta’])
158、 已知 x = ‘a234b123c’,并且re模块已导入,则表达式 re.split(‘\d+’, x) 的值为_______。([‘a’, ‘b’, ‘c’])
159、 表达式 ”.join(‘asdssfff’.split(‘sd’)) 的值为__。(’assfff’)
160、 表达式 ”.join(re.split(‘[sd]’,’asdssfff’)) 的值为_____。(’afff’)
161、 假设re模块已导入,那么表达式 re.findall(‘(\d)\1+’, ‘33abcd112’) 的值为_________。([‘3’, ‘1’])
162、 语句 print(re.match(‘abc’, ‘defg’)) 输出结果为___。(None)
163、 表达式 ‘Hello world!’[-4] 的值为______。(’r’)
164、 表达式 ‘Hello world!’[-4:] 的值为______。(’rld!’)
165、 表达式 ‘test.py’.endswith((‘.py’, ‘.pyw’)) 的值为____。(True)
166、 已知 x = (3), 那么表达式 x * 3 的值为____。(9)
167、 已知 x = (3,),那么表达式 x * 3 的值为___。((3, 3, 3))
168、 表达式 len(‘abc’.ljust(20)) 的值为____。(20)
169、 代码 print(re.match(‘1+KaTeX parse error: Expected group after '_' at position 24: …FG000’)) 的输出结果为_̲__。(None) 170、 …’),那么表达式 pattern.match(‘192.168.1.103’) 的值为None。(错)
238、 假设random模块已导入,那么表达式 random.sample(range(10), 20) 的作用是生成20个不重复的整数。(错)
239、 假设random模块已导入,那么表达式 random.sample(range(10), 7) 的作用是生成7个不重复的整数。(对)
240、 在Python 3.x中reduce()是内置函数。(错)
241、 以读模式打开文件时,文件指针指向文件开始处。(对)
242、 以追加模式打开文件时,文件指针指向文件尾。(对)
243、 已知x = (1, 2, 3, 4),那么执行x[0] = 5之后,x的值为(5, 2, 3, 4)。(错)
244、 已知x = 3,那么执行x += 6语句前后x的内存地址是不变的。(错)
245、 成员测试运算符in作用于集合时比作用于列表快得多。(对)
246、 在Python 3.x中,使用内置函数input()接收用户输入时,不论用户输入的什么格式,一律按字符串进行返回。(对)
247、 安装Python扩展库时只能使用pip工具在线安装,如果安装不成功就没有别的办法了。(错)
248、 使用random模块的函数randint(1, 100)获取随机数时,有可能会得到100。(对)
249、 如果只需要math模块中的sin()函数,建议使用from math import sin来导入,而不要使用import math导入整个模块。(对)
250、 已知列表x = [1, 2, 3, 4],那么表达式x.find(5)的值应为-1。(错)
251、 列表对象的排序方法sort()只能按元素从小到大排列,不支持别的排序方式。(错)
252、 g = lambda x: 3不是一个合法的赋值表达式。(错)
253、 内置函数len()返回指定序列的元素个数,适用于列表、元组、字符串、字典、集合以及range、zip等迭代对象。(对)
254、 已知x和y是两个等长的整数列表,那么表达式sum((i*j for i, j in zip(x, y)))的作用是计算这两个列表所表示的向量的内积。(对)
255、 已知x和y是两个等长的整数列表,那么表达式[i+j for i,j in zip(x,y)]的作用时计算这两个列表所表示的向量的和。(对)
256、 表达式int(‘1’*64, 2)与sum(2
i for i in range(64))的计算结果是一样的,但是前者更快一些。(对)
257、 已知x = list(range(20)),那么语句del x[::2]可以正常执行。(对)
258、 已知x = list(range(20)),那么语句x[::2] = []可以正常执行。(错)
259、 已知x = list(range(20)),那么语句print(x[100:200])无法正常执行。(错)
260、 已知x是个列表对象,那么执行语句y = x之后,对y所做的任何操作都会同样作用到x上。(对)
261、 已知x是个列表对象,那么执行语句y = x[:]之后,对y所做的任何操作都会同样作用到x上。(错)
262、 在Python中,变量不直接存储值,而是存储值的引用,也就是值在内存中的地址。(对)
263、 表达式(i2 for i in range(100))的结果是个元组。(错)
264、 在Python中元组的值是不可变的,因此,已知x = ([1], [2]),那么语句x[0].append(3)是无法正常执行的。(错)
265、 包含yield语句的函数一般成为生成器函数,可以用来创建生成器对象。(对)
266、 在函数中yield语句的作用和return完全一样。(错)
267、 Python内置的字典dict中元素是按添加的顺序依次进行存储的。(错)
268、 Python内置的集合set中元素顺序是按元素的哈希值进行存储的,并不是按先后顺序。(对)
269、 已知x = {1:1, 2:2},那么语句x[3] =3无法正常执行。(错)
270、 Python内置字典是无序的,如果需要一个可以记住元素插入顺序的字典,可以使用collections.OrderedDict。(对)
271、 语句pass仅起到占位符的作用,并不会做任何操作。(对)
272、 在条件表达式中不允许使用赋值运算符“=”,会提示语法错误。(对)
273、 任何包含call()方法的类的对象都是可调用的。(对)
274、 在Python中函数和类都属于可调用对象。(对)
275、 无法使用lambda表达式定义有名字的函数。(错)
276、 已知x是一个列表,那么x = x[3:] + x[:3]可以实现把列表x中的所有元素循环左移3位。(对)
277、 已知x和y是两个字符串,那么表达式sum((1 for i,j in zip(x,y) if i==j))可以用来计算两个字符串中对应位置字符相等的个数。(对)
278、 函数和对象方法是一样的,内部实现和外部调用都没有任何区别。(错)
279、 在设计派生类时,基类的私有成员默认是不会继承的。(对)
280、 如果在设计一个类时实现类len()方法,那么该类的对象会自动支持Python内置函数len()。(对)
281、 Python 3.x中字符串对象的encode()方法默认使用utf8作为编码方式。(对)
282、 已知x = ‘hellow world.’.encode(),那么表达式x.decode(‘gbk’)的值为’hellow world.’。(对)
283、 已知x = ‘Python是一种非常好的编程语言’.encode(),那么表达式x.decode(‘gbk’)的值为’Python是一种非常好的编程语言’。(错)
284、 正则表达式’^http’只能匹配所有以’http’开头的字符串。(对)
285、 正则表达式’^\d{18}|\d{15}$’只能检查给定字符串是否为18位或15位数字字符,并不能保证一定是合法的身份证号。(对)
286、 二进制文件也可以使用记事本程序打开,只是无法正确阅读和理解其中的内容。(对)
287、 正则表达式’[^abc]’可以一个匹配任意除’a’、’b’、’c’之外的字符。(对)
288、 正则表达式’python|perl’或’p(ython|erl)’都可以匹配’python’或’perl’。(对)
289、 文本文件是可以迭代的,可以使用for line in fp类似的语句遍历文件对象fp中的每一行。(对)
290、 Python的主程序文件python.exe属于二进制文件。(对)
291、 使用记事本程序也可以打开二进制文件,只不过无法正确识别其中的内容。(对)
292、 对字符串信息进行编码以后,必须使用同样的或者兼容的编码格式进行解码才能还原本来的信息。(对)
293、 使用pickle进行序列化得到的二进制文件使用struct也可以正确地进行反序列化。(错)
294、 已知当前文件夹中有一个文件readme.txt具有只读属性,假设标准库os已正确导入,那么可以通过语句os.chmod(‘readme.txt’, 0o777)来删除该文件的只读属性。(对)
295、 Python标准库os的函数remove()不能删除具有只读属性的文件。(对)
296、 字节串b’hello world’和b’hello world.’的MD5值相差很小。(错)
297、 由于异常处理结构try…except…finally…中finally里的语句块总是被执行的,所以把关闭文件的代码放到finally块里肯定是万无一失,一定能保证文件被正确关闭并且不会引发任何异常。(错)
298、 使用TCP协议进行通信时,必须首先建立连接,然后进行数据传输,最后再关闭连接。(对)
299、 TCP是可以提供良好服务质量的传输层协议,所以在任何场合都应该优先考虑使用。(错)
300、 在4核CPU平台上使用多线程编程技术可以很轻易地获得400%的处理速度提升。(错)
301、 多线程编程技术主要目的是为了提高计算机硬件的利用率,没有别的作用了。(错)
302、
三、 简答题
1、 简单解释Python基于值的自动内存管理方式?(Python采用的是基于值得内存管理方式,在Python中可以为不同变量赋值为相同值,这个值在内存中只有一份,多个变量指向同一个内存地址;Python具有自动内存管理功能,会自动跟踪内存中所有的值,对于没有任何变量指向的值,Python自动将其删除。)
2、 写出Python运算符&的两种功能?(1)数字位运算;2)集合交集运算。)
3、 在Python中导入模块中的对象有哪几种方式?(1)import 模块名 [as 别名];2)from 模块名 import 对象名[ as 别名];3)from math import *)
4、 解释Python脚本程序的“name”变量及其作用?(每个Python脚本在运行时都有一个“name”属性。如果脚本作为模块被导入,则其“name”属性的值被自动设置为模块名;如果脚本独立运行,则其“name”属性值被自动设置为“main”。利用“name”属性即可控制Python程序的运行方式。)
5、 为什么应尽量从列表的尾部进行元素的增加与删除操作?(当列表增加或删除元素时,列表对象自动进行内存扩展或收缩,从而保证元素之间没有缝隙,但这涉及到列表元素的移动,效率较低,应尽量从列表尾部进行元素的增加与删除操作以提高处理速度。)
6、 分析逻辑运算符“or”的短路求值特性?(假设有表达式“表达式1 or 表达式2”,如果表达式1的值等价于True,那么无论表达式2的值是什么,整个表达式的值总是等价于True。因此,不需要再计算表达式2的值。)
7、 简单解释Python中短字符串驻留机制?(对于短字符串,将其赋值给多个不同的对象时,内存中只有一个副本,多个对象共享改副本。)
8、 异常和错误有什么区别?(异常是指因为程序执行过程中出错而在正常控制流以外采取的行为。严格来说,语法错误和逻辑错误不属于异常,但有些语法错误往往会导致异常,例如由于大小写拼写错误而访问不存在的对象,或者试图访问不存在的文件,等等。)
9、 使用pdb模块进行Python程序调试主要有哪几种用法?(1)在交互模式下使用pdb模块提供的功能可以直接调试语句块、表达式、函数等多种脚本。2)在程序中嵌入断点来实现调试功能。在程序中首先导入pdb模块,然后使用pdb.set_trace()在需要的位置设置断点。如果程序中存在通过该方法调用显式插入的断点,那么在命令提示符环境下执行该程序或双击执行程序时将自动打开pdb调试环境,即使该程序当前不处于调试状态。3)使用命令行调试程序。在命令行提示符下执行“python –m pdb 脚本文件名”,则直接进入调试环境;当调试结束或程序正常结束以后,pdb将重启该程序。)
10、 阅读下面的代码,并分析假设文件“D:\test.txt”不存在的情况下两段代码可能发生的问题。
代码1:
try:
fp = open(r’d:\test.txt’)
print(‘Hello world!’, file=fp)
finally:
fp.close()
代码2:
try:
fp = open(r’d:\test.txt’, ‘a+’)
print(‘Hello world!’, file=fp)
finally:
fp.close()
答:
假设文件“D:\test.txt”不存在,那么第一段代码会抛出异常,提示fp没有定义;第二段代码执行正常。原因是第二段代码使用内置函数open()打开指定文件时如果不存在则会创建该文件,从而不会抛出异常。
11、
四、 编程题
1、编写程序,在D盘根目录下创建一个文本文件test.txt,并向其中写入字符串hello world。
答:
fp = open(r’D:\test.txt’, ‘a+’)
print(‘hello world’, file=fp)
fp.close()
2、写出下面代码的优化版本,提高运行效率。
x = list(range(500))
for item in x:
t = 5
5
print(item+t)
答:
x = list(range(500))
t = 5**5
for item in x:
print(item+t)
3、编写程序,生成一个包含20个随机整数的列表,然后对其中偶数下标的元素进行降序排列,奇数下标的元素不变。(提示:使用切片。)
答:
import random
x = [random.randint(0,100) for i in range(20)]
print(x)
y = x[::2]
y.sort(reverse=True)
x[::2] = y
print(x)
4、写出下面代码的执行结果。
def Join(List, sep=None):
return (sep or ‘,’).join(List)
print(Join([‘a’, ‘b’, ‘c’]))
print(Join([‘a’, ‘b’, ‘c’],’:’))
答:
a,b,c
a?️c
5、写出下面代码的运行结果。
def Sum(a, b=3, c=5):
return sum([a, b, c])
print(Sum(a=8, c=2))
print(Sum(8))
print(Sum(8,2))
答:
13
16
15
6、写出下面代码的运行结果。
def Sum(p):
return sum§
print(Sum(3, 5, 8))
print(Sum(8))
print(Sum(8, 2, 10))
答:
16
8
20
7、编写函数,判断一个数字是否为素数,是则返回字符串YES,否则返回字符串NO。
答:
import math
def IsPrime(v):
n = int(math.sqrt(v)+1)
for i in range(2,n):
if v%i0:
return ‘No’
else:
return ‘Yes’
8、编写函数,模拟Python内置函数sorted()。
答:
def Sorted(v):
t = v[::]
r = []
while t:
tt = min(t)
r.append(tt)
t.remove(tt)
return r
9、编写程序,生成包含20个随机数的列表,然后将前10个元素升序排列,后10个元素降序排列,并输出结果。
答:
import random
x = [random.randint(0,100) for i in range(20)]
print(x)
y = x[0:10]
y.sort()
x[0:10] = y
y = x[10:20]
y.sort(reverse=True)
x[10:20] = y
print(x)
10、编写程序,运行后用户输入4位整数作为年份,判断其是否为闰年。如果年份能被400整除,则为闰年;如果年份能被4整除但不能被100整除也为闰年。
答:
x = input(‘Please input an integer of 4 digits meaning the year:’)
x = eval(x)
if x%400
0 or (x%40 and not x%1000):
print(‘Yes’)
else:
print(‘No’)
11、编写程序,实现分段函数计算,如下表所示。
x y
x<0 0
0<=x<5 x
5<=x<10 3x-5
10<=x<20 0.5x-2
20<=x 0
答:
x = input(‘Please input x:’)
x = eval(x)
if x<0 or x>=20:
print(0)
elif 0<=x<5:
print(x)
elif 5<=x<10:
print(3
x-5)
elif 10<=x<20:
print(0.5x-2)
12、阅读下面的程序,判断其是否可以正常运行,如果可以运行则写出执行结果,如果不能运行则写出理由。
class Test:
def init(self, value):
self.value = value
@property
def value(self):
return self.value
t = Test(3)
t.value = 5
print(t.value)
答:
不能运行。程序中定义的是只读属性,不能修改属性的值。
13、下面代码的功能是,随机生成50个介于[1,20]之间的整数,然后统计每个整数出现频率。请把缺少的代码补全。
import random
x = [random.
(1,20) for i in range()]
r = dict()
for i in x:
r[i] = r.get(i, )+1
for k, v in r.items():
print(k, v)
答:
分别填写randint、50、0
14、假设有Python程序文件demo.py,代码如下:
def main():
if name == ‘main‘:
print(1)
else:
print(2)
main()
将该程序文件直接运行时输出结果为
,作为模块导入时得到结果
-。(1、2)

15、下面程序的执行结果是________。(1)
s = 0
for i in range(1,101):
s += i
else:
print(1)
16、下面程序的执行结果是____。(1275)
s = 0
for i in range(1,101):
s += i
if i == 50:
print(s)
break
else:
print(1)
17、下面的程序是否能够正常执行,若不能,请解释原因;若能,请分析其执行结果。
from random import randint
result = set()
while True:
result.add(randint(1,10))
if len(result)==20:
break
print(result)
答:无法正确执行,因为该程序的功能是从[1,10]区间中选择20个不同的随机整数,而该区间并没有这么多整数,所以程序死循环。
18、下面的代码是否能够正确运行,若不能请解释原因;若能,请分析其执行结果。
x = list(range(20))
for i in range(len(x)):
del x[i]
答:无法正确执行,因为删除列表元素时会影响其他元素在列表中的索引,上面的代码会抛出下标越界的异常。
19、阅读下面的代码,解释其功能。
x = list(range(20))
for index, value in enumerate(x):
if value == 3:
x[index] = 5
答:将列表x中值为3的元素修改为5。
20、阅读下面的代码,解释其功能。
x = [range(3
i, 3*i+5) for i in range(2)]
x = list(map(list, x))
x = list(map(list, zip(x)))
答:首先生成一个包含列表的列表,然后模拟矩阵转置。
21、阅读下面的代码,解释其功能。
import string
x = string.ascii_letters + string.digits
import random
print(”.join(random.sample(x, 10)))
答:输出由英文字母大小写或数字组成的长度为10且不重复的随机字符串。
22、阅读下面的代码,分析其执行结果。
def demo(p):
return sum§
print(demo(1,2,3,4,5))
print(demo(1,2,3))
答:输出结果为
15
6
23、阅读下面的代码,分析其执行结果。
def demo(a, b, c=3, d=100):
return sum((a,b,c,d))
print(demo(1, 2, 3, 4))
print(demo(1, 2, d=3))
答:输出结果为
10
9
24、下面的代码输出结果为___。(3)
def demo():
x = 5
x = 3
demo()
print(x)
25、下面函数的功能为_____。(将序列循环左移k位,得到新序列并返回)
def demo(lst, k):
if k


  1. a-zA-Z ↩︎

你可能感兴趣的:(python)