2024年全国青少年信息素养大赛Python小学组复赛真题
2024 年全国青少年信息素养大赛 Python 小学组复赛真题
《伶俐角少儿编程》gzh查看所有题目
第一题
题目说明
在某个充满奇幻色彩的国度中,君主计划通过一项简易的数学运算考核来检验民众对于基本算术知识的理解程度。他规定每位参与者需提交一个正整数 N (0≤N≤1000),随后计算并展示(5 N)的结果值。请运用Python语言编写程序实现此功能:运行后提示用户录入正整数(N),并完成(5 N)表达式的计算及结果输出操作。
数据输入规范
程序需读取单行整数输入(无需在输入语句中添加任何提示信息) ,具体格式请参照以下示例。
结果输出规范
程序应显示计算得到的(5*N)数值结果,请参照下列示例格式进行输出。
示例输入数据
9
预期输出结果
45
代码实现范例
N = int(input()) # 输入并转为整数
print(5 * N) # 输出5*N的值
第二题
题目描述
某镇每日均有运输车辆执行居民废弃物回收任务。为核算整周废弃物累计重量,请设计一程序实现该功能:接收每日回收量数据后自动汇总生成周度总量报告。
要求:
输入数据需遵循以下规则:首先提供一个正整数n(范围不超过7),代表统计周期天数;随后依次录入n个正数值(单位:公斤),每个数值对应单日废弃物重量(注:程序中应采用循环结构与计数器变量完成累加运算)。
输出规范
最终结果需以整型数值形式展示于屏幕界面中,该数值表示完整统计周期内废弃物总重量之和。
数据输入标准
首行读取正整数n(表示天数),其后n行依次读取各日垃圾重量值(每行仅含单一数字)。
结果输出标准
在终端显示单个整型数字作为最终计算结果。
示例数据输入
5
10
20
30
40
50
预期输出结果
150
参考代码
n = int(input()) # 输入并转为整数
s = 0
for i in range(n): # 循环n次
s += int(input()) # 输入垃圾重量并求和
print(s) # 输出垃圾总重量
第三题
题目描述
在特定的文本处理场景中, 有可能需要向字符串内每个字符前置插入预设符号, 比如英文字母A。
若正在设计一款文本处理程序, 需要实现的功能是: 对用户提交的任意字符串进行逐字符前置附加操作, 具体附加符号为字母A。
要求:
构建一段代码, 接收原始字符串作为参数, 实现对每个字符执行前置附加操作(附加符号为A), 最终生成并返回经过转换的新字符串。
输入描述
单行数据, 包含待处理的原始字符串
输出描述
单行数据, 展示经过转换后的结果字符串(原字符串每个字符均前置附加A)
示例输入
hello
示例输出
AhAeAlAlAo
参考代码
s = input()
r = ''
# 循环遍历输入的字符串s
for i in s:
# 将每个字符前加“A”并拼接到新字符串中
r += 'A' + i
print(r)
第四题
问题陈述
某家企业共有 n 名职员,其编号依次为 0 至 N-1。一日内,在总经理主持下开展了一场互动活动。
具体执行流程如下:
依据特定排序方式依次引导全部 N 名职员进入会客室;每当一名职员步入会客室时需与当前已在室内且编号低于自身者完成礼节性碰触动作。
请推算该企业全体成员累计完成碰触动作的总次数。
数据规格说明
输入由两组数据构成
1.第一组为整型数值 N(范围限定于 1≤N≦1000),用于标识人员规模
2.第二组包含 N 个互异整数序列(取值区间为 [0,N-1]),反映人员入场先后次序
结果呈现规范
输出单一整型数值于独立行中显示系统统计所得的总碰触次数
示例数据集
8
7 0 2 5 6 1 3 4
预期计算结果
14
代码实现参考
N = int(input())
# 将输入内容以空格分割并转为整数列表
l1 = list(map(int, input().split()))
l2 = [] # 入会员工编号列表
count = 0 # 握手次数
for i in l1: # i为入会员工编号
for j in l2: # j为已入会员工编号
# 如果入会员工编号大于已入会员工编号
if i > j:
count += 1 # 握手次数加1
l2.append(i) # 入会
print(count)
第五题
题目描述
企业向每位职员配发专用便签纸,并配置印有对应姓名的封装袋。当所有便签均被误放入非对应的封装袋时,请计算出现全错位排列现象的不同组合方式总数?
输入描述
输入参数为一个正整数n(n≤20),用于表示企业内员工总数。
输出描述
输出结果应为一整数值,用以体现满足条件的所有可能性数量。
样例输入
2
样例输出
1
参考代码
# 错排问题,动态规划解决
n = int(input())
dp = [0] * (n + 1)
dp[1] = 0 # 一封错排数量为0
dp[2] = 1 # 两封错排数量为1,互相交换
for i in range(3, n + 1):
# 通过前i-1,i-2计算i封时的错排数量
dp[i] = (i - 1) * (dp[i - 1] + dp[i - 2])
print(dp[n])
第六题
题目说明
某企业针对用户的用水量实施分段计费模式。具体费率规定如下:
(1)当用水量未超过50吨时,按每吨2元的标准执行;
(2)若用水量介于51至150吨之间,则超出基础额度的部分按每吨1.5元计价;
(3)对于超过150吨的情形,在基准线以上的用量按每吨1元收取费用。
依据用户提供的确切用水总量数据,请开发相应程序以精确计算其所需支付的总金额。
在费用核算过程中需特别注意:最终费用需舍去小数位后的数值进行结算。例如,在理论值为107.5元的情况下实际收取金额应为107元整。
参数说明
输入形式为单行数据流,包含一个正整数N(范围限定在大于零且小于300)
结果呈现
输出形式采用单行数值格式显示用户的应付账款总额
示例输入
55
示例输出
107
参考代码
N = int(input())
m = 0
# 通过判断不同情况,用不同方法计算水费
if N <= 50:
m = N
elif N <= 150:
m = 50 * 2 + (N - 50) * 1.5
else:
m = 50 * 2 + 100 * 1.5 + (N - 150)
print(int(m)) # 输出整数
