我用 AI 给孩子出“珠心算”练习题
背景
最近为了培养孩子的数感,也想找个东西平时玩玩,锻炼下孩子的空间想象力和专注力,所以研究起了珠心算。
这不,开始就是熟悉打算盘的指法:
下面的 4 颗珠子,上拨用拇指,下拨用食指。
很简单,但是得练习啊。
只能出 4 以内的加减法,中间的计算结果还不能超过 4,难道要自己一道一道的想吗?
灵光一闪,遇事不决问 AI 啊,让 AI 给我出题。
结语写在前面
因为下面会有很多 AI 生成的文本,为了方便大家阅读,所以把结语提到前面了。
从这个例子可以看出几点:
-
1. 这是一个很好的用 AI 实现个性化教学的例子;
-
2. 跟数学、计算、强逻辑相关的问题,还是让 AI 写代码的方式最保险;
-
3. 提出这样的问题,你需要捋清楚逻辑,只要你的逻辑清晰,AI 也能给你回复效果不错的答案;
-
4. 只要逻辑清晰,想实现 AI 编程,其实非常简单;
好了,带着这些结论,大家来看下面的过程吧。
AI 直接出题
直接把我的提示词写下来,大家可以直接用试试:
提示词
给我出几个珠心算的练习题,要求如下:
1. 输出结果是10个计算式,每个计算式像这样:"3+2-4+1-2+3=";
2. 每个计算式参与计算的数字个数为3
8个,且每个数都要在 14 闭区间之内;3. 因为要模拟算盘计算,所以每个计算式计算过程中的中间结果必须在0~4闭区间之内;
4. 每个计算式的第一个数一定是正数;
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. 输出结果是10个计算式,每个计算式像这样:"3+2-4+1-2+3=";
2. 每个计算式参与计算的数字个数为3
8个,且每个数都要在 14 闭区间之内;3. 因为要模拟算盘计算,所以每个计算式计算过程中的中间结果必须在0~4闭区间之内;
4. 每个计算式的第一个数一定是正数;
5. 出完题后把答案列在最后面。
可以看到,其实就改了第一句话而已。下面是给我生成的代码,运气不错,一遍过,大家也可以直接拿去用。
效果
import random
defgenerate_abacus_problems():
problems = []
answers = []
for _ inrange(10):
whileTrue: # 用于重复尝试生成符合条件的计算式
num_count = random.randint(3, 8) # 随机生成数字个数
numbers = [random.randint(1, 4) for _ 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 同名,欢迎关注~