1

请添加图片描述
正确答案:B
分析:
A. pyserial 是用于串行通信的库,通常用于与串口设备通信,而不是处理图像。

C. openpyxl 是用于读写Excel文件的库,与网络爬虫无关。

D. scrapy 是一个流行的网络爬虫和网页抓取框架,用于从网站抓取数据,而不是数据分析。

2

请添加图片描述
正确答案:A
分析:
A. 正确。在Python中,当函数被调用时,实参的值会被传递给函数的形参。对于不可变对象,如整数和字符串,这是按值传递,复制了引用;对于可变对象,如列表和字典,传递的是引用。

B. 错误。Python函数中的可选参数(即带默认值的参数)必须定义在非可选参数(不带默认值的参数)之后。

C. 错误。全局变量和局部变量可以同名,但在函数内部,使用同名变量时默认是局部变量,除非用global关键字指定使用全局变量。

D. 错误。局部变量在函数调用结束时会被销毁,每次函数调用都会创建新的局部变量实例。

3

在这里插入图片描述正确答案:A
分析:
以上代码⇔

for m in '花草':
    for n in '虫鱼':
        print(m + n)

7

在这里插入图片描述
正确答案:C

8

在这里插入图片描述
正确答案:D
A. 这个描述有些误导。在递归函数中,函数确实需要调用自己来执行递归操作,但不是直接使用函数名作为返回值。通常,递归函数会在某个条件下返回一个具体的值或调用结果,例如 return some_function(arguments)。所以,A选项表述不准确。

B. Python中, return 并不是必须的;如果函数没有返回值或者不写 return 语句,默认返回 None。因此,B选项的描述也是不准确的。

C. 参数的值是否改变与函数中对变量的操作有关,与参数类型无关
这个描述不完全正确。在Python中,函数参数的行为既取决于其类型(可变类型还是不可变类型),也取决于函数内部对这些参数的操作。例如,如果向函数传递了一个列表(一个可变类型),并在函数内部修改了列表,那么原始列表也会被修改。但如果传递的是一个整数(不可变类型),即使在函数内部改变了这个整数的值,原始的整数也不会改变。因此,C选项不准确。

11

在这里插入图片描述
正确答案:C

C. plt.subplot(1022)
这个命令意图在解释为三个数字:10行、2列、第2个子图,这是一个非法的命令。正常情况下,单个三位数的 subplot 代码应该只包含最多三位数字,表示的行和列数也应该是合理的。在这种格式下,Python 解释器可能会试图将其拆解为1行0列的第22个子图,显然是不合理的,因为列数不能为零,子图索引也超出了可能的最大值。

12

在这里插入图片描述
正确的答案是:B

C. CSV文件中必须用Unicode编码书写方式
错误。CSV文件不必须使用Unicode编码。它们通常使用任何适合的编码,如UTF-8或ASCII等,但UTF-8是比较常见的选择,特别是需要支持多语言的情况下。

13

在这里插入图片描述
正确的答案是 D
A.random.uniform(a, b) 函数用于生成一个范围在 [a, b) 的随机浮点数,包括 a 但不包括 b

14

在这里插入图片描述
正确答案:A
A. CSV文件(逗号分隔值文件)本质上是纯文本文件,它使用普通文本来存储数据,每个记录被逗号分隔开

16.动物园幸福值(回溯)

在这里插入图片描述

分析:
1.从 0~n-1 中每次选出k个索引放在数组中,进行排列组合
2.依次遍历这k个索引,获取最大幸福值,输出幸福值

参考代码:

# n, k = map(int, input().split())  # 新引进n只动物,从中挑选k只
# event_time = list(map(int, input().split()))  # n只动物活动时间
# appetite = list(map(int, input().split()))  # n只动物食量

n, k = 6, 2
event_time = [2, 10, 3, 1, 5, 8]
appetite = [5, 4, 3, 9, 7, 2]
arr = [i for i in range(n)]
res = []

# 1.从 0~n-1 中每次选出k个索引放在数组中,保证把所有的情况都覆盖,且不重复
# 2.依次遍历这k个索引,获取最大幸福值,输出幸福值

def backtrack(start, path):
    # 如果当前路径长度达到 k,加入结果集
    if len(path) == k:
        res.append(path[:])
        return
    # 遍历所有可能的组合
    for i in range(start, len(arr)):
        path.append(arr[i])
        backtrack(i + 1, path)
        path.pop()  # 撤销选择

backtrack(0, [])
MAX = 0

for item in res:
    a = 0
    b = float('inf')
    for i in item:
        a += event_time[i]
        b = min(b, appetite[i])
    MAX = max(a * b, MAX)

print(MAX)

17.运动会积分(贪心)

在这里插入图片描述

分析:

  1. 初始化一个数组 awards,长度与输入积分数组相同,每个元素初始为 1,表示每个同学至少有一个奖励。
  2. 从左到右遍历,如果右边的同学积分比左边的高,那么右边的奖励比左边多 1。(保证升序的奖励)
  3. 从右到左遍历,如果左边的同学积分比右边的高,且奖励不够(小于右边的奖励加 1),则更新左边的奖励。(保证降序的奖励)

参考代码:

# scores = list(map(int, input("请输入积分榜(用空格隔开): ").split()))
scores = [9, 7, 2, 4, 5, 7, 2, 2, 6]

n = len(scores)
awards = [1] * len(scores)  # 每个同学至少有一个奖励

# 从左到右遍历
for i in range(1, n):
    if scores[i] > scores[i - 1]:
        awards[i] = awards[i - 1] + 1

# 从右到左遍历
for i in range(n - 2, -1, -1):
    if scores[i] > scores[i + 1] and awards[i] <= awards[i + 1]:
        awards[i] = awards[i + 1] + 1

# 输出奖品详细信息和总金额
total_awards = sum(awards)
print(f"奖励详情如下: {awards}")
print(f"奖品总额为: {total_awards}万元")

18.数字查找

在这里插入图片描述

# m, n = map(int, input().split())
m, n = 10, 999
d = dict()
# 统计字符串中0~9的个数
# 1.遍历m~n,分别统计字符,并加入字典
for i in range(m, n + 1):
    # 遍历i中的字符
    for char in str(i):
        d[char] = d.get(char, 0) + 1

for k, v in sorted(d.items()):
    print(f"{k}:{v}")

19.字符串对应(最大子数组和)

请添加图片描述

分析:
Kadane’s算法,遍历整个数组,并在每一步选择是否继续累加当前子数组,还是从当前位置重新开始计算

# 将字符映射为值
def char_to_value(char):
    if 'A' <= char <= 'Z':
        return ord(char) - ord('A') + 1
    elif 'a' <= char <= 'z':
        return -(ord(char) - ord('a') + 1)
    else:
        return 0  # 不应该出现此情况

# 计算
def max_substring_sum(s):
    max_sum = current_sum = float('-inf')
    for char in s:
        value = char_to_value(char)
        if current_sum < 0:
            current_sum = value
        else:
            current_sum += value
        max_sum = max(max_sum, current_sum)
    return max_sum

# 示例输入
input_string1 = "ABcED"
input_string2 = "aHweuTUILcSeDvOPwGRJDeufihbFHECBQwEUewrQQOEWNhjwejwf"

# 输出结果
print("输入样例1的最大子串和:", max_substring_sum(input_string1))
print("输入样例2的最大子串和:", max_substring_sum(input_string2))

真题区

16.魔法王国之旅

在这里插入图片描述

17.神秘背包

在这里插入图片描述

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐