全国青少年信息素养大赛复赛真题Python2025年小高组

四季读书网 3 0
全国青少年信息素养大赛复赛真题Python2025年小高组

📚 适合人群:Python初学者、循环嵌套基础练习题、小学生编程作业

💡 核心考点:多重for循环、枚举思想、条件判断、组合计数


一、题目描述

小华拿着 n 元钱 去糖果店买糖,店里只有三种糖果:

  • 🍭 棒棒糖:5 元/根

  • 🍫 巧克力:8 元/块

  • 🍮 果冻糖:10 元/颗

要求:恰好花完所有的钱,可以只买一种、或多种任意搭配。

我们需要统计出:一共有多少种合法的「完美购买方案」。

题目示例

当 n = 20 时,一共有3 种方案

  1. 4 根棒棒糖:5 × 4 = 20

  2. 2 根棒棒糖 + 1 颗果冻糖:5 × 2 + 10 × 1 = 20

  3. 2 颗果冻糖:10 × 2 = 20


二、解题思路(超易懂)

这是一道经典的枚举题,核心思路:

把所有「可能购买的糖果数量」全部试一遍,满足条件就计数 +1。

设:

  • x = 棒棒糖数量

  • y = 巧克力数量

  • z = 果冻糖数量

只要满足公式:5x + 8y + 10z = 总钱数 n

就是合法的完美方案。


三、完整正确代码

本次只保留三层循环原版写法,最贴合初学逻辑。

# 定义三种糖果的单价a = 5b = 8c = 10# 输入总金额n = int(input())# 统计方案数量count = 0# 遍历所有可能的棒棒糖数量for x in range(n // a + 1):    # 遍历所有可能的巧克力数量    for y in range(n // b + 1):        # 遍历所有可能的果冻糖数量        for z in range(n // c + 1):            # 判断是否恰好花完所有钱            if 5 * x + 8 * y + 10 * z == n:                count += 1# 输出总方案数print(count)

四、逐行代码详解

1. 定义单价

用变量存储价格,代码更清晰,方便修改和阅读。

2. 循环范围 n // 单价 + 1

n // a 代表该糖果最多能买多少个

末尾 +1 是关键:因为 range 取不到右边界,必须加1才能包含「买0个、买最大数量」的情况。

3. 三层循环枚举

把 x、y、z 的所有组合全部遍历一遍,不遗漏任何搭配方案。

4. 条件判断计数

只要总价刚好等于手里的钱,说明是完美方案,计数器加一。


五、新手高频易错点

  • 易错1:忘记 +1:会漏掉买0个、买最大数量的方案,答案偏小

  • 易错2:不允许买0个:题目允许只买一种糖果,数量可以为0


六、总结

✅ 本题核心:枚举所有组合,筛选合法方案

✅ 三层循环写法逻辑直观,零基础完全能看懂.

✅ 只要掌握「遍历+判断+计数」,就能搞定所有同类搭配计算题!

持续打卡基础题,轻松吃透 Python 循环!

抱歉,评论功能暂时关闭!