成功案例:我用 AI 给孩子出“珠心算”练习题

2 阅读4分钟

我用 AI 给孩子出“珠心算”练习题

背景

最近为了培养孩子的数感,也想找个东西平时玩玩,锻炼下孩子的空间想象力和专注力,所以研究起了珠心算。

这不,开始就是熟悉打算盘的指法:

下面的 4 颗珠子,上拨用拇指,下拨用食指。

很简单,但是得练习啊。

只能出 4 以内的加减法,中间的计算结果还不能超过 4,难道要自己一道一道的想吗?

灵光一闪,遇事不决问 AI 啊,让 AI 给我出题。

结语写在前面

因为下面会有很多 AI 生成的文本,为了方便大家阅读,所以把结语提到前面了。

从这个例子可以看出几点:

  1. 1. 这是一个很好的用 AI 实现个性化教学的例子;

  2. 2. 跟数学、计算、强逻辑相关的问题,还是让 AI 写代码的方式最保险;

  3. 3. 提出这样的问题,你需要捋清楚逻辑,只要你的逻辑清晰,AI 也能给你回复效果不错的答案;

  4. 4. 只要逻辑清晰,想实现 AI 编程,其实非常简单;

好了,带着这些结论,大家来看下面的过程吧。

AI 直接出题

直接把我的提示词写下来,大家可以直接用试试:

提示词

给我出几个珠心算的练习题,要求如下:

  1. 1. 输出结果是10个计算式,每个计算式像这样:"3+2-4+1-2+3=";

  2. 2. 每个计算式参与计算的数字个数为38个,且每个数都要在 14 闭区间之内;

  3. 3. 因为要模拟算盘计算,所以每个计算式计算过程中的中间结果必须在0~4闭区间之内;

  4. 4. 每个计算式的第一个数一定是正数;

  5. 5. 出完题后把答案列在最后面。

如果没问题的话,直接让它再出一组就行了。

效果

试了下,其实还是稍微有点瑕疵,中间的计算结果会出现等于 5 的情况。

对于7珠算盘没什么问题,但是对于5珠算盘就有点尴尬了。具体回复如下:

ChatGPT: 

以下是符合要求的珠心算练习题及答案:

### 练习题 

1. 3+1-2+1=
2. 4-3+1=
3. 2+2-3+1+1=
4. 1+3-4+2-2=
5. 2-1+3=
6. 3+2-4+1=
7. 4-2+1+1=
8. 3-2+1-1+3=
9. 1+3-2=
10. 2+1-3+4-2=

---

### 答案 

1. 3
2. 2
3. 3
4. 0
5. 4
6. 2
7. 4
8. 3
9. 2
10. 2

You: 

再来一组

ChatGPT: 

以下是新一组珠心算练习题及答案:

### 练习题 

1. 2+3-4+1=
2. 4-3+2-1=
3. 1+2-3+4-2=
4. 3-1+2-3+1=
5. 2+2-1-2+1=
6. 4-2+1-1+2=
7. 3+1-2+3-4=
8. 1+3-2+1=
9. 2+2-4+1+1=
10. 4-2+3-3=

---

### 答案 

1. 2
2. 2
3. 2
4. 2
5. 2
6. 4
7. 1
8. 3
9. 2
10. 2

AI 编程出题

其实对于 AI 直接出题的结果,已经很出乎我的意料了,毕竟有瑕疵但是还不算大。

其实这种问题,最合适的还是用代码来解决,所以把提示词稍微改一下,让 AI 写段代码,效果就完美了。

提示词

帮我写一个随机给孩子出珠心算练习题的python函数,要求如下:

  1. 1. 输出结果是10个计算式,每个计算式像这样:"3+2-4+1-2+3=";

  2. 2. 每个计算式参与计算的数字个数为38个,且每个数都要在 14 闭区间之内;

  3. 3. 因为要模拟算盘计算,所以每个计算式计算过程中的中间结果必须在0~4闭区间之内;

  4. 4. 每个计算式的第一个数一定是正数;

  5. 5. 出完题后把答案列在最后面。

可以看到,其实就改了第一句话而已。下面是给我生成的代码,运气不错,一遍过,大家也可以直接拿去用。

效果

import random

defgenerate_abacus_problems():
    problems = []
    answers = []

    for _ inrange(10):
        whileTrue:  # 用于重复尝试生成符合条件的计算式
            num_count = random.randint(38)  # 随机生成数字个数
            numbers = [random.randint(14for _ inrange(num_count)]  # 生成随机数
            operators = [random.choice(['+''-']) for _ inrange(num_count - 1)]  # 随机选择运算符

            # 构建计算式
            expression = str(numbers[0])
            result = numbers[0]
            valid = True

            for op, num inzip(operators, numbers[1:]):
                if op == '+':
                    result += num
                else:
                    result -= num

                # 检查中间结果是否在0~4范围内
                if result < 0or result > 4:
                    valid = False
                    break

                expression += f"{op}{num}"

            if valid:
                problems.append(expression + "=")
                answers.append(result)
                break

    # 输出练习题和答案
    for problem in problems:
        print(problem)
    print("\n答案:", answers)

# 调用函数生成练习题
generate_abacus_problems()

把上面的代码保存为 demo.py 并且运行之后,会得到下面的结果:

4-1-2+2-1+1+1-2=
3+1-4=
3-2+3-3+2-3+3=
4-2-2+3=
1+2-3=
4-1-3=
1+3-3+3-3+1=
4-2+2=
4-4+2-1-1=
2+2-4=

答案: [2, 0, 3, 3, 0, 0, 2, 4, 0, 0]

结语

见开头。

公众号、知乎、掘金、CSDN 同名,欢迎关注~