admin 管理员组文章数量: 1086019
2024年12月30日发(作者:bitmapviewer看图软件)
Python程序设计期末复习题
说明:蓝色表示正确的选项或者判断为正确的答案。
第1章 概述
一、单选题
1. Python是一种( )计算机程序设计语言。
A. 编译型 B. 解释型 C. 翻译型 D. 可视化
2.下列的编程语言是解释性语言的是( )。
A.C++ B.C C.Objective D.Python
3. 获取“Python之禅”的语句是( )。
A. Python B. Print C. import this D. import that
4. 下列IDE中,无法从事Python程序开发的是( )。
A.PyCharm B.VS Code C.Jupyter Notebook D.Code Blocks
二、判断题
1. Python是一种面向数据的计算机程序设计语言。( )
2. Python是一种编译型计算程序设计语言。( )
3. Python是一种解释型计算程序设计语言。( )
4. Python不是纯粹的函数式编程语言。( )
5. 由于GIL的存在,Python在多线程环境下很容易扩展。( )
6. 惰性计算是Python的一大特性。( )
7. Python使用缩进来体现代码之间的逻辑关系,对缩进的要求非常严格。( )
8.
只有Python扩展库才需要导入以后才能使用其中的对象,Python标准库不需要导入即
可使用其中的所有对象。( )
三、简答题
1.简述Python语言的优缺点。
参考答案:
优点:集成性、优雅美观、易于调试、拥有强大的解释器、兼容性
缺点:速度慢、无法加密、多线程灾难
2.如何在Python中导入第三方工具库,请举出几种常用的导入方式。
1
参考答案:一般使用import语句导入第三方库或非内置基本库。导入方式常有:import
XXX、import XXX from XXXX、from XXXX import XXX、import XXX as xxx、from
XXXX import * 等。
第2章 Python编程基础一:数值的表示
一、单选题
1. Python不支持的数据类型有( )。
A.int B.char. C.dict D.list
2. 下列哪种数据类型不是Python3中的数据类型( )。
A. int B. float C. complex D. long
3. print(type(16/4))的结果为( )。
4. Python中代码如需跨行时可以在行尾加上( )符号。
A. B./ C.| D.-
5. Python中哪个转义字符代表换行。( )
A.n B.b C.t D.r
6. 下列哪个语句在Python中是非法的?( )
A.x = (y = z + 1) B.x = y = z = 1
C.x, y = y, x D.x += y
7. 关于字符串下列说法错误的是( )。
A. 字符串应该视为长度为1的字符串
B. 字符串可以转化成数字
C. 既可以用单引号,也可以用双引号创建字符串
D. 在三引号字符串中可以包含换行回车等特殊字符
8. 3+5*6**2/2-8
以上语句的执行结果是( )。
A. 445.0 B. 25.0 C. 40.0 D. 85.0
9. “ab”+”c”*2 结果是( )。
A.abc2 B.abcabc C.abcc D.ababcc
10. 已知x=43,ch='A',y = 1,则表达式(x>=y and ch <'b' and y)的值是(
A. 1 B. 0 C. True D.报错
二、判断题
1. 在Python 3.x中可以使用中文作为变量名。( )
2. Python变量名是区分字母大小写的。( )
2
)。
3. Python中的字符串是可变数据类型。( )
4.
3+4j不是合法的Python表达式。( )
三、简答题
1.简述Python中的变量作用域。
参考答案:Python中变量作用域分为三个等级,即全局(global,定义在函数体外面的变
量)、局部(local,在函数体内定义的变量)和外部(nonlocal,嵌套函数中定义的变
量)。变量作用域的查找优先级依次为局部、外部、全局和内建(自带变量)。
2.请简述什么是局部变量?
参考答案:局部变量是指函数内部定义并使用的变量,它只在函数内部有效。每个函数在
执行时,系统都会为该函数分配一块“临时内存空间”,所有的局部变量都被保存在其中。
当函数执行完成之后,该空间被释放,局部变量也就失效了,因此离开函数之后就不能再
访问局部变量了,否则会抛出NameError异常。
3.简述is和==的区别。
参考答案:==表示等号,用来比较两个对象是否相等。而is是身份运算符,用来对比两个
对象是否为同一个对象。
第3章 Python编程基础二:I/O系统交互与批量数据处理
一、单选题
1.
a='a'
print ('c' or a>='b')
以上程序运行的结果是( )。
A.a
2.
print ('C:norton_antivirs')
以上语句的执行结果是( )。
A. C:norton_antivirs
C. C:
orton_antivirs
3.
a = 'python'
a[0] = 'c'
print(a)
以上程序的运行结果为( )。
3
B.b C.c
B. 'C:norton_antivirs'
D. C:orton_antivirs
C.c D.报错
4.
result = lambda x: x*x
print(result(5))
以上语句的运行结果为( )。
x: x*x B.10 C.25 D.55
5.
print({1,2,3}-{3,4,6})
以上程序的运行结果为( )。
A.{-2,-2,-3} B.{2,2,3} C.{1,2} D.报错
6. 下列数据是列表类型的是( )。
A. [1,2] B. [1 2] C. {1: 2} D. (1,2)
7.
[x1+x2 for x1,x2 in zip([1,2],[3,4])]
以上语句的运行结果为( )。
A.[4,6] B.[3,7] C.[1,2,3,4] D.报错
8. 已知x= [3, 5, 7],那么执行语句x[len(x):] = [1, 2]之后,x的值为(
A. [1, 2, 3, 5, 7] B. [1, 2]
C.[3, 5, 7, 1, 2] D.[3, 5, 7]
9.
a = [2,3,1]
()
以上程序的运行结果为( )。
A.[1,2,3] B.[3,2,1] C.无输出结果
10.
n1 = [1,2,3]
n2 = list('python')
n1+n2
以上语句的运行结果为( )。
A.[1,2,3,'p','y','t','h','o','n'] B.[1,2,3,'python'] C.['1p','2y','3t','h','o','n']
11.
a = [1, 2, 3]
b = [1, 2, 4]
id(a[1])==id(b[1])
以上程序的运行结果为( )。
C.报错 D.无任何输出
4
)。
D.报错
12. 以下关于字典的描述,错误的是( )。
A. 字典长度是可变的 B. 字典是键值对的集合
D. 字典中元素以键信息为索引访问 C. 字典中的键可以对应多个值信息
13. 以下不能创建一个字典的语句是( )。
A.dict1 = {}. B.dict2 = { 3 : 5 }
C.dict3 = {[1,2,3]: “uestc”} D.dict4 = {(1,2,3): “uestc”}
14.
d = {'Name':'Li','Age':23}
23 in d
以上程序的运行结果为( )。
D.'Age'
15. 假设将单词保存在变量 word 中,使用一个字典类型 counts={},统计单词出现的次
数可采用以下代码:( )。
A. counts[word] = count[word] + 1
B. counts[word] = 1
C. counts[word] = (word,1) + 1
D. counts[word] = (word,0) + 1
16.
d = {'Name':'Li','Age':23}
'Name' in d
以上语句的运行结果为( )。
17.
nums=set([1,1,2,3,3,3,4])
print (len(nums))
以上语句的输出结果为( )。
A.1
18.
(1,2,3).append(4)
以上程序的运行结果为( )。
A.(1,2,3,4)
19.
a=(1,2,['1,2'])
a[2].append(3)
print(a)
以上程序的运行结果是( )。
5
D.'Li'
B.2 C.4 D.5
B.(1,2,3) C.(4,1,2,3) D.报错
A. (1, 2, ['1,2', '3'])
20.
set('121323')
B. (1, 2, ['1,2', 3]) C. [1, 2, ['1,2', 3]] D. 报错
以上程序的运行结果为( )。
A.('1','2','1','3','2','3')
21.
nums=set([1,1,2,3,3,3,4])
print (len(nums))
以上语句的输出结果为( )。
A.1 B.2 C.4 D.5
B.{'121323'} C. {'1', '2', '3'} D. ('1', '2', '3')
二、判断题
1. 凡是用花括号(即{})括起来中间用逗号隔开元素的数据结构都叫字典。( )
2. 任何不可变对象均可作为字典的键。( )
三、简答题
1. 简述Python内置序列的主要数据结构?
参考答案:(1)列表,一种有序集合,每个元素都是确定的,可以通过索引访问每个元
素,是可变的,用方括号[ ]表示,其元素用逗号隔开;(2)元组是用圆括号 ( ) 表示,其
元素用逗号隔开的不可变序列;(3)字典,用花括号 { } 表示,使用key-value键值对方
式存储的序列,每一个键都与一个值相关联,可以使用键访问其对应的值,其键是不可变
的,值可以是任意对象;(4)集合,其元素都是唯一、无序的,有可变集合和不可变集
合,并且可以进行交、并、补等运算。
2.请描述列表和元组之间的区别和共同点。
参考答案:不同点:定义的方式不同 list[] tuple()
是否可变 list可变 tuple() 不可变
list中有 append(),insert() 函数,tuple中没有
相同点:都是有序的集合(容器)。
四、编程题
1. 给定列表 [0,1,2,3,4,5,6,7,8,9],要求把列表里面的每个值加1并返回
值。
参考答案:
l=[0,1,2,3,4,5,6,7,8,9]
l1=[]
for i in l:
6
(i+1)
print (l1)
或者:
l=[0,1,2,3,4,5,6,7,8,9]
l1=list(map(lambda x:x+1,l))
print (l1)
或者:
l=[0,1,2,3,4,5,6,7,8,9]
l1=(i+1 for i in l)
list(l1)
2. 有列表maths=[98,75,23,45,87,67,92,100,29,54,88],存储了若干名同学的某次考试的数
学成绩。请按照如下要求编写程序:
①将maths进行降序排列,并返回结果;
②找出不及格的分数;
③将每个同学的分数扣减5分。
参考答案:
①
(reverse=True)
print (maths)
②
[x for x in maths if x<60]
③
[x-5 for x in maths]
3. 给定一个字符串列表,如L=
['China','USA','Japan','France','Germany','UK','Korea','Australia'],请将L中的字符串按照
字符串长度进行降序排列。
参考答案:
string=['China','USA','Japan','France','Germany','UK','Korea','Australia']
(key=lambda x:len(set(list(x))) ,reverse=True)
print (string)
4. 给定一个列表,如string=['china','japan','USA','uk','France','Germany'],请编制程序为列
表中的字符串元素创建一个指向其列表位置的映射(如'china' : 0; 'japan' : 1)。
参考答案:
7
string=['china','japan','USA','uk','France','Germany']
mapping={val:index for index,val in enumerate(string)}
print (mapping)
或者:
mapping=dict((val,index) for index,val in enumerate(string))
print (mapping)
5. 有如下列表:
boysandgirls=
[['Tom','Billy','Jefferson','Andrew','Wesley','Steven','Joe'],['Susie','Casey','Jill','Ana','Eva','Jennifer','
Stephanie']]
请编制程序,从boysandgirls中找出带有名字长度大于5个字母的名字。
参考答案:
lenththan5=[n1 for n2 in boysandgirls for n1 in n2 if len(n1)>5]
print (lenththan5)
或者:
lenththan5=[]
for n2 in boysandgirls:
for n1 in n2:
if len(n1)>5:
(n1)
print (lenththan5)
6. 请将列表L=[12,11,34,43,67,34,5,76,456,45,6,35,23,4523,45]中能够被2整除的元素提取
出来。
参考答案:
L=[12,11,34,43,67,34,5,76,456,45,6,35,23,4523,45]
list(filter(lambda x:x%2==0,L))
或者:
L=[12,11,34,43,67,34,5,76,456,45,6,35,23,4523,45]
l=[]
for _ in L:
if _/2==int(_/2):
(_)
print (l)
8
第4章 逻辑与控制
一、单选题
1.
if None:
print('Hello')
以上程序的运行结果为( )。
B.'Hello' C.无任何输出 D.报错
2. 以下关于 Python 的控制结构,错误的是( )。
A.每个 if 条件后要使用冒号
B.在 Python 中,没有 switch-case 语句
C.Python 中的 pass 是空语句,一般用作占位语句
D.elif 可以单独使用
3. 以下关于循环结构的描述,错误的是( )。
A.局部变量是指在函数内部使用的变量,当函数退出时,变量依然存在,下次函数
调用时可以继续使用
B.使用global保留字声明简单数据类型变量后,该变量作为全局变量使用
C.简单数据类型变量无论是否与全局变量重名,仅在函数内部创建和使用,函数退
出后变量被释放
D.全局变量是指在函数之外定义的变量,一般没有缩进,在程序执行全过程有效
4. 以下哪个描述是正确的? ( )
A. break 语句用于终止当前循环
B. continue 语句用于跳过当前剩余要执行的代码,执行下一次循环
C. break 和 continue 语句通常与 if, if...else 和 if...lse 语句一起使用
D.以上说法都是正确的
5.
i = sum = 0
while i <= 4:
sum += i
i = i+1
print(sum)
以上程序的运行结果为( )。
A.0
6.
for i in range(2):
print(i)
9
B.10 C.4 D.以上结果均不正确
for i in range(4,6):
print(i)
以上程序的运行结果为:( )。
A.2, 4, 6
C.0, 1, 4, 5
7.
i=s=0
while (i<100):
s+=i
i+=1
print (s)
以上程序的运行结果是( )。
A. 5050 B. 4950 C. 5000 D. 100
B.1, 2, 4, 5, 6
D.0, 1, 2, 4, 5, 6
8. 以下关于 pass 哪个描述是正确的?( )
会忽略 pass 语句,就像忽略注释一样 语句会终止当前循环
不做任何事情,一般用做占位语句
二、判断题
1. continue语句的作用是终止正在执行的循环。( )
三、简答题
1.简述while语句和for语句的区别和联系。
参考答案:while和for都是Python中的循环语句。while循环和if语句类似,在条件或表
达式为真时,会重复执行相应的代码块(即循环语句体)。for语句常用语遍历字符串、列
表、元组、字典、集合等序列,逐个获取序列中的元素。在功能上,for语句可以完全替代
while语句。
2.什么是推导式(comprehensions)?
参考答案:推导式是一种将for循环、if表达式以及赋值语句放到单一语句中的编程方法,
只需一条表达式就能非常简洁的构造一个新对象,具体有列表推导式、集合推导式、字典
推导式等。其基本语法(如列表推导式)为:[表达式 for 对象 in 集合 if 条件]
四、编程题
1.请将输入的任意3个数值进行升序排列。
参考答案:
a,b,c = input(),input(),input()
if a > b: a,b = b,a
if a > c: a,c = c,a
10
D.以上说法都是正确的
if b > c: b,c = c,b
print ("from small to big: %s,%s,%s" %(a,b,c))
2.田忌与某人赛马,每人各出3匹马。田忌的马编号为a、b、c,某人的马编号为x、y、
z。使用抽签方式来进行一对一的三次比赛,已知a不和x比,c不和x、z比。请找出三次
赛马的对阵名单。
参考答案:
for x in ["a","b","c"]:
if x != "a" and x != "c":
print ("x:%s"%x)
for z in ["a","b","c"]:
if z != x and z != "c":
print ("z:%s"%z)
for y in ["a","b","c"]:
if y != x and y != z:
print ("y:%s"%y)
3.请编程打印形状如下的九九乘法表。
0*0= 0
1*0= 0 1*1= 1
2*0= 0 2*1= 2 2*2= 4
3*0= 0 3*1= 3 3*2= 6 3*3= 9
4*0= 0 4*1= 4 4*2= 8 4*3=12 4*4=16
5*0= 0 5*1= 5 5*2=10 5*3=15 5*4=20 5*5=25
6*0= 0 6*1= 6 6*2=12 6*3=18 6*4=24 6*5=30 6*6=36
7*0= 0 7*1= 7 7*2=14 7*3=21 7*4=28 7*5=35 7*6=42 7*7=49
8*0= 0 8*1= 8 8*2=16 8*3=24 8*4=32 8*5=40 8*6=48 8*7=56 8*8=64
9*0= 0 9*1= 9 9*2=18 9*3=27 9*4=36 9*5=45 9*6=54 9*7=63 9*8=72 9*9=81
参考答案:
for i in range(10):
for j in range(i+1):
print("{0}*{1}={2:2d}".format(i,j,i*j),end=" ")
print(" ")
第5章 函数
一、单选题
1. 以下内容关于函数描述正确的是? ( )
11
A.函数用于创建对象 B.函数可以让重新执行的更快
C.函数是一段代码用于执行特定的任务 D.以上说法都是正确的
2. 如果函数没有使用 return 语句,则函数返回的是?( )
A.0 C.任意整数 D.报错! 函数必须要有返回值。
3. 如果函数没有使用 return 语句,则函数返回的是( )。
A.0 C.任意整数 D.报错! 函数必须要有返回值。
4. 下列代码执行结果是什么? ( )
x = 1
def change(a):
x += 1
print (x)
change(x)
A.1 B.2 C.3
5.
def f(x, y = 0, z = 0): pass
f(1, , 3)
以上程序运行的结果是:( )
A. pass B. None C. not
6.
def Foo(x):
if (x==1):
return 1
else:
return x+Foo(x-1)
print(Foo(4))
以上程序的运行结果为:( )
A.10 B.24 C.7 D.1
7.
def adder(x):
def wrapper(y):
return x + y
return wrapper
adder5 = adder(5)
print(adder5(adder5(6)))
以上程序的运行结果为: ( )
A.10 B.12 C.14
D.报错
D. 报错
D.16
12
8.
def power(x):
def p(y):
return x**y
return p
power(2)(5)
以上程序运行的结果是: ( )
A.2
9.
counter = 1
def doLotsOfStuff():
global counter
for i in (1, 2, 3):
counter += 1
doLotsOfStuff()
print (counter)
以上程序的运行结果为: ( )
A.1 B.3 C.4 D.7
B.25 C.10 D.32
二、判断题
1. 定义函数的时候,可选参数和非可选参数的位置可以自定义。( )
2. 使用关键字参数可以进行Python函数的乱序传参。( )
3.
全局变量不能在函数体内直接被赋值。( )
二、简答题
1. Python函数的参数有几种形式?
参考答案:具体有必备参数、缺省(默认)参数、命名(关键字)参数、不定(可变)参
数等。
2. 简述函数与方法的差异?
参考答案:第一,所处的位置不同。函数是直接写在文件中而不是类中,方法只能写在类
中。第二,定义的方式不同。在Python中,函数用def定义,而方法虽然是定义在类中的
函数,但是在定义其过程中,要根据方法的类型来设置诸如self之类的默认参数。第三,
调用方式不同。函数调用直接使用函数名加参数的方式调用即可,而方法是通过对象方法
调用的。
3. 如何在函数中设置一个全局变量?请举例说明。
13
参考答案:如果要给全局变量在一个函数里赋值,必须使用global语句。global VarName的
表达式会告诉Python,VarName是一个全局变量,这样Python就不会在局部命名空间里寻找
这个变量了。
def my_global():
global x
x=8
4. 什么是递归函数?使用递归函数有什么注意事项?
参考答案:一个函数在其函数体内调用其自身,成为递归函数。函数递归包含了一种隐式
的循环,它会重复执行某段代码,而且这种重复执行无须循环控制。要注意当一个函数不
断调用自己时,必须设置不再调用它自己的条件,否则就会变成无穷递归,进入死循环。
因此,使用递归函数一定要注意要向已知方向进行。
5. 什么是迭代器?它有什么优点?
参考答案:迭代器是一组数据结构,可以利用索引从0开始一直迭代到序列的最后一个元
素。优点:提供了可扩展的迭代器接口、带来了数据处理性能上的提升、与所有已经存在
的用户定义的类以及扩展的模拟序列和映射的对象向后兼容、可以创建更加简洁可读的代
码。
6. 请简述迭代器的迭代机制。
参考答案:迭代器有一个next()方法对象,而不是通过索引来计数。当一个循环机制
(如for语句)需要下一个项时,调用迭代器的next()方法就可以获得它。条目全部取
出后,会引发一个StopIteration异常,这并不表示错误发生,只是告诉外部调用者迭代完
成。迭代器不能向后移动,不能回到开始,也不能复制一个迭代器。如果要再次(或同
时)迭代同一个对象,只能创建另一个迭代器。
三、编程题
1. 请编写一个函数,能够实现任意数相加的功能。
参考答案:
def sum_any(*n):
s=0
for _ in n:
s+=_
return s
2. 请使用递归函数求给定n以内的所有整数之和。
参考答案:
def addn(n):
14
if n==1:
return 1
return n+addn(n-1)
3. 请编制一个能够求出任意给定列表中全部数值型元素的乘积的函数。
参考答案:
def sumlist(l):
s=1
for _ in l:
if isinstance(_, (int, float)):
s*=_
return s
运行结果:
somelist=[12,11,34,43,'python','3.7.4']
sumlist(somelist)
[out] 192984
4. 请设计一个能够将两个数相加的函数,该函数能够对其参数进行合规性检查。
参考答案:
def checkParams(func):
def wrapper(a, b):
if isinstance(a, (int, float)) and isinstance(b, (int, float)):
return func(a, b)
print ("Invalid Data Type!")
return
return wrapper
@checkParams
def add(a, b):
return a + b
5. 请写出下面程序的运行结果。
global c
c= 0
def f(a,b):
a = 4
print (a, b)
def main():
15
a = 5
b = 6
print (a, b)
print(a,c)
f(a,b)
print (a, b)
main()
① ② ③ ④
参考答案:①5 6 ②5 0 ③4 6 ④5 6
6. 请定义一个函数,并试写一个函数,给定n,返回第n个斐波那契数。0,1,1,2,3,5,8…
参考答案:
def fb(n):
if n==1:
return 0
if n==2:
return 1
if n > 2:
return fb(n-1)+fb(n-2)
7. 请编写一个计算减法的函数,当第一个数小于第二个数时,抛出“被减数不能小于减数
"的异常。
参考答案:
def jianfa(a, b):
try:
if a < b:
raise BaseException('被减数{}不能小于减数{}'.format(b,a))
else:
print(a - b)
except BaseException as f :
print(f) # 触发,抛出异常
jianfa(4,5)
8. 下列程序是求给定n以内的所有质数的程序,请代码填写完整。
from math import sqrt
def isprimenumber(n):
16
k= ①
j= ②
while j<=sqrt(n):
if n/j==int(n/j):
k=1
break
③
if k==0:
yield n
def prime(n):
for i in ④ :
yield from isprimenumber(i)
参考答案:
① 0
9. 请使用递归函数求给定n的阶乘。
参考答案:
def addn(n):
if n==1:
return 1
return n*addn(n-1)
10. 请根据如下程序的运行结果,将程序补充完整。
total= ①
def sum_user(para1,para2):
②
print ("Inside the sum_user function local total : ", total)
def inner(p1=1,p2=2):
③
④
print ("Inside the inner function local total : ", total)
inner()
return total
sum_user(10,20)
print ("Outside the all function global total: ", total)
17
② 2 ③ j+=1 ④ range(2,n+1)
运行结果:
Inside the sum_user function local total : 30
Inside the inner function local total : 3
Outside the all function global total: 0
参考答案:
① 0
11. 请编制一段程序,能够实现统计出给定列表中每一个元素中的数字和非数字的其它字
符个数的功能。
参考答案:
for c in l:
digit = 0
others = 0
if isinstance(c, int):
digit = len(str(c))
elif isinstance(c, float):
digit = len(str(c))-1
others =1
else:
for c1 in c:
if t():
digit +=1
else:
others += 1
print ('%s in list %s' % (c,l))
print ('digit = %d, others = %d' % (digit,others),end='nn')
如有ll=[123,1233.3,'w34k3','aldsjfla23e43423'],上述程序执行结果为:
123 in list [123, 1233.3, 'w34k3', 'aldsjfla23e43423']
digit = 3, others = 0
1233.3 in list [123, 1233.3, 'w34k3', 'aldsjfla23e43423']
digit = 5, others = 1
w34k3 in list [123, 1233.3, 'w34k3', 'aldsjfla23e43423']
digit = 3, others = 2
18
② total=para1+para2 ③ nonlocal total ④ total=p1+p2
aldsjfla23e43423 in list [123, 1233.3, 'w34k3', 'aldsjfla23e43423']
digit = 7, others = 9
第6章 Python的文件处理
一、单选题
1. open函数中哪种文件读取模式只用于写入。( )
A.r B.r+ C.w D.a
2. 以下选项中,不是Python对文件的打开模式的是( )。
A.a B.r. C.c D.w
3.以下文件操作方法中,打开后能读取 CSV 格式文件的选项是( )。
A. foo = open("","w")
C. foo = open("","r")
B. foo = open("","x")
D. foo = open("","a")
4. 将Pandas的DataFrame对象导出为xlsx文件的正确方法是( )。
_csv
二、判断题
_excel _xlsx _xls
1.
每次用完文件后,都要关闭文件 ()。否则,文件就会一直被Python占用,不能
被其他进程使用。( )
三、简答题
1.简述Python中进行文件处理的一般流程。
参考答案:Python中文件处理的一般流程为:首先,打开文件,将得到的文件句柄复制给
一个变量;然后,通过文件句柄对文件进行操作(读/写);最后,关闭文件。
四、编程题
1. 给定如下数据,请填写代码以完成从文件中读取身高的数据,并求得平均
值。
数据样式如下:
import ____①
with open('') as f:
row = ② #读取文件,并以逗号作为分隔符。
19
next(row)
height=[]
for r in row:
③ #在身高的列表中加入身高
s= ④ #求得身高的和
average= ⑤ #计算身高的平均值,保留两位小数点
参考答案:①csv ②(f, delimiter = ',') ③(float(r[2])) ④sum(height)
⑤round(s/len(height),2)
第7章 Python面向对象的编程技术
一、单选题
1. 下面哪项特性不是面向对象程序设计的主要特征( )。
A. 封装 B. 函数 C. 多态 D. 继承
2. Python使用关键字( )来定义类。
A.def B.__init__ C.class D.self
3. Python中查看对象的属性或方法,返回对象的属性和方法列表的函数为( )。
() () () ()
4. 下列哪个方法用于查看类的属性( )。
A.__doc__ B.__dict__ C.__module__ D.__class__
5. Python在声明类的过程中定义属性时,带有什么的属性称为私有属性。( )
A.2个下划线的前缀
后缀
6. Python中哪种标识符代表类的私有成员。( )
A.__foo__ B._foo C.__foo __
B.1个下划线的前缀 C.2个下划线的后缀 D.1个下划线的
7. 类方法是指类对象所拥有的方法,一般用装饰器( )来标识。
A. @staticmethod
二、判断题
1. 一个类只能创建出一个实例。( )
2. 当父类方法的功能不能满足需求时,可以在子类中重写父类的方法,该过程称之为方
法重载。( )
3. 私有属性只能在类的内部进行调用,无法在类的外部访问。( )
B. staticmethod C. @classmethod D. classmethod
4.
使用@staticmethod装饰器修饰的方法称之为类方法。( )
三、简答题
20
1. 什么是多态和多态性?
参考答案:多态是指一类事物有多重形态(一个抽象类有多个子类,因而多态的概念依赖
于继承)。多态性是指向不同的对象发送同一条消息,不同的对象在接收时会产生不同的
行为(方法)。多态性又包括静态多态性和动态多态性。静态多态性即任何类型都可以用
运算符“+”进行运算;动态多态性的意思是我们在使用对象的时候不需要考虑类的类型。
四、编程题
1. 请说明如下程序的功能:
a=100; b=10
a,b=b,a
参考答案:上述程序利用Python语法糖实现了交换两个对象的值的功能。
2. 请编写一个具有计数器属性(用于统计该类的实例对象数量)的类。
参考答案:
class SomeClass:
count = 0
@classmethod
def __init__(cls):
+= 1
3. 有如下程序,请在“#注释____”出补充该代码块的作用或功能。
class Female(Human): #注释 ①
def __init__(self,gender='female'): #注释 ②
super(Female,self).__init__()
=gender
def get_age(self):
return
def set_age(self,age_value): #注释 ④
#注释 ③
if not isinstance(age_value,int):
raise ValueError('Age must be an integer!')
if age_value<0:
raise ValueError('You were never born, age must be equal or greater than 0!')
if age_value>150:
raise ValueError('You really live forever! Age must be less than 150!')
=age_value
参考答案:
21
① 声明一个名为Female的类,继承于Human类
② 使用构造器构造Female类的实例属性gender,其余属性继承于父类Human
③ 使用方法来构造Female的实例属性age
④ 使用方法来对所构造的age属性的合法范围进行审查
第8章 测试、异常与异常处理
一、单选题
1. 有关异常说法正确的是( )。
A. 程序中抛出异常终止程序 B.程序中抛出异常不一定终止程序
C. 拼写错误会导致程序终止 D. 缩进错误会导致程序终止
2. 关于程序的异常处理,以下选项中描述错误的是( )。
A.程序异常发生经过妥善处理可以继续执行
B.异常语句可以与 else 和 finally 保留字配合使用
C.Python 通过 try、except 等保留字提供异常处理功能
D.编程语言中的异常和错误是完全相同的概念
3.
try:
1 / 0
except Exception as e:
print ("0不能作为除数")
else:
print ("没有异常")
finally:
print ("最后总是要执行我")
以上程序运行的结果是:( )
A. 0不能作为除数
B. 最后总是要执行我
C. 没有异常
D. 0不能作为除数
最后总是要执行我
二、判断题
1.
try except的作用是可以提高代码健壮性,捕获异常,巧妙的避开报错的信息。(
第9章 Python包与模块
22
)
一、单选题
1. 下列不属于Numpy数据类型的是( )。
A.int16 B.int32 C.int64 D.int128
2. 下列哪种调用模块的方式可以之后使用array([1,2,3]) 。( )
numpy numpy as np
numpy import array D.以上三种均不能
3. 以下查看Pandas的DataFrame对象a的属性信息的正确方法是:( )
()
4.
import numpy as np
b = (3)
b[~(b>=1)]
以上程序的运行结果为:( )
([0])
二、判断题
([0,1]) ([1,2]) ([], dtype=int32)
() () ()
1.
Numpy、Pandas、Matplotlib是使用Python语言从事数据分析的重要第三方库。( )
三、简答题
1. matplotlib、pyplot和pylab之间有什么关系?
参考答案:matplotlib是整个包;是matplotlib中的一个模块,为底层面向
对象的绘图库提供状态机接口;pylab是一个便利模块,是与matplotlib一起安装的,它在
单个名字空间中批量导入和numpy。对于非交互式绘图,建议使用pyplot
创建图形,然后使用OO绘图。
2.简述KNN算法的基本思想。
参考答案:K近邻即KNN是一种分类算法,是最简单的机器学习算法之一。其基本思想
是:在特征空间中,如果一个样本附件的K个最近(特征空间中最邻近)样本的大多数属
于某一个类别,则该样本也属于这个类别。
第10章 基于Python的大数据项目
简答题
1 .简述大数据处理的步骤。
参考答案:(1)采集。采集过程主要要考虑高并发数,如何在数据库之间进行负载均衡和
分片;(2)导入/预处理。将来自前端的数据导入大型分布式数据库或分布式存储集群,
在此基础上做一些清洗和数据预处理工作,或导入时做流计算工作,以满足实时计算的需
23
求;(3)统计/分析。对海量数据进行结构化或半结构化数据分析、分类汇总等;(4)挖
掘。基于各种算法,进行分类或预测,得到结论。
24
版权声明:本文标题:Python程序设计期末复习题 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://roclinux.cn/p/1735648762a1682463.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论