本文整理了填空、选择、判断等一些课后习题答案,具体的编程题可以见:Python快速编程入门课后程序题答案。
对象
的高级语言。可移植
特性。字节码
。UTF-8
。√
)√
)√
)√
)×
)×
)√
)×
)√
)×
)下列选项中,不属于Python语言特点的是(C
)。
A.简单易学 B.开源 C.面对过程 D.可移植性
下列领域中,使用Python可以实现的是(ABCD
)。(多选)
A.Web开发 B.操作系统管理 C.科学计算 D.游戏
下列关于Python 2.x和Python 3.x的说法,正确的是(B
)。
A.Python 3.x使用print语句输出数据
B.Python 3.x默认使用的编码是UTF-8
C.Python 2.x和Python 3.x使用//进行除法运算的结果不一致
D.Python 3.x版本的异常可以直接被抛出
下列关于Python的说法中,错误的是(C
)。
A.Python是从ABC发展起来的
B.Python是一门高级的计算机语言
C.Python是一门只面向对象的语言
D.Python是一种代表简单主义思想的语言
下列关于IPython的说法,错误的是(D
)。
A.IPython集成了交互式Python的很多有点
B.IPython的性能远远优于标准的Python的shell
C.IPython支持变量自动补全,自动收缩
D.与标准的Python相比,IPython缺少内置的功能和函数
简述Python的特点。
•简单易学
•开源
•高级语言
•可移植性
•解释性
•面向对象
•可扩展性
•丰富的库
•规范的代码
简述Python的应用领域(至少3个)。
•web应用开发
•操作系统管理、服务器运维的自动化脚本
•科学计算
•桌面软件
•服务器软件(网络软件)
•游戏
•构思实现,产品早期原型和迭代
简述Python 2.x和Python 3.x的区别。
(1)、在python2.x中,输出数据使用的是print语句。但是在python3.x中, print语句没有了,取而代之的是print()函数
(2)、python2有ASCII Str()类型,unicode()是单独的,不是byte类型。在python3.x版本的源代码中,默认使用的是UTF-8编码,从而可以很好的支持中文字符。
(3)、在python 2.x中,使用运算符/进行除法运算,整数相除的结果是一个整数,浮点数除法会保留小数点的部分得到一个浮点数的结果。在python 3.x中使用运算符/进行除法,整数之间的相除,结果也会是浮点数。
(4)、相比python2.x版本,python3.x版本在异常方面有很多改变:
•在python2.x版本,所有类型的对象都是直接被抛出的,但是,在python3.x版本中,只有继承自BaseException的对象才可以被抛出。
•在python2.x版本中,捕获异常的语法是except exc,var。在python3.x版本中,引入了as关键字,捕获异常的语法变更为except exc as var。
•在python2.x版本中,处理异常使用raise Exception(args)。在python3.x版本中,处理异常使用raiseException, args。
•python3.x取消了异常类的序列行为和.message属性。
(5)、在Python 3.x中,表示八进制字面量的方式只有一种,并且必须写0o1000这样的方式,原来01000的方式不能使用了。
(6)、Python 2.x中不等于有两种写法 != 和 <>;但是,Python 3.x中去掉了<>, 只有!=一种写法
(7)、python3.x去除了long类型,现在只有一种整型int,但它的行为就像是python2.x版本的long。
简述Python程序的执行原理。
Python程序的执行原理如图所示:
Python解释器将源代码转换为字节码,然后把编译好的字节码转发到Python虚拟机(PVM)中进行执行。
简述IPython的特点。
•IPython具有卓越的Python shell,其性能远远优于标准Python的shell。
•IPython支持变量自动补全,自动缩进,支持 bash shell 命令,内置了许多很有用的功能和函数。
•IPython提供了基于控制台命令环境的定制功能,可以十分轻松地将交互式Python shell包含在各种Python应用中,甚至可以当作系统级shell来使用。
整型
。True
和False
。8
个字节。1.2e5
。00000010
。0b10100
。type()
来实现。1
。20
。4.34×10^5
。√
)×
)√
)√
)×
)×
)√
)√
)√
)√
)下列选项中,(D
)的布尔值不是Flase。
A.None
B.0
C.()
D.1
假设a=9,b=2,那么下列运算中,错误的是(D
)。
A.a+b的值是11
B.a//b的值是4
C.a%b的值是1
D.a**b的值是18
下列标识符中,合法的是(AD
)。
A.helloWorld
B.2ndObj
C.hello#world
D._helloworld
下列符号中,表示Python中单行注释的是(A
)。
A.#
B.//
C.
D."“"
下列选项中,符合Python命名规范的标识符是(C
)。
A.user-Passwd
B.if
C._name
D.setup.exe
下列选项中,Python不支持的数据类型有(B
)。
A.int
B.char
C.float
D.dicitionary
下列表达式中,返回 True 的是(B
)。
A.a=2 b=2 a=b
B.3>2>1
C.True and False
D.2!=2
下列语句中,哪个在 Python 中是非法的?(B
)。
A.x = y = z = 1
B.x = (y = z + 1)
C.x, y = y, x
D.x += y
下列关于 Python 中的复数,说法错误的是(C
)。
A.表示复数的语法是 real + image j
B.实部和虚部都是浮点数
C.虚部必须后缀 j,且必须是小写
D.一个复数必须有表示虚部的实数和 j
下列选项中,幂运算的符号为(D
)。
A.*
B.++
C.%
D.**
break
语句可以跳出循环体。elif
语句是else语句和if语句的组合。continue
语句跳过本次循环后面的代码,重新开始下一次循环。True
来实现无限循环。pass
表示的是空语句。×
)√
)√
)√
)√
)BC
)。A.
for i in range(3):
print(i)
B.
for i in range(3):
print(i + 1)
C.
a_list = [0,1,2]
for i in a_list:
print(i + 1)
D.
i = 1
while i < 3:
print(i)
i = i + 1
sum = 0
for i in range(100):
if(i%10):
continue
sum = sum + i
print(sum)
上述程序的执行结果是(C
)。
A.5050 B.4950 C.450 D.45
C
)。if x < y:
z=x
x=y
y=z
A.10,20,30
B.10,20,20
C.20,10,10
D.20,10,30
x | y |
---|---|
x<0 | x-1 |
x=0 | x |
x>0 | x+1 |
下面程序段中,能正确表示上面关系的是(C
)。
A.
y = x + 1
if x >= 0
if x == 0:
y = x
else:
y = x - 1;
B.
y = x - 1
if x != 0:
if x > 0:
y = x + 1
else:
y = x
C.
if x <= 0:
if x < 0:
y = x - 1
else:
y = x
else:
y = x + 1
D.
y = x
if x <= 0:
if x < 0:
y = x - 1
else:
y = x + 1
D
)。当需要在字符串中使用特殊字符的时候,Python使用(A
)作为转义字符。
A.\
B./
C.#
D.%
下列数据中不属于字符串的是(D
)。
A.‘ab’
B.’’‘perfect’’’
C.“52wo”
D.abc
使用(B
)符号对浮点类型的数据进行格式化。
A.%c
B.%f
C.%d
D.%s
字符串’Hi,Andy’中,字符’A’对应的下标位置为(C
)。
A.1
B.2
C.3
D.4
下列方法中,能够返回某个子串在字符串中出现次数的是(C
)。
A.length
B.index
C.count
D.find
下列方法中,能够让所有单词的首字母变成大写的方法是(B
)。
A.capitalize
B.title
C.upper
D.ljust
字符串的strip方法的作用是(A
)。
A.删除字符串头尾指定的字符 B.删除字符串末尾的指定字符
C.删除字符串头部的指定字符 D.通过指定分隔符对字符串切片
√
)√
)×
)√
)×
)×
)×
)文本
数据的类型。转义
输出。input
函数从标准输入(如键盘)读入一行文本。切片
指的是对操作的对象截取其中的一部分。开
型的,不包含结束位的值。阅读下面的程序,分析代码是否可以编译通过。如果编译通过,请列出运行的结果,否则说明编译失败的原因。
num_one = input("请输入一个整数:")
num_two = input("请输入一个整数:")
if num_one % num_two == 0:
print("验证码正确")
答:不能编译通过。因为num1和num2属于字符串类型,不能执行取余操作。
name = 'Steve Jobs'
print(name[6])
结果为:J
string_example = 'hello world itheima'
index = string_example.index("itheima",0,10)
print(index)
答:由于没有在字符串中找到子串,index方法默认会抛出ValueError异常。
string_example = " hello world "
print(string_example.strip())
结果为:Hello World (默认删除两头的空格)
string_example = "Hello" + 'Python'
print(string_example)
结果为:HelloPython
关于列表的说法,描述有错误的是(D
)。
A.list是一个有序集合,没有固定大小
B.list可以存放任意类型的元素
C.使用list时,其下标可以是负数
D.list是不可变的数据类型
以下程序的输出结果是(B
)。(提示:ord(“a”)==97)
list_demo=[1,2,3,4,5,'a','b']
print(list_demo[1],list_demo[5])
A.1 5
B.2 a
C.1 97
D.2 97
C
)。list_one=[4,5,6]
list_two=list_one
list_one[2]=3
A.[4,5,6]
B.[4,3,6]
C.[4,5,3]
D.A,B,C都不正确
list_demo=[1,2,1,3]
nums=set(list_demo)
for i in nums:
print(i,end="")
程序执行的结果为(D
)。
A.1213
B.213
C.321
D.123
下列选项中,正确定义了一个字典的是(D
)。
A.a=[‘a’,1,‘b’,2,‘c’,3]
B.b=(‘a’,1,‘b’,2,‘c’,3)
C.c={‘a’,1,‘b’,2,‘c’,3}
D.d={‘a’:1,‘b’:2,‘c’:3}
下列选项中,不能使用下标运算的是(C
)。
A.列表
B.元组
C.集合
D.字符串
下列程序执行后输出的结果为(A
)。
x = 'abc'
y = x
y = 100
print(x)
A.abc
B.100
C.97,98,99
D.以上三项均是错误的
下列删除列表中最后一个元素的函数是(B
)。
A. del B. pop C. remove C. cut
下列函数中,用于返回元祖中元素最小值的是(C
)。
A. len B. max C. min D.tuple
√
)√
)√
)√
)×
)×
)×
)字典
是Python中唯一的映射类型。字典
和列表
。not in
和in运算符。sort
方法实现。圆括号
存放元素,列表使用的是方括号。请简述元素、列表和字典的区别。
(1)、外形:列表是中括号括起来的数据;元组是圆括号括起来的数据;字典是花括号括起来的数据
(2)、存储结构:列表可以存储多个不同类型的数据,以逗号分隔;元组同样能存储多个不同类型的数据,以逗号分隔;字典能存储多个键值对,以逗号分隔,键是唯一的,值是任何类型的。
(3)、访问方式:列表可以通过下标索引访问元素,索引从0开始;元组可以通过下标索引访问值,索引从0开始;字典通过键来访问值。
(4)、是否可变类型:列表是可变类型,列表是不可变类型,字典是可变类型。
阅读下面的程序,分析代码是否能够编译通过。如果能编译通过,请列出运行的结果,否则请说明编译失败的原因。
tup = ('a','b','c')
tup[3] = 'd'
print(tup)
答:程序运行错误,元组不能使用下标增加元素。
dict_demo={
'a':1,'b':2,'c':3}
print(dict_demo['a'])
结果为:3
list_demo=[10,23,66,26,35,1,76,88,58]
list_demo.reverse()
print(list_demo[3])
list_demo.sort()
print(list_demo[3])
结果为:
1
26
def func():
print(x)
x=100
func()
执行上述语句后,输出的结果为(C
)。
A.0 B.100 C.程序出现异常 D.程序编译失败
下面关于函数的说法,错误的是(D
)。
A.函数可以减少代码的重复,使得程序更加模块化
B.在不同的函数中可以使用相同名字的变量
C.调用函数时,传入参数的顺序和函数定义时的顺序可以不同
D.函数体中如果没有return语句,也会返回一个None值
下列有关函数的说法中,正确的是(C
)。
A.函数的定义必须在程序的开头
B.函数定义后,其中的程序就可以自动执行
C.函数定义后需要调用才会执行
D.函数体与关键字def必须左对齐
下列函数调用使用的参数传递方式是(A
)。
result = sum(num1, num2, num3)
A.位置绑定 B.关键字绑定 C.变量类型绑定 D.变量名称绑定
使用(C
)关键字创建自定义函数。
A. function B. func C.def D.procedure
使用(D
)关键字声明匿名函数。
A. function B. func C.def D.lambda
×
)√
)√
)×
)√
)√
)×
)√
)逗号
分隔。return
语句可以返回函数值并退出函数。return
结束函数,从而选择性地返回一个值给调用方。不定长
参数。嵌套
调用。局部
变量。整个程序
范围内访问。global
关键字。阅读下面的程序,分析代码是否能够编译通过。如果能编译通过,请列出运行的结果,否则请说明编译失败的原因。
def func():
x = 200
x = 100
func()
print(x)
结果为:100
def func():
global x
x = 200
x = 100
func()
print(x)
结果为:200
def func():
x = 200
def func2():
print(x)
func2()
x = 100
func()
print(x)
结果为:
200
100
关于装饰器,下列说法错误的是(B
)。
A.装饰器是一个包裹函数
B.装饰器智能有一个参数
C.通过在函数定义的面前加上@符号阿和装饰器名,使得装饰器函数生效
D.如果装饰器带有参数,则必须在装饰函数的外层再嵌套一层函数
下列函数中,用于使用函数对制定序列进行过滤的是(C
)。
A.map函数 B.select函数 C.filter函数 D.reduce函数
下列选项中,不能作为filter函数参数的是(D
)。
A.列表 B.元组 C.字符串 D.整数
阅读下面一段程序:
def foo():
a = 1
def bar():
a = a + 1
return a
return bar
print(foo()())
上述程序执行的结果为(A
)。
A.程序出现异常
B.2
C.1
D.没有输出结果
×
)×
)×
)√
)√
)×
)×
)√
)√
)×
)√
)闭包
。函数
。被修饰的函数
。@
符号,实现对函数的包装。内嵌
函数。map
函数会根据提供的函数对制定的序列做映射。None
补齐。filter
函数会对制定序列执行过滤操作。布尔
值。两
个参数的函数,该函数不能为None。请简述闭包满足的三个条件。
(1)、存在于嵌套关系的函数中;
(2)、嵌套的内部函数引用了外部函数的变量;
(3)、嵌套的外部函数会将内部函数名作为返回值返回。
请简述装饰器的应用场景。
(1)、引入日志;
(2)、函数执行时间统计;
(3)、执行函数前预备处理;
(4)、执行函数后清理功能;
(5)、权限校验;
(6)、缓存。
请简述map、filter、reduce函数的作用。
(1)、map函数会根据提供的函数对指定的序列做映射。
(2)、filter函数会对指定序列执行过滤操作。
(3)、reduce函数会对参数序列中的元素进行累积。
阅读下面的程序,分析代码是否能够编译通过。如果能编译通过,请列出运行的结果,否则请说明编译失败的原因。
def funX():
x = 5
def funY():
nonlocal x
x += 1
return x
return funY
a = funX()
print(a())
print(a())
print(a())
结果为:
6
7
8
def funX():
x = 5
def funY():
nonlocal x
x += 1
return x
return funY
return funY
a = funX
print(a()())
print(a()())
print(a()())
结果为:
6
6
6
打开一个已有文件,然后在文件末尾添加信息,正确的打开方式为(C
)。
A.‘r’ B.‘w’ C.‘a’ D.‘w+’
假设文件不存在,如果使用open方法打开文件会报错,那么该文件的打开方式是下列哪种模式?(A
)
A.‘r’ B.‘w’ C.‘a’ D.‘w+’
假设file是文本文件对象,下列选项中,哪个用于读取一行内容?(C
)
A.file.read() B.file.read(200)
C.file.readline() D.file.readlines()
下列方法中,用于向文件中写出内容的是(B
)。
A.open B.write C.close D.read
下列荣方法中,用于获取当前目录的是(D
)。
A.open B.write C.Getcwd D.read
下列语句打开文件的位置应该在(D
)。
f = open('itheima.txt','w')
A.C盘根目录下
B.D盘根目录下
C.Python安装目录下
D.与源文件在相同的目录下
abcdef
阅读下面的程序:
file=open("abc.txt","r")
s=file.readline()
s1=list(s)
print(s1)
上述程序执行的结果为(C
)。
A.[‘abcdef’]
B.[‘abcdef\n’]
C.[‘a’,‘b’,‘c’,‘d’,‘e’,‘f’]
D.[‘a’,‘b’,‘c’,‘d’,‘e’,‘f’,’\n’]
√
)√
)√
)√
)×
)close()
方法关闭文件,以释放资源。offset
参数表示要偏移的字节数。列表
。文件夹
。tell
方法可以获取当前的读写位置。B
)异常。a
A.SyntaxError B.NameError C.IndexError D.KeyError
下列选项中,(A
)是唯一不再运行时发生的异常。
A.ZeroDivisionError B.NameError C.SyntaxError D.KeyError
当try语句中没有任何错误信息时,一定不会执行(C
)语句。
A.try B.else C.finaly D.except
在完整的异常语句中,语句出现的顺序正确的是(D
)。
A.try---->except----->else---->finally
B.try---->else---->except----->finally
C.try---->except----->finally—>else
D.try----->else---->else----->except
下列选项中,用于触发异常的是(A
)。
A.try B.catch C.raise D.except
关于抛出异常的说法中,描述错误的是(C
)。
A.当raise指定异常的类名时,会隐式地创建异常类的实例
B.显式地创建异常类实例,可以使用raise直接引发
C.不带参数的raise语句,只能引发刚刚发生过的异常
D.使用raise抛出异常时,无法指定描述信息
关于抛出异常的说法中,描述错误的是(D
)。
A.当raise指定异常的类名时,会隐式地创建异常类的实例
B.显式地创建异常类实例,可以使用raise直接引发
C.不带参数的raise语句,只能引发刚刚发生过的异常
D.使用raise抛出异常时,无法指定描述信息
√
)×
)×
)√
)√
)√
)Exception
子类。索引
时,会引发IndexError异常。finally
子句。assert
语句会触发AssertionError异常。except
的try语句中使用else语句,会引发语法错误。下列关键字中,用来引入模块的是(C
)。
A.include B.from C.import D.continue
关于引入模块的方式,错误的是(D
)。
A.import math
B.from fib import fibnacci
C.form math import *
D.from * import fib
关于__name__的说法,下列描述错误的是(A
)。
A.它是Python提供的一个方法
B.每个模块内部都有一个__name__属性
C.当它的值为’__main__‘时,表示模块自身在运行
D.当它的值不为’__main__'时,表示模块被引用
×
)√
)√
)√
)×
)random. randint
。文件
的名字。__name__
属性,使程序块智能在模块自身运行时执行。包
中。安装
。path
变量。关于面向过程和面向对象,下列说法错误的是(B
)。
A.面向过程和面向对象都是解决问题的一种思路
B.面向过程是基于面向对象的
C.面向过程强调的是解决问题的步骤
D.面向对象强调的是解决问题的对象
关于类和对象的关系,下列描述正确的是(D
)。
A.类和面向对象的核心
B.类是现实中事物的个体
C.对象是根据类创建的,并且一个类只能对应一个对象
D.对象描述的是现实的个体,它是类的实例
构造方法的作用是(C
)。
A.一般成员方法 B.类的初始化
C.对象的初始化 D.对象的建立
构造方法是类的一个特殊方法,Python中它的名称为(C
)。
A.与类同名 B._construct C._init_ D. init
Python类中包含一个特殊的变量(A
),它表示当前对象自身,可以访问类的成员。
A.self B.me C.this D.与类同名
下列选项中,符合类的命名规范的是(A
)。
A.HolidayResort
B.Holiday Resort
C.hoildayResort
D.hoilidayresort
Python中用于释放类占用资源的方法是(B
)。
A.__init__
B.__del__
C._del
D.delete
×
)×
)×
)√
)×
)√
)class
关键字来声明一个类。对象
,然后调用其方法解决问题。self
参数,位于参数列表的开头。__init__
的构造方法,实现让类的对象完成初始化。参数
设置。阅读下面的程序,分析代码是否能够编译通过。如果能编译通过,请列出运行的结果,否则请说明编译失败的原因。
class Person:
def __init__(self, name):
self.name = name
def __str__(self):
return "我的名字是" + self.name
person = Person("小明")
print(person)
结果为:我的名字是小明
class Person:
def __del__(self):
print("--del--")
person = Person()
del person
print("--end--")
结果为:
--del–
--end–
Python中定义私有属性的方法是(D
)。
A. 使用private关键字 B.使用public关键字
C.使用__XX__定义属性名 D.使用__XX定义属性名
下列选项中,不属于面向对象程序设计的三个特征的是(A
)。
A.抽象 B.封装 C. 继承 D.多态
以下C类继承A类和B类的格式中,正确的是(C
)。
A. class C A,B: B. class C(A:B) C.class C(A,B) D.class C A and B:
下列选项中,与class Person等价的是(C
)。
A. class Person(Object) B. class Person(Animal)
C. class Person(object) D. class Person: object
下列关于类属性和示例属性的说法,描述正确的是(B
)。
A.类属性既可以显示定义,又能在方法中定义
B.公有类属性可以通过类和类的实例访问
C.通过类可以获取实例属性的值
D.类的实例只能获取实例属性的值
下列选项中,用于标识为静态方法的是(C
)。
A.@classmethood B.@instancemethod
C.@staticmethod D.@privatemethod
下列方法中,不可以使用类名访问的是(A
)。
A.实例方法 B.类方法 C.静态方法 D.以上3项都不符合
√
)×
)√
)×
)√
)×
)√
)√
)下划线
,就表明它是私有属性。父类
。私有
属性和方法是不能被子类继承的,更不能被子类访问。多
继承。重写
从父类继承的方法。super()
可以成功地访问父类的成员。类
方法。@classmethod
来标识。请简述如何保护类的属性。
(1)、把属性定义为私有属性,即在属性名的前面加上两个下划线;
(2)、添加用于设置或者获取属性值的两个方法供外界调用。
什么是继承?
类的继承是指在一个现有类的基础上构建一个新的类,构建出来的新类被称作子类,现有类被称作父类,子类会自动拥有父类的属性和方法。
请简述私有属性无法访问的原理。
当在一个类的内部定义了私有方法或者私有属性的时候,Python在运行的过程中,把属性或者方法的名字进行了修改,即在属性或者方法名称的前面加上“_类名”,导致原有的方法无法访问到。
什么是多态?
在Python中,多态是指在不考虑对象类型的情况下使用对象。
请简述实例方法、类方法和静态方法的区别。
(1)、类方法需要使用@classmethod进行标识,该方法可以访问类属性,无法访问实例属性,可以通过类实例和类进行调用。
(2)、静态方法使用@staticmethod进行标识,该方法无法访问实例属性和类属性,起到类似于函数的作用,使用类或者类实例进行调用。
(3)、实例方法直接在类中使用def进行定义,可以访问其实例属性和类属性,使用类实例进行调用。
(4)、如果要修改实例属性的值,就直接使用实例方法;如果要修改类属性的值,就直接使用类方法;如果是辅助功能,比如打印菜单,这时可以考虑使用静态方法,可以在不创建对象的前提下使用。
请简述Python中以下划线开头的变量名的特点。
在Python中,以下划线开头的变量名有着特殊的含义,尤其是在类的定义中。用下划线作为变量前缀和后缀来表示类的特殊成员:
(1)、_xx:这样的对象叫做保护变量,不能用from module import *导入,只有类对象和子类对象能够访问这些变量。
(2)、__xx__:系统定义的特殊成员名字。
(3)、__xx:类中的私有成员,只有类对象自己能访问,子类对象也不能访问到这个成员,但在对象外部可以通过“对象名.__类名__ xx”这样特殊的方式来访问。Python中没有纯粹的C++意义上的私有成员。