内容正文:
《Python 程序编写入门》高等教育出版社
第4单元 “引用”,与让编程事半功倍
时间:90分钟 总分:100分
班级___________ 姓名___________ 学号___________ 成绩_____________ 一、选择题(本大题共20小题,每小题2分,共40分)
1.以下关于 Python 模块说法错误的是( )
A. 模块可包含函数、类、变量等
B. 一个 .py 文件就是一个模块
C. 导入模块后,通过 模块名.成员 访问其内容
D. 导入模块时,模块代码不会执行
2.执行 s = 'hello'; print(s.capitalize()) ,结果是( )
A. 'HELLO'
B. 'Hello'
C. 'hELLO'
D. 报错
3.以下能获取当前工作目录的是( )
A. os.getcwd()
B. os.chdir()
C. os.listdir()
D. os.path.abspath()
4. 关于 Python 函数参数,以下描述错误的是( )
A. 位置参数必须按顺序传入
B. 关键字参数可打乱顺序传入
C. 可变参数(*args)接收任意数量位置参数
D. 可变参数(**kwargs)接收任意数量位置参数
5.执行 import time; print(time.strftime('%Y-%m-%d')) ,说法正确的是( )
A. 输出当前日期,格式如 2025-08-26
B. 输出固定日期 2025-08-26
C. 语法错误,strftime 参数格式不对
D. 报错,需额外导入模块
6.p = [1,2,3]; print(list(reversed(p))) 的运行结果为( )
A. [1,2,3]
B. [3,2,1]
C. 迭代器对象(非列表)
D. 报错
7.关于 lambda 匿名函数,以下错误的是( )
A. 可作为参数传递给其他函数
B. 能包含复杂的多行逻辑
C. 语法格式为 lambda 参数: 表达式
D. 返回值是表达式计算结果
8.调用 math.sqrt(4) ,说法正确的是( )
A. 返回 2.0 ,sqrt 是求平方根函数
B. 返回 2 ,sqrt 是求平方根函数
C. 语法错误,需 import math 后使用
D. 返回 16 ,sqrt 是平方函数
9.以下导入模块语法,正确的是( )
A. import random as Guo
B. form random import *
C. import random
D. 以上都对
10."%".join("ab") 的运行结果为( )
A. a%b
B. ab%
C. %ab
D. a%ab
11."ababc".center(4, "%") 的运行结果为( )
A. ababc
B. %ab%
C. ab%c
D. %ababc%
12."ab%senter%d" % ("%", 4) 的运行结果为( )
A. ab%enter4
B. a'b
C. %ab%
D. %ab%enter4
13.guo = lambda x: x - 1; print(guo(3)) 的运行结果为( )
A. 4
B. 2
C. 报错
D. 无显示
14.下列标准自定义函数命名正确的是( )
A. 3w
B. _3w
C. 3%
D. wu-o
15.以下代码,运行后输出结果是( )
def func(x):
return x * 2
result = func(5)
print(result)
A. 5
B. 10
C. None
D. 报错
16.模块os 中,用于获取当前工作目录的函数是( )
A. os.getcwd()
B. os.listdir()
C. os.path.join()
D. os.remove()
17.执行from turtle import * ,以下能绘制直线的函数是( )
A. forward
B. circle
C. color
D. penup
18.以下不属于Python内置函数的是( )
A. print
B. input
C. my_func
D. len
19.Python中定义函数的关键字是( )
A. func
B. define
C. def
D. function
20.代码def func(): pass ,pass 的作用是( )
A. 结束函数
B. 占位,使语法完整
C. 无意义
D. 报错
二、填空题(本大题共20小题,每小题2分,共40分)
1.Python 中,判断字符串 s 是否以 'py' 开头,可用 ______ 方法。
2.执行 import random; random.shuffle([1, 2, 3]) ,列表会 ______ 。
3.定义函数 def multiply(a, b): return a * b ,用 map 函数对 [1, 2] 和 [3, 4] 逐元素相乘,写法是 ______ 。
4.Python 中,获取当前脚本所在目录的路径,可用 os 模块的 ______ 方法。
5.列表推导式 [x*2 for x in [1, 2, 3]] 的结果是 ______ 。
6.执行 import calendar; print(calendar.isleap(2024)) ,结果是 ______ 。
7.定义函数 def func(*args): print(args) ,调用 func(1, 2, 3) ,args 的类型是 ______ 。
8.执行 s = ' hello '; s = s.strip(); print(s) ,结果是 ______ 。
9.Python 中,模块 os 里,删除文件的方法是 ______ 。
10.定义匿名函数 lambda x: x**2 ,调用时传入 3 ,结果是 ______ 。
11."python".endswith("on") 的运行结果是______ 。
12."abca".split("a") 的运行结果是______ (填列表形式)。
13.turtle模块中,结束画笔绘制并保持绘图窗口的函数是______。
14.os模块中,创建新目录"test_dir"的函数是______。
15. turtle模块中,设置画笔颜色为红色的函数是______。
16. calendar模块中,获取2025年全年日历的函数是______。
17. time模块中,将时间戳1716200000.0转换为本地时间对象的函数是______。
18.datetime模块中,计算当前时间3小时后的时间,需使用的类是______。
19.turtle模块中,让画笔顺时针旋转90度的函数是______。
20. string模块中,包含所有数字字符的常量是______。
三、程序编写题(本大题共4小题,每小题5分,共20分)
1.编写函数,生成指定行数的杨辉三角(如输入5 ,输出5行杨辉三角 )。
2.编写函数,接收字符串,返回其逆序字符串及长度(如输入"abc" ,返回"cba", 3 )。
3.一个数如果恰好等于它的因子之和,这个数就是“完数” 。用自定义函数的方法找出1000以内的所有完数。
4.编写函数decimal_to_binary(n),将十进制整数 n 转换为二进制字符串(n≥0)。
学科网(北京)股份有限公司
$$
《Python 程序编写入门》高等教育出版社
第4单元 “引用”,与让编程事半功倍
时间:90分钟 总分:100分
班级___________ 姓名___________ 学号___________ 成绩_____________ 一、选择题(本大题共20小题,每小题2分,共40分)
1.以下关于 Python 模块说法错误的是( )
A. 模块可包含函数、类、变量等
B. 一个 .py 文件就是一个模块
C. 导入模块后,通过 模块名.成员 访问其内容
D. 导入模块时,模块代码不会执行
【答案】D
【解析】 导入模块时,模块顶层代码会执行(如变量定义、函数定义不执行,但 print 等语句会执行 );A、B、C 是模块正确特性,选 D 。
2.执行 s = 'hello'; print(s.capitalize()) ,结果是( )
A. 'HELLO'
B. 'Hello'
C. 'hELLO'
D. 报错
【答案】B
【解析】capitalize() 方法将字符串首字母大写,其余小写,'hello' 处理后为 'Hello' ,选 B 。
3.以下能获取当前工作目录的是( )
A. os.getcwd()
B. os.chdir()
C. os.listdir()
D. os.path.abspath()
【答案】A
【解析】os.getcwd() 获取当前工作目录路径;os.chdir() 改变工作目录;os.listdir() 列目录内容;os.path.abspath() 转换路径为绝对路径,选 A 。
4. 关于 Python 函数参数,以下描述错误的是( )
A. 位置参数必须按顺序传入
B. 关键字参数可打乱顺序传入
C. 可变参数(*args)接收任意数量位置参数
D. 可变参数(**kwargs)接收任意数量位置参数
【答案】D
【解析】**kwargs 接收任意数量 关键字参数 ,组成字典;*args 接收任意数量位置参数,组成元组,D 错误,选 D 。
5.执行 import time; print(time.strftime('%Y-%m-%d')) ,说法正确的是( )
A. 输出当前日期,格式如 2025-08-26
B. 输出固定日期 2025-08-26
C. 语法错误,strftime 参数格式不对
D. 报错,需额外导入模块
【答案】A
【解析】time.strftime('%Y-%m-%d') 按指定格式输出当前系统日期,%Y 是年,%m 是月,%d 是日,选 A 。
6.p = [1,2,3]; print(list(reversed(p))) 的运行结果为( )
A. [1,2,3]
B. [3,2,1]
C. 迭代器对象(非列表)
D. 报错
【答案】B
【解析】 reversed() 返回迭代器,list(reversed(p)) 将其转换为列表,实现列表元素反转,结果 [3,2,1] ,选 B 。
7.关于 lambda 匿名函数,以下错误的是( )
A. 可作为参数传递给其他函数
B. 能包含复杂的多行逻辑
C. 语法格式为 lambda 参数: 表达式
D. 返回值是表达式计算结果
【答案】B
【解析】lambda 是匿名函数,语法简洁,只能写 单行表达式 ,无法包含多行复杂逻辑,B 错误;A、C、D 是 lambda 函数正确特性 。
8.调用 math.sqrt(4) ,说法正确的是( )
A. 返回 2.0 ,sqrt 是求平方根函数
B. 返回 2 ,sqrt 是求平方根函数
C. 语法错误,需 import math 后使用
D. 返回 16 ,sqrt 是平方函数
【答案】A
【解析】math.sqrt() 用于计算平方根,返回浮点数;使用前需 import math ,计算 sqrt(4) 结果是 2.0 ,A 正确 。
9.以下导入模块语法,正确的是( )
A. import random as Guo
B. form random import *
C. import random
D. 以上都对
【答案】D
【解析】Python 中 import 模块名、import 模块名 as 别名、from 模块名 import * 都是合法导入语法,D 涵盖所有正确形式 。
10."%".join("ab") 的运行结果为( )
A. a%b
B. ab%
C. %ab
D. a%ab
【答案】A
【解析】join 用“%”连接“ab”的两个字符 a 和 b ,结果是 a%b 。
11."ababc".center(4, "%") 的运行结果为( )
A. ababc
B. %ab%
C. ab%c
D. %ababc%
【答案】A
【解析】 当 center 方法指定的宽度小于字符串本身长度时,直接返回原字符串,“ababc”长度是5,center(4, "%") 中4小于5,所以返回“ababc” 。
12."ab%senter%d" % ("%", 4) 的运行结果为( )
A. ab%enter4
B. a'b
C. %ab%
D. %ab%enter4
【答案】A
【解析】Python字符串格式化,%s 用于替换字符串,%d 用于替换整数,这里 "%", 4 分别替换对应占位符,得到 ab%enter4 。
13.guo = lambda x: x - 1; print(guo(3)) 的运行结果为( )
A. 4
B. 2
C. 报错
D. 无显示
【答案】B
【解析】lambda 是Python匿名函数,guo = lambda x: x - 1 定义了一个接收参数 x 并返回 x - 1 的函数,调用 guo(3) 时,返回 3 - 1 = 2 ,所以输出2 。
14.下列标准自定义函数命名正确的是( )
A. 3w
B. _3w
C. 3%
D. wu-o
【答案】B
【解析】Python函数命名规则:可以由字母、数字、下划线组成,不能以数字开头,不能包含特殊字符(除下划线 )。A以数字开头不行;C含特殊字符% 不行;D含特殊字符- 不行;B符合规则,以下划线开头,后续是数字和字母组合 。
15.以下代码,运行后输出结果是( )
def func(x):
return x * 2
result = func(5)
print(result)
A. 5
B. 10
C. None
D. 报错
【答案】B
【解析】函数func 接收参数x ,返回x * 2 ,调用func(5) 返回10 ,print 输出10 ,选B。
16.模块os 中,用于获取当前工作目录的函数是( )
A. os.getcwd()
B. os.listdir()
C. os.path.join()
D. os.remove()
【答案】A
【解析】os.getcwd() 获取当前工作目录;os.listdir() 列出目录内容;os.path.join() 拼接路径;os.remove() 删除文件,选A。
17.执行from turtle import * ,以下能绘制直线的函数是( )
A. forward
B. circle
C. color
D. penup
【答案】A
【解析】forward 函数让画笔向前移动绘制直线;circle 绘制圆形;color 设置颜色;penup 抬起画笔,选A。
18.以下不属于Python内置函数的是( )
A. print
B. input
C. my_func
D. len
【答案】C
【解析】print、input、len是Python内置函数,my_func是自定义函数,选C。
19.Python中定义函数的关键字是( )
A. func
B. define
C. def
D. function
【答案】C
【解析】Python使用def关键字定义函数,这是固定语法规则 。
20.代码def func(): pass ,pass 的作用是( )
A. 结束函数
B. 占位,使语法完整
C. 无意义
D. 报错
【答案】B
【解析】pass 是占位语句,用于函数体、循环等语法块需有内容但暂时无逻辑时,使代码语法完整,选B。
二、填空题(本大题共20小题,每小题2分,共40分)
1.Python 中,判断字符串 s 是否以 'py' 开头,可用 ______ 方法。
【答案】s.startswith('py')
【解析】startswith() 用于判断字符串前缀,常用于文件类型判断(如 .py 文件 )等场景 。
2.执行 import random; random.shuffle([1, 2, 3]) ,列表会 ______ 。
【答案】被随机打乱顺序
【解析】shuffle() 原地打乱列表元素顺序,无返回值,直接修改原列表 。
3.定义函数 def multiply(a, b): return a * b ,用 map 函数对 [1, 2] 和 [3, 4] 逐元素相乘,写法是 ______ 。
【答案】list(map(multiply, [1, 2], [3, 4]))
【解析】map 接收函数和可迭代对象,将函数应用于对应元素,结果转列表得 [3, 8] 。
4.Python 中,获取当前脚本所在目录的路径,可用 os 模块的 ______ 方法。
【答案】os.path.dirname(__file__)
【解析】__file__ 是当前脚本路径,os.path.dirname() 提取目录部分 。
5.列表推导式 [x*2 for x in [1, 2, 3]] 的结果是 ______ 。
【答案】[2, 4, 6]
【解析】遍历 [1, 2, 3] ,每个元素乘以 2,生成新列表 。
6.执行 import calendar; print(calendar.isleap(2024)) ,结果是 ______ 。
【答案】True
【解析】calendar.isleap() 判断年份是否为闰年,2024 能被 4 整除且不是整百年(或整百年能被 400 整除 ),是闰年,返回 True 。
7.定义函数 def func(*args): print(args) ,调用 func(1, 2, 3) ,args 的类型是 ______ 。
【答案】元组(tuple )
【解析】*args 接收任意数量位置参数,打包成元组 。
8.执行 s = ' hello '; s = s.strip(); print(s) ,结果是 ______ 。
【答案】'hello'
【解析】strip() 去除字符串两端空白字符(空格、换行等 ),中间保留 。
9.Python 中,模块 os 里,删除文件的方法是 ______ 。
【答案】os.remove('文件名')
【解析】os.remove() 用于删除指定路径的文件,删除目录用 os.rmdir()(需目录为空 ) 。
10.定义匿名函数 lambda x: x**2 ,调用时传入 3 ,结果是 ______ 。
【答案】9
【解析】匿名函数接收 x ,返回 x 的平方,3**2 = 9 。
11."python".endswith("on") 的运行结果是______ 。
【答案】True
【解析】endswith("on") 判断字符串是否以“on”结尾,“python”结尾是“on” ,返回 True 。
12."abca".split("a") 的运行结果是______ (填列表形式)。
【答案】['', 'bc', '']
【解析】以字符“a”为分隔符分割“abca” ,开头和结尾因“a”的位置会产生空字符串,所以结果是 ['', 'bc', ''] 。
13.turtle模块中,结束画笔绘制并保持绘图窗口的函数是______。
【答案】turtle.done()
【解析】turtle.done()用于阻塞程序,使绘图窗口保持显示(否则窗口会一闪而过),通常放在turtle绘图代码的最后,确保用户能看到绘制结果。
14.os模块中,创建新目录"test_dir"的函数是______。
【答案】os.mkdir("test_dir")
【解析】os.mkdir(path)用于创建单层目录,若父目录不存在会报错;若需创建多层目录(如"a/b/c"),需用os.makedirs("a/b/c")。
15. turtle模块中,设置画笔颜色为红色的函数是______。
【答案】turtle.color("red")(或turtle.pencolor("red"))
【解析】color(color)可同时设置画笔颜色和填充颜色;pencolor(color)仅设置画笔颜色,两者均支持字符串颜色名(如"red")或RGB值(如(1,0,0))。
16. calendar模块中,获取2025年全年日历的函数是______。
【答案】calendar.calendar(2025)
【解析】calendar.calendar(year)接收年份,返回该年全年日历的字符串,按月份分块显示,包含每个月的日期和星期分布,可直接打印。
17. time模块中,将时间戳1716200000.0转换为本地时间对象的函数是______。
【答案】time.localtime(1716200000.0)
【解析】time.localtime(timestamp)将时间戳转换为本地时区的struct_time对象(包含年、月、日、时等信息);若需转换为UTC时间,用time.gmtime(timestamp)。
18.datetime模块中,计算当前时间3小时后的时间,需使用的类是______。
【答案】datetime.timedelta
【解析】timedelta用于表示时间间隔,可通过timedelta(hours=3)创建“3小时”的间隔对象,再与当前时间对象(如datetime.now())相加,得到3小时后的时间。
19.turtle模块中,让画笔顺时针旋转90度的函数是______。
【答案】turtle.right(90)(或turtle.rt(90))
【解析】right(angle)控制画笔绕当前位置顺时针旋转angle度,rt()是其简写;若需逆时针旋转,需用left(angle)(或lt(angle))。
20. string模块中,包含所有数字字符的常量是______。
【答案】string.digits
【解析】string.digits对应"0-9"共10个数字字符,常与random模块配合生成随机验证码(如结合ascii_letters生成字母数字混合验证码)。
三、程序编写题(本大题共4小题,每小题5分,共20分)
1.编写函数,生成指定行数的杨辉三角(如输入5 ,输出5行杨辉三角 )。
【答案】
def yanghui_triangle(n):
triangle = []
for i in range(n):
row = [1] * (i + 1)
for j in range(1, i):
row[j] = triangle[i-1][j-1] + triangle[i-1][j]
triangle.append(row)
for row in triangle:
print(" ".join(map(str, row)))
n = int(input("请输入行数:"))
yanghui_triangle(n)
2.编写函数,接收字符串,返回其逆序字符串及长度(如输入"abc" ,返回"cba", 3 )。
【答案】
def reverse_string(s):
reversed_s = s[::-1]
length = len(s)
return reversed_s, length
s = input("请输入字符串:")
rev, len_s = reverse_string(s)
print(f"逆序字符串:{rev},长度:{len_s}")
3.一个数如果恰好等于它的因子之和,这个数就是“完数” 。用自定义函数的方法找出1000以内的所有完数。
【答案】
def is_perfect_number(n):
factors = []
for i in range(1, n):
if n % i == 0:
factors.append(i)
return sum(factors) == n
for num in range(1, 1001):
if is_perfect_number(num):
print(num)
4.编写函数decimal_to_binary(n),将十进制整数 n 转换为二进制字符串(n≥0)。
【答案】
def is_leap_year(year):
if (year % 4 == 0 and year % 100 != 0) or (year % 400 == 0):
return True
return False
# 测试
print(is_leap_year(2020)) # 输出True
print(is_leap_year(1900)) # 输出False
print(is_leap_year(2000)) # 输出True
学科网(北京)股份有限公司
$$