GESP2024年09月Python六级试卷

从PDF导入:GESP2024年09月Python六级试卷

Python 180分钟 总分 100.0 27 题
试卷题目预览
第1题 中级 2.0分 单选
以下( )没有涉及Python语言的面向对象特性支持。
A. Python中构造一个class
B. Python中调用printf函数
C. Python中调用用户定义的类成员函数
D. Python中构造来源于同一基类的多个派生类
第2题 中级 2.0分 单选
关于Python中面向对象的类的继承,下面说法错误的是( )
A. 子类可以通过继承不能访问到父类的所有属性
B. 多个子类可以继承同一个父类
C. 子类和子类产生的对象都可以通过句点的方式拿到父类
D. Python中支持多继承
第3题 中级 2.0分 单选
有6个元素,按照6,5,4,3,2,1的顺序进入栈S,下列( )的出栈序列是不能出现的。
A. 5,4,3,6,1,2
B. 4,5,3,1,2,6
C. 3,4,6,5,2,1
D. 2,3,4,1,5,6
第4题 中级 2.0分 单选
采用如下代码实现检查输入的字符串括号是否匹配,横线上应填入的代码为( )。

def paren_match(expr):
s = Stack()
balanced = True
index = 0
while index < len(expr) and balanced:
symbol = expr[index]
if symbol in '([{':

A. s.push(symbol)
B. s.pop(symbol)
C. s.push(index)
D. s.pop(index)
第5题 中级 2.0分 单选
下面代码判断队列的第一个元素是否等于a,并删除该元素,横线上应填写( )。

if
q.get()
print('元素是队列的第一个元素,并已被移除。'.format(a))

A. not q.empty() and q.queue[0] != a:
B. not q.empty() and q.queue[0] == a:
C. q.empty() and q.queue[0] == a:
D. q.empty() and q.queue[0] != a:
第6题 中级 2.0分 单选

假设字母表 {a,b,c,d,e} 在字符串出现的频率分别为 10%,15%,30%,16%,29%。若使用哈夫曼编码方式对字母进行二进制编码,则字符 abcdef 分别对应的一组哈夫曼编码的长度分别为( )。

A. 4, 4, 1, 3, 2
B. 3, 3, 2, 2, 2
C. 3, 3, 1, 2, 1
D. 4, 4, 1, 2, 2
第7题 中级 2.0分 单选
以下Python代码实现n位的格雷码,则横线上应填写( )。

def generate_gray_code(n):
if n <= 0:
return []
if n == 1:
return [0, 1]
gray_code = generate_gray_code(n - 1)
for x in gray_code]
return gray_code + inverted_gray_code

A. inverted_gray_code = [int(('0' * n + bin(x)[2:])[-n:], 2)
B. inverted_gray_code = [int(('1' * n + bin(x)[2:])[-n:], 2)
C. inverted_gray_code = [int(('1' * n + bin(x)[1:])[-n:], 2)
D. inverted_gray_code = [int(('1' * n + bin(x)[2:])[n:], 2)
第8题 中级 2.0分 单选
给定一棵二叉树,其前序遍历结果为:ABDECFG,中序遍历结果为:DEBACFG,则这棵树的正确后序遍历结果是( )。
A. EDBGFCA
B. EDGBFCA
C. DEBGFCA
D. DBEGFCA
第9题 中级 2.0分 单选

一棵有n 个结点的完全二叉树用数组进行存储与表示,已知根结点存储在数组的第 个位置。若存储在数组第1个位置的结点存在兄弟结点和两个子结点,则它的兄弟结点和右子结点的位置分别是( )。

A. 8, 18
B. 10, 18
C. 8, 19
D. 10, 19
第10题 中级 2.0分 单选
二叉树的深度定义为从根结点到叶结点的最长路径上的结点数,则以下基于二叉树的深度优先搜索实现的深度计算函数中横线上应填写( )。

def max_depth(root_node):
if root_node is None:
return 0
else:
left_depth = max_depth(root_node.left)
right_depth = max_depth(root_node.right)

A. return max(left_depth, right_depth)
B. return min(left_depth, right_depth) + 1
C. return max(left_depth, right_depth) + 1
D. return max(left_depth, right_depth) - 1
第11题 中级 2.0分 单选
以下基于二叉树的搜索实现的高度计算函数中横线上应填写( )。

def height(root):
if root is None:
return 0
else:
left_height = height(root.left)
right_height = height(root.right)

A. return max(left_height, right_height) + 1
B. return min(left_height, right_height) - 1
C. return min(left_height, right_height) + 1
D. return max(left_height, right_height) - 1
第12题 中级 2.0分 单选
二叉搜索树中的每个结点,其左子树的所有结点值都小于该结点值,右子树的所有结点值都大于该结点值。以下代码对给定的整数数组构造一个对应的二叉搜索树,横线上应填写(

class Solution:
def isValidBST(self, root):
def helper(node, min_val, max_val):
if not node:
return True
return False
return helper(node.left, min_val, node.val) and helper(node.right, node.val, max_val)
return helper(root, float('-inf'), float('inf'))

A. if node.val <= min_val or node.val >= max_val:
B. if node.val >= min_val or node.val >= max_val:
C. if node.val <= min_val or node.val <= max_val:
D. if node.val >= min_val or node.val <= max_val:
第13题 中级 2.0分 单选
对上题中的二叉搜索树,当输入数组为[6,2,8,1,4,7,9]时,构建二叉搜索树,并采用中序遍历,得到的输出是( )。
A. 1 2 4 6 7 8 9
B. 6 2 1 4 8 7 9
C. 1 4 2 7 9 8 6
D. 9 8 7 6 4 2 1
第14题 中级 2.0分 单选
动态规划通常用于解决( )。
A. 无法分解的问题
B. 可以分解成相互依赖的子问题的问题
C. 可以通过贪心算法解决的问题
D. 只能通过递归解决的问题
第15题 中级 2.0分 单选
阅读以下用动态规划解决的0-1背包问题,假设背包容量10kg,4个物品重量[1,3,4,6],价值[20,30,50,60],则函数输出为( )。
A. 90
B. 100
C. 110
D. 140
第16题 中级 2.0分 判断
C++、Python和JAVA等都是面向对象的编程语言。( )
T. 正确
F. 错误
第17题 中级 2.0分 判断
在Python中,类的静态成员变量只能被该类对象的成员函数访问。( )
T. 正确
F. 错误
第18题 中级 2.0分 判断
栈和队列均可通过数组或链表来实现,其中数组实现支持随机访问、占用内存较少,但插入和删除元素效率低。( )
T. 正确
F. 错误
第19题 中级 2.0分 判断
运行以下Python代码,屏幕将输出"derived class"。( )

class BaseClass:
def my_method(self):
print("base class")
class DerivedClass(BaseClass):
def my_method(self):
print("derived class")
derived_instance = DerivedClass()
derived_instance.my_method()

T. 正确
F. 错误
第20题 中级 2.0分 判断
如下列代码所示的基类(Base)及其派生类(Derived),则生成一个派生类的对象时,只调用派生类的构造函数。( )

class Base:
def __init__(self):
print("Base.__init__ called")
class Derived(Base):
def __init__(self):
print("Derived.__init__ called")
super().__init__()
d = Derived()

T. 正确
F. 错误
第21题 中级 2.0分 判断
哈夫曼编码本质上是一种贪心策略。( )
T. 正确
F. 错误
第22题 中级 2.0分 判断
如果根结点的深度记为1,则一棵恰有n个叶结点的二叉树的深度最少是⌈log₂n⌉。( )
T. 正确
F. 错误
第23题 中级 2.0分 判断
在非递归实现的树的广度优先搜索中,通常使用栈来辅助实现。( )
T. 正确
F. 错误
第24题 中级 2.0分 判断
状态转移方程是动态规划的核心,可以通过递推方式表示问题状态的变化。( )
T. 正确
F. 错误
第25题 中级 2.0分 判断
应用动态规划算法时,识别并存储重叠子问题的解是必须的。( )
T. 正确
F. 错误
第26题 中级 25.0分 编程
小杨和整数拆分

时间限制:20.0 s
内存限制:512.0 MB
题面描述
小杨有一个正整数n,小杨想将它拆分成若干完全平方数的和,同时小杨希望拆分的数量越少越好。小杨请你编写程序计算出总和为n的完全平方数的最少数量。

【输入格式】
第一行包含一个正整数n。
【输出格式】
输出一个整数,代表总和为n的完全平方数的最少数量
【样例】
样例
n=18,最少需要2个完全平方数:18=9+9。
数据范围
对于全部数据,保证有1 ≤ n ≤ 10⁴。
第27题 中级 25.0分 编程
算法学习

时间限制:1.0 s
内存限制:512.0 MB
题面描述
小杨计划学习m种算法,为此他找了n道题目来帮助自己学习,每道题目至多学习一次。小杨对于m种算法的初始掌握程度均为0。第i道题目有对应的知识点aᵢ,即学习第i道题目可以令小杨对第aᵢ种算法的掌握程度提高bᵢ。小杨的学习目标是对m种算法的掌握程度均至少为k。小杨认为连续学习两道相同知识点的题目是不好的,小杨想请你编写程序帮他计算出他最少需要学习多少道题目才能使得他在完成学习目标的同时避免连续学习两道相同知识点的题目。

【输入格式】
第一行三个正整数m, n, k。代表算法种类数,题目数和目标掌握程度
第二行n个正整数aᵢ。代表每道题目的知识点
第三行n个正整数bᵢ。代表每道题目提升的掌握程度
【输出格式】
输出一个整数,代表小杨最少需要学习题目的数量,如果不存在满足条件的方案,输出-1。
【样例】
<img src="/static/uploads/images/fc1b6f5d1b86.png" style="max-width:35%;border-radius:6px;margin:8px 0;" />
💬