2024 年全国青少年信息素养大赛 Python 小学组复赛真题
2024年全国青少年信息素养大赛Python小学组复赛真题包括六个编程题目,涉及基础运算、字符串处理、循环计算、握手次数、错排问题和阶梯式收费计算等编程逻辑。题目要求用户编写程序完成具体任务,例如计算5乘以输入的N值、统计垃圾总量、处理字符串前缀、计算握手次数、解决错排问题以及计算水费等。每个题目都有详细的输入输出描述和参考代码,用户需根据题目要求完成相应功能。
2024 年全国青少年信息素养大赛 Python 小学组复赛真题
《伶俐角少儿编程》gzh查看所有题目
第一题
请编写一个Python程序,该程序用于评估用户对基础数学运算的掌握程度。具体来说,请用户输入一个正整数N(0≤N≤1000),然后计算并输出5_ N的值。
输入描述
在输入行中,请输入一个正整数(在输入语句中无需添加提示);参考以下示例输入。
输出描述
输入(5*N)的值,请参考如下的输出样例。
样例输入
9
样例输出
45
参考代码
N = int(input()) # 输入并转为整数
print(5 * N) # 输出5*N的值
第二题
题目描述
小镇上每天都有一辆货车负责收集居民的垃圾。编写一个程序,用于统计每周垃圾的总重量。程序需要从用户处获取以下信息:首先输入一个正整数n,表示天数(最多7天)。然后输入n个正数,每个正数代表某一天收集的垃圾重量(单位:公斤)。程序将使用for循环和变量自增技术来计算总垃圾重量。
输入描述
请描述输入内容。
请输入一个正整数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,表示员工的数量(1≤N≤1000)。
第二行包含 N 个以空格分隔的整数,表示员工进入会议室的顺序,且所有整数均唯一。
输出描述
输出一行,一个整数,表示全公司握手的总次数。
样例输入
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])
第六题
题目描述
一行,一个正整数 N(0<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)) # 输出整数
