2024年3月、6月、9月青少年软件编程Python等级考试试卷四级真题(全3套 含答案)

2025年1月1320:41:08发布者:谷获仔 32 views 举报
总字数:约16462字
第1页

第2页

第3页

第4页

第5页

第6页

第7页

第8页

第9页

第10页

2024 3 月青少年软件编程 Python 等级考试试卷四级真题(含答案和解析)

分数: 100 题数: 38

一、单选题 ( 25 题,共 50 )

1. 运行如下代码,若输入整数 3 ,则最终输出的结果为?()

def f(x):

if x==1:

s=1

else:

s=f(x-1)*x

return s

n=int(input(" 请输入一个大于 1 的整数: "))

print(f(n)+f(n-1))

A. 2

B. 4

C. 8

D. 16

标准答案: C

试题解析:由于 f(3)=f(2)*3,f(2)=f(1)*2,f(1)=1, 所以 f(3)+f(2)=6+2=8

2. 运行下列程序,输出的结果是?()

def fun(x):

if x > 3:

return x * fun(x-1)

else:

return

x print(fun(6))

A. 120

B. 360

C. 720

D. 60

标准答案: B

试题解析:递归函数求解,根据递归函数 6*5*4*3=360

3. 下列关于递归的描述不正确的是?()

A. 递归函数一定包含 if 语句。

B. 递归函数体内一定包含调用自身的语句。

C. 在调用自身函数时需要明确的边界终止条件与边界值。

D. 递归算法一般代码简洁,执行效率高,空间复杂度低。

标准答案: D

试题解析:递归算法一般代码简洁,易于理解,但执行效率较低,空间复杂度高。

4. 运行下列程序,输出的结果是?()

def fun(a, n):

s = 0

for i in range(1, n+1):

temp = str(a)*i

s += int(temp)

return s

print(fun(1, 3))

A. 3

B. 6

C. 12

D. 123

标准答案: D

试题解析:递推函数求解,本题是求 1+11+111 之和。

5. 运行下列程序,输出的结果是?()

def fun(a, b):

s = 0

a = a[::-1]

for i in range(len(a)):

s += int(a[i])*b**i

return s

print(fun('45', 16))

A. 69

B. 45

C. 64

D. 61

标准答案: A

试题解析:递推函数求解,本题是根据一个字符串和进制,转换成对应的十进制。

6. 一个荷花池,第一天荷花开放得很少,第二天开放的数量是第一天的两倍,

之后的每一天,荷花都会以前一天两倍的数量开放。如果到第 30 天,荷花就开

满了整个池塘,设第一天开一朵,编程求第 30 天共开了多少朵荷花。下面空白

处的代码填写正确的是?()

s = 0

t = 1

for i in range(1,

):

s += t

print(s)

A. 30, t = t*2

B. 31, t = t*2

C. 31, t+=2

D. 30, t*=2

标准答案: B

试题解析:递推函数求解,本题递推关系是 t = t*2, 循环次数是 30 次。

7. 解决下列问题时,时间复杂度最大的是?()

A. 输入 n 个不同的包含两位小数的实数,计算这 n 个数的和。

B. n 个数据中,查找数据 k

C. n 个数据用冒泡排序实现排序。

D. 计算算式 1-2+3-4+...-n 的结果, n 为偶数。

标准答案: C

试题解析:算法优化。

8. 以下关于分治算法的描述正确的是?()

A. 各个子问题既相互独立又相互联系

B. 问题可以分解成若干个规模较小的相同问题

C. 可以直接对问题进行求解

D. 子问题的解不能合并成原问题的解

标准答案: B

试题解析:分治算法的特征,各个子问题相互独立,子问题的求解可以合并成原

问题的解。

9. 下列选项中哪一项使用了分治算法?()

A. 二分搜索

B. 选择搜索

C. 插入搜索

D. 顺序搜索

标准答案: A

试题解析:二分查找体现了分治算法。

10. 不超过 20 个元素的降序数列,使用对分查找能找到指定的元素,可能的查

找次数不包括?()

A. 3

B. 4

C. 5

D. 6

标准答案: D

试题解析: int(log220)+1=5

11. 下面程序段的输出结果是?()

def add_Run(L=None):

if L is None:

L = ['Lying']

else:

L.append('Run')

return L

add_Run()

print(add_Run())

print(add_Run(['Lying']))

A. ['Lying']

['Run']

B. ['Lying']

['Lying']

['Lying', 'Run']

C. ['Lying']

['Lying', 'Run']

D. []

['Lying', 'Run']

标准答案: C

试题解析: if 分支定义列表, else 分支添加列表元素。

12. 下面关于计数器的程序,输出结果正确的是?()

count = 0

def increment():

global count

count += 1

print(" 计数器的值: ", count)

increment()

increment()

increment()

A. 计数器的值: 1

计数器的值: 2

计数器的值: 3

B. 计数器的值: 0

计数器的值: 1

计数器的值: 2

C. 计数器的值: 1

计数器的值: 1

计数器的值: 1

D. 计数器的值: 3

标准答案: A

试题解析:在函数内部可以通过关键字 global 来定义全局变量。

13. 下列程序段的输出结果是?()

L = []

x = 3

def

test(x):

L.append(x)

x = 5

test(x)

print('L = {}, x = {}'.format(L, x))

A. L = [3], x = 3

B. L = [5], x = 5

C. L = [3], x = 5

D. L = 3, x = 5

标准答案: A

试题解析:函数内部定义变量 x 的值为 5 ,只能作用于函数内部。

14. 以下程序,运行程序输出结果正确的是?()

def demo(x):

return x*2

print(demo(demo(1)))

A. return

None

B. 2

C. 4

D. 8

标准答案: C

试题解析:调用二次, 1 乘以二次 2 ,因此结果为 4

15. Python 使用下列哪个函数接收用户输入的数据?()

A. accept()

B. input()

C. print()

D. login()

标准答案: B

试题解析:在 Python , 用于获取用户输入的函数是 input()

16. 下面程序段的输出结果正确的是?()

def power():

x ='python'

y = 'world'

z = x + " " + y

return z

print(power())

A. z

B. x + " " + y

C. python world

D. python" "world

标准答案: C

试题解析:该函数作用为连接字符串。

17. 下列关于 Python 函数的描述中,不正确的是?()

A. 自定义函数时用到的关键字是 def

B. python 函数中,至少有一条 return 语句。

C. 函数 print ()可以一次输出多个参数,如 print('1',"2",3,[4])

D. 用函数 eval ()可以用于求字符串里表达式的值,如 eval '3+5-1' )。

标准答案: B

试题解析:函数可以有返 值, 可以 有返 值。需要返 值的函数,可以包

含一条 或者 多条 return 语句 ;没 有返 值的函数,不需要包含 return 语句。

18. 关于以下代码的描述中,正确的是?()

# 求两个正 方形 的面 积差

def MianJiCha(a,b):

s=a**2-b**2

return s

a=5

b=10

c=MianJiCha(b,a)+a

A. 代码运行后,变量 c 的值是 80

B. 函数 MianJiCha(a,b)

C. 可以用 MianJiCha(100) 式调用此函数。

D. 代码运行时会 报错

标准答案: A

试题解析: s=10**2-5**2+5=100-25+5=80

19. 下列关于 Python 函数的 法中, 错误 的是?()

A. 用函数可以降低编程复杂度, 加代码可 读性

B. 函数可以 复调用。

C. 函数可以降低 修改 代码的 作量。

D. 调用函数时,每次都 必须 输入相同的参数值。

标准答案: D

试题解析:有 函数需要输入参数 能调用,有 不需要。需要输入参数的函数

在多次调用时, 允许 输入合法的不同参数。这 正是函数可复用的实现 式。

20. 下列选项中,调用下列代码定义的函数时,程序会 报错 的是?()

def ShuChu(a,b,c):

print(c,b,a)

A. ShuChu('1','2','3')

B. ShuChu('1','2','3,4')

C. ShuChu(1,2,3)

D. ShuChu(1,2,3,4)

标准答案: D

试题解析:在使用位 实参的 值时, 入的实参个数 必须 参相同,

则运行程序会 报错

21. 下列选项中,调用以下代码定义的函数时,程序会 报错 的是?()

def kp(a,b,c):

print(a,b,c)

A. kp(1,b=2,3)

B. kp(a=3,b=1,c=2)

C. kp(1,2,3)

D. kp(1,b=2,c=3)

标准答案: A

试题解析:在函数调用时, 用位 实参与关键字实参 入参数时,位

必须 放在关键字实参之前。

22. 下列代码的输出结果是?()

>>>s=lambda m,n:m*n

>>>s(6,6)

A. 6

B. 6,6

C. 36

D. 12

标准答案: C

试题解析: 匿名 函数中,冒 前面是参数列表,冒 后面是函数的返 值。

m=6,n=6,s=m*n=6*6=36

23. 以下函数定义 错误 的选项是?()

A. def aFunc(m,n):

print(m,n)

B. def aFunc(m,n=2):

print(m,n)

C. def aFunc(*m,n):

print(m,n)

D. def aFunc(m,*n):

print(m,n)

标准答案: C

试题解析: *m 是可变参数,可 入值的个数不确定。可变参数只能放在不

可变参数的后面,不 器将不能 识别 传给 可变参数,哪 传给 不可

变参数。

24. 用于 安装 Python 三方库 工具 是?()

A. install

B. pip

C. Wheel

D. setup

标准答案: B

试题解析: pip Python 的第 三方库 安装工具

25. 编程时,如果只需要 三方库 中的 个成 ,需要使用到的关键字是?

()

A. from

B. as

C. into

D. inport

标准答案: A

试题解析: 部模 个成 ,使用 from 关键字。

二、 判断 ( 10 题,共 20 )

26. 个问题既能用递归算法求解,又能用递推算法求解,则使用递归 法求

更容 易,效率 高得多。()

标准答案: 错误

试题解析:递归求解效率要低。

27. 如下代码因为递归的边界条件设 置错误 产生 无限 递归程序 报错 。()

def fun(n):

if n > 10:

return 0

else:

return n + fun(n-1)

print(fun(10))

标准答案:正确。

试题解析:递归的边界条件设 置错误 产生 无限 递归程序 报错

28. 算法的时间复杂度与空间复杂度 必然 关系。()

标准答案:正确。

试题解析:算法的时间复杂度与空间复杂度 必然 关系。

29. 已知 n 按照书名拼音 排序 图书 ,使用对分查找法搜索 任何 一本

,最多查找次数为 4 次,则 n 的值有可能为 10 。()

标准答案:正确。

试题解析:根据二分查找最 查找次数可得。

30. 函数定义语句 def f(c=1,d=2,a,b): 是正确的,因为 默认 参要放在前面。

()

标准答案: 错误

试题解析:函数定义, 默认 参要放在后面。

31. return 语句可以返 回任何 数据 类型 的值,包括整数、 浮点 数、字符串、列表、元

、字 等。()

标准答案:正确。

试题解析: return 语句可以用于在函数执行结 后返 一个值。这个值可以是

任何类型 , 如整数、 浮点 数、字符串、列表等等。

32. def ZiDian(**kwargs):

print(kwargs)

ZiDian(a=1)

运行 面的代码后,输出结果为 {'a':1} 。()

标准答案:正确。

试题解析: 不确定需要 入的值是多少时,在定义 参时,可以使用 *args (列

表)、 **kwargs (字 )来表 。在元素前加 ** 后, 入的值以字

显示 出来。

33. 以下代码可以正 运行 , 输出 8

() def qh(a,b=3):

print(a+b)

qh(b=2,6)

标准答案: 错误

试题解析:在 参列表中 必须先 列出 默认 值的 参, 列出有 默认 值的 参。不

,程序会 报错

34. 代码 >>>lambda:x=2,y=3:x+y 的运行结果是 5

()标准答案: 错误

试题解析: 匿名 函数中冒 前面的部分表 参数列表,不能有 值语句,不

报“ can't assign to lambda” 错误

35. 使用 pip install --upgrade numpy 命令 够升 numpy 科学 计算

()标准答案:正确。

试题解析: pip install --upgrade numpy 用来 部模

、编程题 ( 3 题,共 30 )

36. 数的分解。

出一个正整数 a ,要求分解成若干个正整数的乘 a=a1×a2×a3×...×

an ,并 1<a1≤a2≤a3≤...≤an ,问这 分解的 种类 有多少。 注意 a=a

分解。

如, 8 可以分解成 8=2*2*2,8=2*4,8=8 3

代码如下, 完善划线 处的代码:

def fun(x, y=2):

if x == 1:

global ans

for i in range(y, x+1):

if

:

fun(x//i,i)

lst = [2, 8, 9, 20] # 试数据

for i in lst:

ans = 0

print(ans)

程序运行结果如下:

1

3

2

4

参考程序:

def fun(x, y=2):

if x == 1:

global ans

ans += 1

for i in range(y, x+1):

if x % i == 0:

fun(x//i, i)

lst = [2, 8, 9, 20] # 试数据

for i in lst:

ans = 0

fun(i)

print(ans)

分标准:

1 ans += 1 等效答案 2 分)

2 x % i == 0 等效答案 3 分)

3 fun(i) 等效答案。( 3 分)

37. 购物组 合。

小明单位 100 元的 购物卡 ,小明到超 市买三类洗 化用 洗发水 15 元)、

香皂 2 元)、 牙刷 5 元)。要 100 元正 ,可有哪 些购买组 合?

def

gouwu(money):

for i in range(0,money//15+1):

for j in range(0,money//2+1):

for

k

in

range(0,①

):

if

:

print(' 可选择的 购买组 :\t 购买洗发水

{} 香皂 {} 牙刷 {} 个。 '.format(

))

gouwu(100)

参考程序:

def

gouwu(money):

for i in range(0,money//15+1):

for j in range(0,money//2+1):

for

k

in

range(0,money//5+1):

if i*15+j*2+k*5==money:

print(' 可选择的 购买组 :\t 购买洗发水 {}

{} 牙刷 {} 个。 '.format(i,j,k))

gouwu(100)

分标准:

1 money//5+1 等效答案 3 分)

2 i*15+j*2+k*5==money 等效答案 4 分)

3 i,j,k 等效答案。( 3 分)

总页数:33
提示:下载前请核对题目。客服微信:diandahome
标题含“答案”文字,下载的文档就有答案
特别声明:以上内容(如有图片或文件亦包括在内)为“电大之家”用户上传并发布,仅代表该用户观点,本平台仅提供信息发布。