最近为了帮助女朋友准备Python期末考试,找了一份试卷并做了一个解析,现在与大家分享一下。试卷来源:中国大学MOOC(猴博士爱讲课)
一、单项选择题
1. 以下变量命名正确的是(C)
A. &a B. 1b C._ c D. for
考点:
1、python变量名大小写敏感(python变量名区分大小写,也就是Student和student在python语言中代表两个不同的名字。)
2、python的变量名字中可以包含英文、下划线、数字,但是不能以数字开头,也就是说,student_id、student1、student_1、student、_student、_等都是合理的命名,但是1student就是非法的命名。
3、不能使用Python的关键字(例如
if
、for
、while
等)作为变量名、函数名或类名。解析:
A. &a:变量名不能以特殊字符
&
开头,不合法。B. 1b:变量名不能以数字开头,不合法。
C. _c:这是一个合法的变量名,以
_
开头,后面跟着字母或数字,符合Python的命名规则。D. for:
for
是Python的关键字,不能用作变量名。
2. Python 表达式中,可以控制运算优先顺序的是(A)
A. 圆括号() B. 尖括号<> C. 方括号[] D. 大括号{}
解析:
在Python中,圆括号
()
可以用来控制表达式的运算优先级。当一个表达式中存在多个运算符时,Python 根据运算符的优先级进行计算。例如:
a = 2 + 3 * 4
根据默认的运算符优先级,乘法运算
3 * 4
会先于加法运算2 + 12
,所以 a的值为14
a = (2 + 3) * 4
在这种情况下,先进行加法运算,得到5
,然后乘以4
,所以a 的值为20
3. 已知 a=1,b=3,执行 b*=a+2 后,b 的值是(C)
A. 3 B. 5 C. 9 D. 15
解析:
这条语句相当于
b = b * (a + 2)
4. print(type([1,2,3,4]))的输出结果是(B )
A. <class 'tuple'> B. <class 'list'> C. <class 'set'> D. <class 'dict'>
解析:
逐步分析这个表达式
print(type([1,2,3,4]))
。
[1, 2, 3, 4]
是一个包含整数的列表。
type([1, 2, 3, 4])
表示获取[1, 2, 3, 4]
这个列表的类型。
print(type([1, 2, 3, 4]))
则打印出获取到的类型。A.
<class 'tuple'>
(元组)元组使用圆括号
()
定义,元素之间用逗号分隔。元组是不可变的,意味着一旦创建,其内容不可更改。example_tuple = (1, 2, 3) print(type(example_tuple)) # 输出 <class 'tuple'>
B.<class 'list'>
(列表)
列表使用方括号[]
定义,元素之间用逗号分隔。列表是可变的,可以动态地添加、删除或修改其中的元素。example_list = [1, 2, 3] print(type(example_list)) # 输出 <class 'list'>
C.
<class 'set'>
(集合)
集合使用花括号{}
定义,元素之间同样用逗号分隔。集合是无序且不重复的集合元素。example_set = {1, 2, 3} print(type(example_set)) # 输出 <class 'set'>
D.
<class 'dict'>
(字典)
字典使用花括号{}
定义,元素以键-值对的形式表示,键和值之间用冒号:
分隔,键-值对之间用逗号分隔。字典是可变的,可以动态地添加、删除或修改其中的键值对example_dict = {'a': 1, 'b': 2, 'c': 3} print(type(example_dict)) # 输出 <class 'dict'>
5.以下数据类型中,(A)是不可变类型
A. 元组 B. 列表 C. 字典 D. 集合
解析:
元组是不可变的数据类型,一旦创建后,无法修改元组的元素
列表是可变的数据类型,可以通过增加、删除或修改元素来改变列表的内容
字典是可变的数据类型,可以通过添加、删除或修改键值对来改变字典的内容
集合是可变的数据类型,可以通过添加或删除元素来改变集合的内容
6.已知 s="教 Python",则 s[3:-2]的值为(D)
A. "h" B. "tho" C. "ho" D. "th"
解析:
给定字符串 s = "教 Python",我们来分析每个索引位置对应的字符:
s[0] = '教'
s[1] = 'P'
s[2] = 'y'
s[3] = 't'
s[4] = 'h'
s[5] = 'o'
s[6] = 'n'
根据切片的语法
s[start:end]
s[3:-2]
中,3
表示从索引为 3 的字符开始,即 "t"
-2
表示倒数第二个字符,即'o'
因此,切片
s[3:-2]
包含从索引 3 到倒数第二个字符之前的部分,即't'
到'o'
,但不包括倒数第二个字符本身所以,
s[3:-2]
的值是"th"
7.下面代码的输出结果是(C) A. 无敌 B. 寂寞 C. 空虚 D. 顶峰
x=10
if x<0 or x>=20:
print("无敌")
elif 0<=x<5:
print("寂寞")
elif x in [11, 30, 10]:
print("空虚")
else:
print("顶峰")
解析:
首先,我们评估
if
条件语句:
x < 0 or x >= 20
:这个条件是False
,因为x = 100
,不满足x < 0
,且不满足x >= 20
。然后,我们进入
elif
分支:elif 0 <= x < 5
:这个条件也是False
,因为x = 10
,不满足0 <= x < 5
。接着
elif x in [11, 30, 10]
:这个条件也是True
,x = 10
在列表[11, 30, 10]
中。
10. 下面的语句能创建一个空集合的是(C)
A. a=[] B. a={} C. a=set() D. a=()
解析:
在Python中,创建一个空集合的正确方式是使用
set()
函数A.
a = []
:这会创建一个空列表,而不是集合。列表使用方括号[]
。B.
a = {}
:这实际上创建了一个空字典,而不是集合。在Python中,空的花括号{}
表示空字典。D.
a = ()
:这会创建一个空的元组,而不是集合。元组使用圆括号()
。
11.for 或者 while 与 else 搭配使用时,关于执行 else 语句块描述正确的是( B)
A. 仅循环非正常结束后执行(以 break 结束)
B. 仅循环正常结束后执行
C. 总会执行
D. 永不执行
考点:
当
for
或while
循环与else
搭配使用时,关于执行else
语句块的描述如下:如果循环是正常结束(即没有被
break
中断),则else
语句块会被执行。如果循环是由于遇到
break
语句而非正常结束,则else
语句块不会被执行。举例:
正常结束:
for i in range(5): print(i) else: print("循环结束")
在这个例子中,for 循环会迭代 range(5),即从 0 到 4。因为没有 break 语句中断循环,所以循环正常结束。因此,会执行 else 语句块,输出 "循环结束"
非正常结束:
for i in range(5): if i == 3: break print(i) else: print("循环结束")
在这个例子中,
for
循环迭代range(5)
,但是当i == 3
时,执行break
语句中断了循环。因此,循环是非正常结束的,else
语句块不会被执行。
12. float(5)的结果是(C)
A. 5 B. "5" C. 5.0 D. '5'
float(5)
的结果是将整数 5 转换为浮点数
A. 5
:整数 5。
B. "5"
:包含字符"5"
的字符串。
C. 5.0
:浮点数,即带有小数点的数值。
D. '5'
:包含字符'5'
的字符串。
13.循环语句中,能提前进入下一次循环的语句是(D)
A. for 语句 B. break 语句 C. while 语句 D. continue
A. for 语句
:for
语句用于遍历可迭代对象的元素,不是一个可以直接控制循环流程的语句。
B. break 语句
:break
语句用于终止当前循环,退出循环体,不会进入下一次循环。
C. while 语句
:while
语句定义了一个条件循环,不是一个用于控制进入下一次循环的语句。
D. continue
:continue
语句用于跳过当前循环块中剩余的代码,直接进入下一次循环的迭代。
14. 下面代码的输出结果是 (C)
A.2 B.0 C.6 D.3
def yunsuan(a, b=3)
print(a*b)
yunsuan(2)
函数定义:
def yunsuan(a, b=3): print(a * b)
这行代码定义了一个名为
yunsuan
的函数,它有两个参数a
和b
。其中,b
的默认值设置为3
,这意味着如果调用函数时不提供b
的值,它将默认为3
。
print(a * b)
:这一行代码在函数体内部,计算并打印a * b
的结果。在函数调用yunsuan(2)
中,a
的值是2
,而由于没有显式提供b
的值,因此b
将使用默认值3
。因此,表达式2 * 3
将会计算结果并打印出来。
15. 下面打开文件的语句里错误的是 (C)
A. a=open("wenjian.txt", "rb+")
B. a=open("D:\\data\\wenjian.txt", "rb+")
C. a=open("D:\data\wenjian.txt", "rb+")
D. a=open("D:/考试不挂/wenjian.txt", "rb+")
C.
a=open("D:\data\wenjian.txt", "rb+")
这个选项中,路径字符串中的反斜杠
\
并没有被转义或者使用原始字符串。在 Python 中,\d
会被解释为转义字符序列,这会导致字符串不是预期的路径。
二.填空题
1.已知 a=9/3,那 print(a)的输出结果是3.0
2.已知 a="11"+"12",print(a)的输出结果是1112
在 Python 中,当对两个字符串进行加法操作时,它们会被连接成一个新的字符串。这种操作称为字符串拼接
3.{1, 2, 3} | {2, 3, 4} 的值为: {1, 2, 3, 4}
在 Python 中,
{1, 2, 3} | {2, 3, 4}
表示集合的并集操作。集合是一种无序且元素唯一的数据结构。并集操作
|
将两个集合的所有元素合并成一个新的集合,同时去除重复的元素。因此,{1, 2, 3} | {2, 3, 4}
的结果是一个包含元素1, 2, 3, 4
的新集合
4.转义字符“\n”的含义是回车换行
5.使用 global 关键字,可以在函数内给全局变量赋值
6.表达式 3 >= 2 的结果是True
7.print(chr(ord("B")))的输出结果是B
ord("B")
返回字符"B"
的 Unicode 码点,即整数值。
chr(66)
返回 Unicode 码点66
对应的字符,即"B"
8. 在 Python 中用 None 表示空类型
9. 在 Python 标准库 math 中,用来计算平方根的函数是 sqrt()
10. Python 语言的单行注释以 # 开头
单行注释
# 这是单行注释 x = 5 # 可以放在代码行的末尾
多行注释
""" 这是 多行 注释 """
三、程序阅读题
1.请写出下面程序执行后,程序的输出结果。
a = "豹子讲Python!".upper()
b = a[3:−1]
c = b+"成绩"
d = "科目:{},{}".format(b, c)
print(d)
a = "豹子讲 Python!".upper() # 将字符串转换为大写
b = a[3:-1] # 取字符串切片,从索引3开始到倒数第2个字符(不包括最后一个字符)
c = b + "成绩" # 拼接字符串
d = "科目:{},{}".format(b, c) # 格式化字符串
print(d) # 输出结果科目:PYTHON,PYTHON 成绩
2.阅读如下代码,代码运行后,b= [9, 7, 4, 1]
a = [9, 1, 5, 4, 11]
# 修改列表 a 的第三个元素(索引为2)为7
a[2] = 7
# 在列表 a 的末尾追加元素6
a.append(6)
# 切片操作,从列表 a 中取出从开头到倒数第3个元素(不包括倒数第3个元素)的子列表
b = a[:-2]
# 对列表 b 进行降序排序
b.sort(reverse=True)
3. 试写出下面程序运行后,屏幕会输出的内容
i = 5
while i > 1:
i = i - 1
if i == 4:
continue
if i == 2:
break
print(i)
i = i * 2
print(i)
'''
答案:
3
4
'''
四、编程题
1. 编写程序,使用自定义函数,要求如下:
1) 函数名称为:qiu;
2) qiu 函数的参数:两个,正整数 a 与 b;
3) 执行函数后,会输出 a+b 的值;
4) 函数的返回值是 a-b 的结果。
def qiu(a, b):
# 输出 a+b 的值
print("a + b =", a + b)
# 返回 a-b 的结果
return a - b
# 测试函数
a = 10
b = 5
c = qiu(a, b)
print("a - b =", c)
2.编写代码完成如下功能:
1) 初始化建立字典 a,包含内容是:"猴博士": 100, "傻狍子": 0 ;
2) 向字典 a 中添加键值对"莎勒巴·鸡": 10 ;
3) 修改字典 a 中"莎勒巴·鸡"对应的值为 12 ;
4) 删除字典 a 中"傻狍子"对应的键值对 ;
5) 输出字典 a 里,内容大于 60 的名字 。
# 1. 初始化建立字典 a
a = {
"猴博士": 100,
"傻狍子": 0
}
# 2. 向字典 a 中添加键值对 "莎勒巴·鸡": 10
a["莎勒巴·鸡"] = 10
# 3. 修改字典 a 中 "莎勒巴·鸡" 对应的值为 12
a["莎勒巴·鸡"] = 12
# 4. 删除字典 a 中 "傻狍子" 对应的键值对
if "傻狍子" in a:
del a["傻狍子"]
# 5. 输出字典 a 中值大于 60 的键名
for name, value in a.items():
if value > 60:
print(name)
3.已知我们要花 100 元,购买鸡、鸭、鹅,已知鸡 3 元一只,鸭 2 元一只,鹅 0.5 元一只, 我们共要买 100 只,请编程输出满足要求的鸡鸭鹅只数
# 思路:
# 设鸡、鸭、鹅的数量分别为 x, y, z,则有以下方程:
# x + y + z = 100 (总数量为100只)
# 3x + 2y + 0.5z = 100 (总花费为100元)
# 使用两层循环遍历可能的组合,找到满足条件的组合
for x in range(101): # 鸡的数量 x 可能从 0 到 100
for y in range(101): # 鸭的数量 y 可能从 0 到 100
z = 100 - x - y # 计算鹅的数量 z
# 判断是否满足总花费为 100 元的条件
if 3*x + 2*y + 0.5*z == 100:
print(f"鸡:{x} 只,鸭:{y} 只,鹅:{z} 只")