选择题 共25道

01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25


判断题 共10道

26 27 28 29 30 31 32 33 34 35


编程题 共3道

36 37 38

E998 CIE电子学会-202603-Python四级真题-练习

选择题 共25道
01 小明有一堆糖果,他每天吃掉一半加一颗。如果小明连续吃了 5 天,糖果正好吃完,请问小明最初有多少颗糖果?求解该问题使用的算法思想是?() 2分
登录后查看选项
02 下列有关递归与递推的描述中,正确的是?() 2分
登录后查看选项
03 有如下 Python 程序,执行该程序后,输出的结果是?()
 def f(n): if n == 1: return n else: return n + f(n//2) print(f(10)) 
2分
登录后查看选项
04 有如下递归函数,执行 print(f(3)) 语句后,函数f被调用的次数是?()
 def f(n): if n == 1 or n == 0: return n else: return f(n-1) + f(n-2) print(f(3)) 
2分
登录后查看选项
05 运行如下代码,请输出运算结果?()
 def f(lst): if len(lst) == 0: return 0 return lst[0] + f(lst[1:]) a = [1,2,3,4] print(f(a)) 
2分
登录后查看选项
06 有如下 Python 程序,执行该程序后,输出的结果是?()
 def nx(s): if len(s) == 1: return s return nx(s[1:]) + s[0] print(nx('abcda')) 
2分
登录后查看选项
07 以下关于关键字 global 和 nonlocal 的表述中,错误的选项是?() 2分
登录后查看选项
08 在 Python 社团活动中,小明请小伙伴写了以下交换两个变量值的函数,运行代码的输出是?()
 def swap(a, b): a, b = b, a x, y = 1, 2 swap(x, y) print(x, y) 
2分
登录后查看选项
09 社团活动中,小明给小伙伴们出了一道编程题,请阅读 Python 程序,下列哪个选项描述是正确的?()
 def demo(n): s = 1 for i in range(1, n): s *= i return s 
2分
登录后查看选项
10 在学习完函数如何传递参数后,老师给出以下 Python 程序,让大家试运行一下,输出结果是?()
 def demo(x): return x*2 print(demo(demo(2))) 
2分
登录后查看选项
11 有如下 Python 程序,执行该程序后输出的结果是?()
 n = 5 def fun(): global n n = n * 2 print(n) fun() print(n) 
2分
登录后查看选项
12 小明根据课堂上老师讲的内容编写了以下 Python 程序,老师发现了错误却依旧可以运行,当前输出结果是?()
 def f(a:int,b:str)->str: c = a + b print(c) return f f('3','45') 
2分
登录后查看选项
13 小明需要升级安装最新版的 numpy 库用于数据分析。正确的安装命令是?() 2分
登录后查看选项
14 小明想在 Python 中导入 matplotlib 的 pyplot 模块并设置别名,绘制图表。正确的导入方式是?() 2分
登录后查看选项
15 在 Python 程序中,以下哪个选项的函数调用能够正确输出结果为:“4年级的李明同学”?() 函数定义如下:
 def student_info(grade, name): print(f"{grade}年级的{name}同学") 
2分
登录后查看选项
16 在 Python 语言中,以下哪个函数调用可以正确输出“计算结果=9”?() 函数定义如下:
 def calc(x, y, z): ans = (x + y) * z print(f"计算结果={ans}") 
2分
登录后查看选项
17 有如下 Python 程序段,执行该程序段后的结果是?()
 def mul(x, y=1): return x  y print(mul(2), mul(1, 2)) 
2分
登录后查看选项
18 在 Python 语言中,当不确定需要传入的值是多少时,可以用 *args 来表示,执行如下程序段后的结果是?()
 def fun(*args): t = 0 for x in args: t += x return t print(fun(1) + fun(2, 3)) 
2分
登录后查看选项
19 下列关于函数 return 语句的说法,正确的是?() 2分
登录后查看选项
20 下列 Python 代码的输出结果是?()
 >>> s = lambda a, b: a * b >>> s(4, 4) 
2分
登录后查看选项
21 在 Python 语言中,匿名函数不需要用 return 来返回值,执行如下程序段后的结果是()
 f = lambda x, y : x if x > y else y result = f(10, 20) print(result) 
2分
登录后查看选项
22 小明正在用枚举算法解决一个问题:找出所有满足各位数字之积等于12的三位数。为了提高程序运行效率,他需要选择一个合适的数值范围进行枚举。在以下选项中,哪种数值范围能让算法的执行效率最高?() 2分
登录后查看选项
23 下面为银行存款计算程序,假设存款利率每年都是 0.03,小明有 1000 元,求存满 5 年后的总金额,下面 Python 代码空白处应该填入哪个选项?()
 def interest(total, years, rate=0.03): for i in range(years): total *= (_______) return total print(interest(1000, 5)) 
2分
登录后查看选项
24 分治算法的基本思想不包括下列哪个选项?() 2分
登录后查看选项
25 下列生活问题中,不适合用分治策略解决的是?() 2分
登录后查看选项
判断题 共10道
26 递归思想是一种直接或间接地调用自身的算法设计方法,通常用于解决那些问题本身可以被分解为更小的相同类型问题的情况。() 2分
登录后查看选项
27 递推基本思想是通过已知条件,利用递推关系(或递推公式)来求解问题。递推关系通常是一个或多个前项与当前项之间的关系式。() 2分
登录后查看选项
28 Python 语言编程中,函数如果没有 return 语句,默认返回 None。() 2分
登录后查看选项
29 Python 语言编程中,如果参数输入的类型不匹配,运行时程序会报错。() 2分
登录后查看选项
30 使用 pip list 命令可以查看当前 Python 环境中所有已安装的第三方库及版本信息。() 2分
登录后查看选项
31 在 Python 语言中,函数的核心意义在于将代码模块化、提高代码执行效率,并通过抽象化逻辑降低复杂性。() 2分
登录后查看选项
32 在 Python 语言中,函数的关键字实参是通过“关键字=值”方式,将实参与形参关联映射,实参顺序要严格按照形参顺序传递,否则运行结果会发生改变。() 2分
登录后查看选项
33 小明正在学习求正方形的面积,他用 Python 语言创建了如下函数,他认为函数没有 return 返回值运行会错误。()
 fun = lambda x: x  2 
2分
登录后查看选项
34 小明用 Python 语言写了一个程序,计算从 1 加到 n 的总和,他分别用两种方法实现了这个功能:
 # 方法一 total = 0 for i in range(1, n + 1): total += i # 方法二 total = n * (n + 1) // 2 
小明说,方法 2 比方法 1 快得多,因为方法 1 的时间复杂度是 O(n+1),而方法 2 的时间复杂度是 O(1)。()
2分
登录后查看选项
35 分治算法的必要条件之一,是分解后的子问题可以独立求解。() 2分
登录后查看选项
编程题 共3道
36 密码安全性 密码离不开大家的生活,各类 APP 中密码设置简单了,就容易造成损失。为此小明编写程序检测密码是否安全。安全密码的两个条件: ① 密码长度至少 8 位; ② 密码中数字、大写字母、小写字母和特殊符号 (!@#%^&*()) 这四类符号中必须有 3 项以上。 比如,密码是 "ADa%9"(不包括双引号),运行程序后输出“密码不符合安全要求”。利用 Python 编写程序如下,完善划线处的代码。
 def checkpwd(pwd): 
	c = [0] * 4 
	flag = False 
	if len(pwd) >= 8: 
		________①________ 
	for i in pwd: 
		if ________②________: 
			c[0] = 1 
		elif i >= 'A' and i <= 'Z': 
			c[1] = 1 
		elif i >= 'a' and i <= 'z': 
			c[2] = 1 
		elif i in '!@#%^&*()': 
			________③________ 
	if ________④________ and flag: 
		return True 
	else: 
		return False 
pwd = input('请输入密码') 
	if checkpwd(pwd): 
		print('密码符合安全要求') 
	else: 
		print('密码不符合安全要求')
12分
登录后作答
37

智能家居系统 在智能家居系统中,我们可以通过中央控制系统来管理各个房间的智能灯。为了简化问题,假设每个房间有一个智能灯,其状态用 1 表示开,0 表示关。我们的任务是计算家里所有开着的灯的数量。我们将采用分治算法的思想来解决这个问题。 请补全以下代码,使用分治算法实现统计列表中开着的灯(值为 1)数量的功能。

def count_lights_on(rooms):
    # 如果列表为空,直接返回0
    if not rooms:
        return 0
    # 如果列表只有一个元素,直接判断是否为开着的灯
    if len(rooms) == 1:
        return rooms[0]
    # 将列表分为两部分
    mid = len(rooms) // 2   # ①
    left_rooms = rooms[:mid]
    right_rooms = rooms[mid:]
    # 使用分治递归统计每部分开着的灯的数量
    count_left = count_lights_on(left_rooms)   # ②
    count_right = count_lights_on(right_rooms)
    # 返回总共开着的灯的数量
    return count_left + count_right   # ③

# 示例测试
rooms = [1, 0, 1, 0, 1, 0, 1]  # 1代表灯开着,0代表灯关着
print(count_lights_on(rooms))  # 输出应为4
8分
登录后作答
38 种植花卉 园丁在花园里种植花卉,第1行种5株花。从第2行开始,如果行数能被3整除,该行种植的花卉数量是前一行的2倍;如果行数除以3余1,该行种植的花卉数量比前一行多3株;如果行数除以3余2,该行种植的花卉数量比前一行少1株。下面的递归函数用于计算第n行种植了多少株花卉,请完善划线处的代码。
def flower(n):
    if n == 1:
        return 1                     # ① 第一行种1株
    else:
        leftover = (n - 1) % 3       # ② 计算余数(也可能是 n % 3,取决于规律)
        if leftover == 0:
            current = flower(n-1) + 3   # ③ 整除时加3
        elif leftover == 1:
            current = flower(n-1) + 2   # ④ 余1时加2
        else:
            current = flower(n-1) - 1
        return current

hang = int(input("请输入行数:"))
print(f"第{hang}行种植了{flower(hang)}株花卉")
10分
登录后作答