前言
本文整理了填空、选择、判断等一些课后习题答案,具体的编程题可以见:
Python快速编程入门课后程序题答案
。
第一章
一、填空题
Python是一种面向
对象
的高级语言。
Python可以在多种平台运行,这体现了Python语言的
可移植
特性。
Python源代码被解释器转换后的格式为
字节码
。
Python 3.x 默认使用的编码是
UTF-8
。
二、判断题
Python是开源的,它可以被一直到许多平台上。(
√
)
Python的优点之一是具有伪代码的本质。(
√
)
Python可以开发Web程序,也可以管理操作系统。(
√
)
Mac系统自带Python开发环境。(
√
)
Python自带的shell,其性能由于IPython。(
×
)
我们编写的Python代码在运行过程中,会被编译成二进制代码。(
×
)
Python程序被解释器转换后的文件格式后缀名为.pyc。(
√
)
Python 3.x 版本的代码完全兼容 Python 2.x。(
×
)
PyCharm是开发Python的集成开发环境。(
√
)
代码print(3,4)是Python 2.x的输出格式。(
×
)
三、选择题
下列选项中,不属于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来使用。
第二章
一、填空题
在Python中,int表示的数据类型是
整型
。
布尔类型的值包括
True
和
False
。
Python的浮点数占
8
个字节。
如果要在计算机中表示浮点数
1.2
×
1
0
5
1.2\times10^5
1
.
2
×
1
0
5
,则表示方法为
1.2e5
。
00001000>>2的结果是
00000010
。
若a=20,那么bin(a)的值为
0b10100
。
如果想测试变量的类型,可以使用
type()
来实现。
若a=1,b=2,那么(a or b)的值为
1
。
若a=10,b=20,那么(a and b)结果为
20
。
4.34E5表示的是
4.34×10^5
。
二、判断题
Python使用符号#表示单行注释。(
√
)
标识符可以以数字开头。(
×
)
type()方法可以查看变量的数据类型。(
√
)
Python中的代码块使用缩进来表示。(
√
)
Python中的多行语句可以使用反斜杠来实现。(
×
)
Python中标识符不区分大小写。(
×
)
Python中的标识符不能使用关键字。(
√
)
使用help()命令可以进入帮助系统。(
√
)
Python中的成员运算符用于判断制定序列中是否包含某个值。(
√
)
比较运算符用于比较两个数,其返回的结果智能是True或False。(
√
)
三、选择题
下列选项中,(
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.**
四、简答题
简述Python中标识符的命名规则。
•标识符由字母、下划线和数字组成,且数字不能开头。
•python中的标识符是区分大小写的。
•python中的标识符不能使用关键字。
简述Python中的数字类型。
int(整型)、long(长整型)、float(浮点数)、complex(复数)
第三章
一、填空题
在循环体中使用
break
语句可以跳出循环体。
elif
语句是else语句和if语句的组合。
在循环体中可以使用
continue
语句跳过本次循环后面的代码,重新开始下一次循环。
如果希望循环是无限的,我们可以通过设置条件表达式永远为
True
来实现无限循环。
Python中的
pass
表示的是空语句。
二、判断题
elif可以单独使用。(
×
)
pass语句的出现是为了保持进程结构的完整性。(
√
)
在Python中没有switch-case语句。(
√
)
每个if条件后面都要使用冒号。(
√
)
循环语句可以嵌套使用。(
√
)
三、选择题
下列选项中,会输出1,2,3三个数字的是(
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
已知x=10,y=20,z=30:以下语句执行后x,y,z的值是(
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
下列Python语句正确的是(
D
)。
A.min=x if x
B.max=x>y?x:y
C.if(x>y) print x
D.while True:pass
四、简答题
简述Python中pass语句的作用。
Python中的pass是空语句,它的出现是为了保持程序结构的完整性。
pass不做任何事情,一般用做占位语句。
简述break和continue的区别。
break语句用于结束整个循环;
continue的作用是用来结束本次循环,紧接着执行下一次的循环。
第四章
一、单选题
当需要在字符串中使用特殊字符的时候,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.通过指定分隔符对字符串切片
二、判断题
无论使用单引号或者双引号包含字符,使用print输出的结果都一样。(
√
)
无论input接收任何的数据,都会以字符串的方式进行保存。(
√
)
Python中只有一个字母的字符串属于字符类型。(
×
)
使用下标可以访问字符串中的每个字符。(
√
)
Python中字符串的下表是从1开始的。(
×
)
切片选区的区间范围是从起始位开始的,到结束位结束。(
×
)
如果index方法没有在字符串中找到子串,则会返回-1。(
×
)
三、填空题
字符串是一种表示
文本
数据的类型。
像双引号这样的特殊符号,需要对它进行
转义
输出。
Python3提供了
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
执行下面的操作后,list_two的值为(
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
二、判断题
列表的索引是从0开始的。(
√
)
通过insert方法可以在制定位置插入元素。(
√
)
使用下标能修改列表的元素。(
√
)
列表的嵌套指的是一个列表的元素是另一个列表。(
√
)
通过下标索引可以修改和访问元祖的元素。(
×
)
字典中的值只能够是字符串类型。(
×
)
在字典中,可以使用count方法计算键值对的个数。(
×
)
三、填空题
Python序列类型包括字符串、列表和元组三种,
字典
是Python中唯一的映射类型。
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'])
结果为:1
代码三:
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.程序编译失败
下面关于函数的说法,错误的是(
C
)。
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的函数代表返回None。(
√
)
默认情况下,参数值和参数名是跟函数声明定义的顺序匹配的。(
√
)
函数定义完成后,系统会自动执行其内部的功能。(
×
)
函数体以冒号起始,并且是缩进格式的。(
√
)
带有默认值的参数一定位于参数列表的末尾。(
√
)
局部变量的作用域是整个程序,任何时候使用都有效。(
×
)
匿名函数就是没有名字的函数。(
√
)
三、填空题
函数可以有多个参数,参数之间使用
逗号
分隔。
使用
return
语句可以返回函数值并退出函数。
通过
return
结束函数,从而选择性地返回一个值给调用方。
函数能处理比声明时更多的参数,它们是
不定长
参数。
在函数里面调用另外一个函数,这就是函数
嵌套
调用。
在函数的内部定义的变量称作
局部
变量。
全局变量定义在函数外,可以在
整个程序
范围内访问。
如果想在函数中修改全部变量,需要在变量的前面加上
global
关键字。
四、简答题
请简述局部变量和全局变量的区别。
局部变量:
(1)
、函数内部定义的变量;
(2)
、作用域是函数的内部。
全局变量:
(1)
、函数外部定义的变量;
(2)
、作用域是整个程序。
请简要说明函数定义的规则。
(1)
、以def关键字开头,后面接函数标识符名称和圆括号;
(2)
、给函数起名字的时候,规则跟变量的名字是一样的;
(3)
、任何传入参数和自变量必须放在圆括号中间;
(4)
、函数的第一行语句可以选择性地使用文档字符串—用于存放函数说明;
(5)
、函数内容以冒号起始,并且缩进;
(6)
、return [表达式] 结束函数,选择性地返回一个值给调用方。不带表达式的return相当于返回 None。
五、程序分析题
阅读下面的程序,分析代码是否能够编译通过。如果能编译通过,请列出运行的结果,否则请说明编译失败的原因。
代码一:
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.程序出现异常