第十五届蓝桥杯 Python 省赛题目及解析

news/2024/9/16 23:33:20/ 标签: 蓝桥杯, python

第十五届蓝桥杯 Python 省赛题目及解析

选择题

1. 运行下面程序,输出的结果是()。

s = ‘py’

print(‘t’.join(s))

  • A、tpy
  • B、pty
  • C、tpty
  • D、tptyt

正确答案:B

答案解析:

join() 方法是字符串的一个方法,它用于将序列中的元素以指定的字符连接生成一个新的字符串。题目中是将字符串’py’使用’t’连接为一个新字符串,答案是’pty’,选B。

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

python">x = 1, 2, 3
print(type(x))
  • A. <- Cl- Ass ‘tuple’>
  • B. <- Cl- Ass ‘int’>
  • C. <- Cl- Ass ‘list’>
  • D. 报错

正确答案: A

答案解析:

type() 函数是 Python 中的一个内置函数,用于获取对象的类型。x = 1, 2, 3 是定义了一个元组,所以答案为- A选项。定义元组可以省略小括号,如果定义只有一个元素的元组,元素后需要加一个逗号,例如 x = 1, 。

3. 下列哪个函数可以返回列表中的最大值?()

  • A. len()
  • B. sum()
  • C. sort()
  • D. m- Ax()
    正确答案:D
    答案解析:
    Python内置函数的考查,len()是获取序列长度,sum()是序列求和,sort()是序列排序,m- Ax()是求序列最大值。故选D选项。

4. 下列哪个运算符可将两个字符串拼接起来?( )

  • A. *
  • B. +
  • C.%
  • D. //
    正确答案:B
    答案解析:
    Python中算术运算符的考查,将两个字符串拼接到一起需要使用“+”。故选择- B选项。除了能够将字符串拼接,也能够将列表. 元组拼接。

5. 关于Python函数的描述,错误的是( )。

  • A. 调用函数时,实参可以是一个表达式
  • B. 没有return语句的函数执行结束后,返回None
  • C. 函数形参为*n- Ame新式时,*n- Ame形参接收一个字典
  • D. 调用函数时,关键字参数必须在位置参数后面
    正确答案:C
    答案解析:
    A选项:实参可以使表达式,Python会先计算出表达式的值,然后将值作为参数传递。
    B选项:没有return则返回空,即None。
    C选项:单星号(*),*name,接收一个元组;双星号(**),**name,接收一个字典。题目说法错误,故选- C选项。
    D选项:在Python中,当你调用一个函数时,所有的位置参数(即没有指定名称的参数)必须首先出现,然后才是关键字参数(即指定了名称的参数)。这是因为Python解释器需要首先确定所有位置参数的值,然后才能将关键字参数与函数定义中的形参名称进行匹配。

编程题

1. 偶数

题目描述:
(注.input()输入函数的括号中不允许添加任何信息)
偶数:指能够被 2 整除的整数。
例如:2. 4. 6. 8.
给定一个偶数 n,计算 n可以由多少个2相加得到。
例如:n=10;10可以由5个2相加得到(2+2+2+2+2)。
输入描述
输入一个偶数n(2≤n≤100)
输出描述
输出一个整数,表示n可以由多少个2相加得到
样例输入

10

样例输出

5

参考程序:

python">n = int(input())
print(n/2)

代码解析:
一个偶数n由n/2个2组成

2. 字母比较

题目描述:
(注.input()输入函数的括号中不允许添加任何信息)
给定两个不相同的大写字母,比较它们在英文字母表中的位置,输出位置更靠后的字母。
例如:大写字母 D和 H;D和H相比,H在英文字母表中位置更靠后。
输入描述
第一行输入一个大写字母
第二行输入一个大写字母
输出描述
输出位置靠后的字母
样例输入

D
H

样例输出

H

参考程序:

python">m = input()
n = input()
if m > n:print(m)
else:print(n)

代码解析
字母大小比较通过ASCII码进行比较,靠后的字母ASCII码更大,所以只需要输出较大的字母即可。

3. 石头运输

题目描述

给定三个整数,表示三块石头的重量。
请你在不分割石头的情况下,将三块石头分给两辆车运输,使得两辆车各自运输的石头总重量尽可能相近,并分别输出两辆车运输的石头总重量。
例如:

  • a. 三块石头的重量分别为 4、2、3;
  • b. 一辆车运输重量为4的石头;
  • c. 另一辆车运输重量为2和3的石头;
  • d. 两辆车运输的石头总重量分别是4和5,各自运输的石头总重量已尽可能相近,所以输出4和5。
    输入描述
    输入仅一行,包含三个整数(1≤整数≤200),分别表示三块石头的重量,整数之间以一个空格隔开
    输出描述
    按从小到大的顺序输出两个整数,分别表示两辆车各自运输的石头总重量,整数之间以一个空格隔开
    样例输入

4 2 3

样例输出

4 5

参考程序:

python">w = list(map(int, input().split()))
w_min = w_max = w[0]
for i in range(1,3):if w_min > w[i]: w_min = w[i]  # 求最小值if w_max < w[i]: w_max = w[i]  # 求最大值
w_mid = sum(w) - w_min - w_max   # 求最中间值
c1 = w_min + w_mid
c2 = w_max
if c1 > c2:print(c2, c1)
else:print(c1, c2)

代码解析
两辆车运输的石头总重量尽可能相近则需要一辆车运最重的一块,另一辆车运较轻的两块。
可通过数学方法推算:
在这里插入图片描述

如上所示,a,b,c为石头重量从小到大排序。
两辆车拉石头共三种情况:
第一辆拉a+b,第二辆拉 c;
第一辆拉a+c,第二辆拉 b;
第一辆拉b+c,第二辆拉 a。
接下来找到差值最小的情况。
a+b-c = a+(a+x)-(a+x+y) = a - y
a+c-b = a+(a+x+y)-(a+x) = a + y
b+c-a = (a+x)+(a+x+y)-a = a+2x+y
已知x≥0,y≥0,所以第一种情况差值最小。
只需要求出最大重量,最小重量,再通过数学运算求出中间重量(sum(w) - w_min - w_max)即可实现。

4. 连续正整数和

题目描述
(注:input()输入函数的括号中不允许添加任何信息)
给定一个正整数 n,请计算n最多可以由多少个连续(2个及以上)的正整数相加得到,如果n不能由连续的正整数相加得到,则输出-1。
例如:
n=100;100 可以由以下2组连续的正整数相加得到。
第一组:9、10、11、12、13、14、15、16;
第二组:18、19、20、21、22;
100 最多可以由 8个连续的正整数相加得到,输出8.
例如:
n=8;8不能由连续的正整数相加得到,输出-1.
输入描述
输入一个正整数n(3≤n≤108)
输出描述
输出一个整数,表示 n最多可以由多少个连续的正整数相加得到;如果n不能由连续的正整数相加得到,则输出 -1。
样例输入

100

样例输出

8

参考程序:

python">n = int(input())
count = 0  # 保存符合条件的最大连续整数个数
for i in range(1, n // 2 + 1):s = i  # 和t = 1  # 记录个数,从i开始设置个数为1for j in range(i + 1, n):  # 内循环从i开始求和s += jt += 1  # 计算一个数字,增加1if s > n or s == n:  # 如果和大于或者等于数字n,结束内循环if s == n and t > count:  # 如果相等,并且当前个数为最大数count = t  # 保存到count中break
print(count)

代码解析
注意外循环范围,最小为(1, n // 2 + 1),因为连续整数从(n//2+1)开始,第一个要加的数字就是 (n//2 + 2)已经大于数字n,所以最大范围就是从n//2开始计算连续整数的个数。
外循环控制从i开始,内循环从i开始往后计算连续整数。

5. 浇花系统

题目描述
有n棵植物,排成一排,从左到右的编号分别为:1,2,3,…,n ;n颗植物所需的水量分别为:w1,w2,w3,…wn 。小丁为植物设计了一套浇水系统。
浇水系统:每次会将连续的L棵植物分别浇1份水。每棵植物可以被重复浇水,如果当前植物已经满足所需水量,系统会将多浇的水排到水池中。
请计算浇水系统最少要浇多少次才能满足所有植物所需水量,以及排到水池的水量。
例如:n=4,L=3;4棵植物所需要的水量分别为1、1、3、2,浇水系统每次会将连续的 3 棵植物分别浇上1份水。
以下是浇水次数最少的一种方式:

  • 第一次:将第1、2、3 棵植物分别浇上1份水,浇水后4棵植物所需水量为0、0、2、2;
  • 第二次:将第 2、3、4 棵植物分别浇上1份水,浇水后4棵植物所需水量为0、0、1、1,由于第2棵植物已经满足所需水量,所以系统会将此次多余的1份水排到水池;
  • 第三次:将第 2、3、4棵植物分别浇上1份水,浇水后4棵植物所需水 量为0、0、0、0,此次系统也会将第2棵植物多余的1份水排到水池; 所以,浇水系统最少需要浇3次,并且将多余的2份水排到水池。
    输入描述
    第一行输入两个整数n、L(1 ≤ L ≤ n ≤ 1000),分别表示植物的数量和浇水系统每次连续浇灌的植物数量,整数之间以一个空格隔开。
    第二行输入n个整数w(0 <= w; <= 1000) ,分别表示编号 1~n 的植物所需的水量,整数之间以一个空格隔开。
    输出描述
    输出两个整数,分别表示浇水系统最少的浇水次数,以及排到水池的水量,整数之间以一个空格隔开。
    样例输入

4 3
1 1 3 2

样例输出

3 2

参考程序

python">n, L = map(int, input().split())
plants = list(map(int, input().split()))
times = 0
water = 0
i = 0
for i in range(n - L + 1):  # 前n-L个植物浇水if plants[i] > 0:time = plants[i]  # 将浇水量设为当前植物需水量for j in range(i, i + 3):  # 往后取三个浇水plants[j] -= time  # 浇水if plants[j] < 0:  # 如果小于0,代表需要排水water -= plants[j]  plants[j] = 0times += time
if max(plants[-L:]) > 0:  # 后面L个存在需要水的植物time = max(plants[-L:])  # 直接浇最多需水量的水for j in range(L):plants[j - L] -= timeif plants[j - L] < 0:water -= plants[j - L]times += time
print(times, water)

代码解析
使用循环遍历所需水量列表,如果当前需水量plants[i]大于0,则将浇水次数设为plants[i],从当前植物往后取三个植物,均浇水plants[i],也就是都减少plants[i]。如果浇水后小于0,则将计入排水量。
后面L个需要单独运算,如果后面L个所需水量存在大于0的情况,则将浇水量设为三个中需水量最大的值,并完成浇水,排水量计算。

6. 夺取宝石

题目描述
(注.input()输入函数的括号中不允许添加任何信息)
一个n行n列的网格,表示魔塔。魔塔的每个格子中有一个怪物或一瓶药水。一名勇士,有初始体力值,从魔塔左上角入口的格子进入,到右下角出口的位置夺取宝石,夺取宝石的规则如下:
1、勇士只能从魔塔内走到右下角且每次只能向下或向右走一格;
2、怪物格子中有一个负整数,表示勇士进入该格子后会损失对应体力值;药水格子中有一个正整数,表示勇士进入该格子后,会增加对应体力值;
例如:怪物格子中的负整数为 -4 时,表示勇士进入该格子后,会损失 4体力值;药水格子中的正整数为2时,表示勇士进入该格子后,会增加 2 体力值。
3、夺取宝石全程,勇士须保持体力值大于0,否则夺取宝石失败。
给定 n行n列的魔塔,请计算勇士最少需要多少初始体力值才可以成功夺取宝石。
例如:n=3;3行3列的魔塔如下:
在这里插入图片描述
在这里插入图片描述

按照 -1、2、-4、2、-2 的路线,当勇士初始体力值为 4时;
第一步:勇士进入-1格子,损失1体力值,体力值变为3;
第二步:勇士接着进入2格子,增加2体力值,体力值变为 5;
第三步:勇士接着进入-4格子,损失4体力值,体力值变为 1;
第四步:勇士接着进入2格子,增加2体力值,体力值变为 3;
第五步:勇士接着进入-2格子,损失2体力值,体力值变为 1。
勇士成功夺取宝石,且全程体力值均大于0,最少需要 4初始体力值。
输入描述
第一行输入一个整数n(2≤n≤200),表示魔塔的行数和列数接下来输入n行,每行n个整数(-1000≤整数≤1000,整数不能为 ,其中负整数表示勇士进入该怪物格子会损失的体力值,正整数表示勇士进入该药水格子会增加的体力值,整数之间以一个空格隔开
输出描述
输出一个整数,表示勇士最少需要的初始体力值
样例输入

3
-1 1-6
2 -4 1
-5 2 -2

样例输出

4

参考程序

python">n = int(input())
grid = [list(map(int, input().split())) for i in range(n)]
dp = [[0] * n for i in range(n)]
dp[-1][-1] = max(1, 1 - grid[-1][-1])# 初始化最后一行和最后一列
for i in range(n - 2, -1, -1):dp[i][-1] = max(1, dp[i + 1][-1] - grid[i][-1])dp[-1][i] = max(1, dp[-1][i + 1] - grid[-1][i])# 填充剩余的格子
for i in range(n - 2, -1, -1):for j in range(n - 2, -1, -1):min_health = min(dp[i + 1][j], dp[i][j + 1])dp[i][j] = max(1, min_health - grid[i][j])print(dp[0][0])

代码解析
勇士只能向下向右移动,需要计算最少初始体力值。我们可以使用倒推的方法。从出口开始记录走到每个格子所需最少体力值,使用动态规划。
以题目样例来讲,从最右下角开始倒推。右下角值为-2,则最少体力值为3,上面格子的值为1,则需要最小体力值为2,依次类推。
首先完成最后一列和最后一行dp表:
0 0 8
0 0 2
6 1 3
接下来补充完整dp表:
4 4 8
3 5 2
6 1 3
所以最小初始体力值为4。

↓↓更多少儿编程真题资料请关注↓↓


http://www.ppmy.cn/news/1522478.html

相关文章

数据分析 设备一个月以来的参数变化

1数据预处理 import pandas as pd import glob import os# 读取所有CSV文件并合并为一个DataFrame path path_to_your_csv_files/ # CSV文件的文件夹路径 all_files glob.glob(os.path.join(path, "*.csv"))df_list [] for file in all_files:df pd.read_csv(f…

FPGA进阶教程16 同一块FPGA的两个网口实现arp自通信

本项目使用同一个FPGA的两个网口进行千兆以太网的arp自动绑定 目的是为了以后实现两个FPGA之间进行以太网数据的交互 起因:最近公司画了一块板子,上面有两个网口,市面上常见的项目都是将FPGA与PC端实现arp的自动绑定和UDP数据的回环,很少实现两块FPGA之间的以太网数据通信…

网络学习-eNSP配置ACL

AR1路由器配置 <Huawei>system-view Enter system view, return user view with CtrlZ. [Huawei]undo info-center enable Info: Information center is disabled. [Huawei]interface gigabitethernet 0/0/0 [Huawei-GigabitEthernet0/0/0]ip address 192.168.2.254 24 …

chunk-vendors.js 文件过大导致页面加载缓慢解决方案

1、路由懒加载 在 Webpack 中&#xff0c;我们可以使用动态 import语法来定义代码分块点 (split point)&#xff1a; import(./Foo.vue) // 返回 Promise如果您使用的是 Babel&#xff0c;你将需要添加 syntax-dynamic-import 插件&#xff0c;才能使 Babel 可以正确地解析语…

Unity制作更换字体的插件

目录 1.前置知识 1.1 EditorWindow 1&#xff09;目的 2&#xff09;使用方式 1.2 OnGUI() 1&#xff09;目的 2&#xff09;使用方式 1.3 AssetDatabase 1&#xff09;目的 2&#xff09;使用方式 1.4 PrefabUtility 1&#xff09;目的 2&#xff09;使用方式 2…

GNU/Linux - Open函数使用的O_CLOEXEC flag

在 Linux 中&#xff0c;“O_CLOEXEC ”标志与 “open ”系统调用一起使用&#xff0c;用于指定在使用 “exec ”系列函数&#xff08;如 “execve”、“execl ”等&#xff09;执行新程序时&#xff0c;“open ”返回的文件描述符应自动关闭。 In Linux, the O_CLOEXEC flag i…

C++(多态性)

多态 多态是指同样的消息被不同类型的对象接收时导致不同的行为。所谓消息是指对类的成员函数的调用,不同的行为是指不同的实现,也就是调用了不同的函数。 最简单的例子就是使用同样的运算符&#xff0c;可以实现整数与整数之间&#xff0c;浮点数与浮点数之间的加法运算。 多…

前端基础面试题·第一篇——HTML

1 .HTML标签头部< !DOCTYPE html> 的作用 DOCTYPE 使 document type的缩写&#xff0c;是html文档的类型声明&#xff0c;告诉浏览器文档的类型&#xff0c;便于解析文档。 这里会涉及到浏览器渲染页面的两种形式&#xff1a; CSS1 Compatible Mode(标准模式): 浏览器使…

Nginx反向代理功能及动静分离实现

一&#xff1a;Nginx支持正向代理和反向代理 1.正向代理 正向代理&#xff0c;指的是通过代理服务器 代理浏览器/客户端去重定向请求访问到目标服务器 的一种代理服务。 正向代理服务的特点是代理服务器 代理的对象是浏览器/客户端&#xff0c;也就是对于目标服务器 来说浏览…

共享内存和信号量

共享内存和信号量可以配合起来一起使用。 什么是共享内存&#xff1f;&#xff1a; 共享内存就是映射一段能被其他进程所访问的内存&#xff0c;这段共享内存由一个进程创建&#xff0c;但多个进程都可以访问。共享内存是最快的IPC方式&#xff0c;它是针对其他进程间通信方式…

漫谈设计模式 [8]:装饰器模式

引导性开场 菜鸟&#xff1a;老鸟&#xff0c;我最近在项目中遇到一个问题。有些功能&#xff0c;比如日志记录和权限校验&#xff0c;我需要在多个地方使用。代码很冗余&#xff0c;不知道有没有更好的解决办法&#xff1f; 老鸟&#xff1a;菜鸟&#xff0c;这个问题很常见…

FaskAPI Web学习

FaskAPI Web学习 个人笔记使用&#xff0c;感谢阅读&#xff01; # -*- ecoding: utf-8 -*- # Author: SuperLong # Email: miu_zxl163.com # Time: 2024/9/7 11:37 from enum import Enum from typing import Optionalfrom fastapi import FastAPI import uvicorn app FastA…

log4j 多classloader重复加载配置问题解决

最近OneCoder在开发隔离任务运行的沙箱&#xff0c;用于隔离用户不同任务间以及任务和 框架本身运行代码的隔离和解决潜在的jar包冲突问题。 运行发现&#xff0c;隔离的任务正常运行&#xff0c;但是却没有任何日志记录。从控制台可看到如下错误信息&#xff1a; 全文详见个人…

从零开始学习JVM(七)- StringTable字符串常量池

1 概述 String应该是Java使用最多的类吧&#xff0c;很少有Java程序没有使用到String的。在Java中创建对象是一件挺耗费性能的事&#xff0c;而且我们又经常使用相同的String对象&#xff0c;那么创建这些相同的对象不是白白浪费性能吗。所以就有了StringTable这一特殊的存在&…

Spark2.x 入门:逻辑回归分类器

方法简介 逻辑斯蒂回归&#xff08;logistic regression&#xff09;是统计学习中的经典分类方法&#xff0c;属于对数线性模型。logistic回归的因变量可以是二分类的&#xff0c;也可以是多分类的。 示例代码 我们以iris数据集&#xff08;iris&#xff09;为例进行分析。i…

Spring AOP的注解式开发实现

目录 AOP常用注解注解开发实现步骤1. 导入Maven项目依赖2. 准备一个实体类&#xff08;先定义接口再实现&#xff09;3. 定义切面类4. 准备配置文件5. 编写测试类 注意事项 AOP的配置开发方式见&#xff1a;Spring入门之AOP&#xff08;包含实例代码&#xff09;。其他纯注解开…

记忆化搜索【下】

375. 猜数字大小II 题目分析 题目链接&#xff1a;375. 猜数字大小 II - 力扣&#xff08;LeetCode&#xff09; 题目比较长&#xff0c;大致意思就是给一个数&#xff0c;比如说10&#xff0c;定的数字是7&#xff0c;让我们在[1, 10]这个区间猜。 如果猜大或猜小都会说明…

Spring Boot之DevTools介绍

Spring Boot DevTools 是 Spring Boot 提供的一组易于使用的工具&#xff0c;旨在加速开发和测试过程。它通过提供一系列实用的功能&#xff0c;如自动重启、实时属性更新、依赖项的热替换等&#xff0c;极大地提高了开发者的开发效率。本文将详细介绍 Spring Boot DevTools 的…

RLVF:避免过度泛化地从口头反馈中学习

人工智能咨询培训老师叶梓 转载标明出处 大模型在不同行业和个人中的广泛应用要求模型能够根据具体的用户反馈进行调整或定制&#xff0c;以满足细微的要求和偏好。虽然通过高层次的口头反馈来指定模型调整非常方便&#xff0c;例如“在给老板起草电子邮件时不要使用表情符号”…

【A题第二套完整论文已出】2024数模国赛A题第二套完整论文+可运行代码参考(无偿分享)

“板凳龙” 闹元宵路径速度问题 摘要 本文针对传统舞龙进行了轨迹分析&#xff0c;并针对一系列问题提出了解决方案&#xff0c;将这一运动进行了模型可视化。 针对问题一&#xff0c;我们首先对舞龙的螺线轨迹进行了建模&#xff0c;将直角坐标系转换为极坐标系&#xff0…