很多孩子刚开始学Python的时候会问我:"老师,Python能做什么好玩的?"
我一般会带他们做的第一个项目就是——猜数字游戏。
别看它简单,这个小游戏里藏着Python入门最核心的几个知识点:变量、输入输出、条件判断、循环。孩子做完之后,不仅有成就感,还能把这些概念真正理解透。
今天就把这个教程分享出来,家长可以带着孩子在家试试。
游戏规则
先说我们要做的东西:
🎯 电脑随机想一个1到100之间的数字
🎯 玩家来猜,每次猜完电脑告诉你"大了"还是"小了"
🎯 直到猜对为止,最后告诉你一共猜了几次
是不是很熟悉?小时候我们在纸上玩过的游戏,现在让孩子用代码做出来。
准备工作
你需要在电脑上安装Python。如果还没装,去 python.org 下载最新版就行。安装的时候记得勾选"Add Python to PATH"。
装好之后,打开一个文本编辑器(推荐用IDLE,Python自带的),新建一个文件,命名为 guess_number.py。
第一步:让电脑"想"一个数字
我们需要用到Python的 random 模块,让电脑随机生成一个数字:
import random
secret = random.randint(1, 100)
print("我已经想好了一个1到100之间的数字,来猜猜看!")
这里有两个知识点:
-
- 📦
import random —— 导入模块,就像打开一个工具箱 -
- 🎲
random.randint(1, 100) —— 从1到100随机选一个整数 -
运行一下,屏幕上会显示那句提示语。当然,现在还不能猜,因为我们还没写猜的逻辑。
第二步:让玩家输入猜的数字
guess = input("请输入你猜的数字:")
guess = int(guess)
这里要注意:input() 接收的是文字(字符串),我们需要用 int() 把它转成数字,不然没法比大小。
这是初学者最容易踩的坑之一。我课上经常有孩子问:"老师,为什么我输入50,它说比'42'大呀?" 因为字符串比较和数字比较是不一样的!
第三步:判断猜的对不对
if guess == secret:
print("🎉 恭喜你,猜对了!")
elif guess > secret:
print("大了,再猜猜~")
else:
print("小了,再猜猜~")
这就是Python里的条件判断:if...elif...else。翻译成人话就是:
如果猜对了 → 恭喜
否则如果猜大了 → 提示"大了"
否则 → 提示"小了"
第四步:加上循环,可以反复猜
现在的问题是:只能猜一次就结束了。我们需要让它"循环"起来,直到猜对为止。
这就要用到 while 循环了。来看完整代码:
import random
secret = random.randint(1, 100)
count = 0
print("🎮 猜数字游戏")
print("我想了一个1到100之间的数字,你来猜!")
print("-" * 30)
while True:
guess = input("请输入你猜的数字:")
guess = int(guess)
count = count + 1
if guess == secret:
print(f"🎉 恭喜你,猜对了!答案就是{secret}")
print(f"你一共猜了{count}次")
break
elif guess > secret:
print("📈 大了,再试试~")
else:
print("📉 小了,再试试~")
while True 表示"一直循环",break 表示"跳出循环"。所以这段代码的意思是:一直猜,直到猜对了就停下来。
count 是一个计数器,每猜一次就加1,最后告诉玩家一共猜了几次。
💡 运行一下试试
保存文件,然后在命令行输入 python guess_number.py 运行。和孩子一起玩几把,看看谁猜的次数最少!
进阶挑战:让游戏更好玩
基础版做完了,孩子如果意犹未尽,可以试试这些升级任务:
挑战1:限制猜的次数
比如最多只能猜7次(数学上,用二分法7次肯定能猜到1-100的数):
max_tries = 7
while count < max_tries:
# ... 猜的逻辑 ...
if count == max_tries:
print(f"😢 很遗憾,次数用完了。答案是{secret}")
挑战2:加入难度选择
print("请选择难度:")
print("1. 简单(1-50)")
print("2. 普通(1-100)")
print("3. 困难(1-500)")
level = input("输入1/2/3:")
if level == "1":
secret = random.randint(1, 50)
elif level == "2":
secret = random.randint(1, 100)
else:
secret = random.randint(1, 500)
挑战3:防止输入错误
如果玩家输入的不是数字(比如输了个"abc"),程序会崩溃。我们可以加一个保护:
try:
guess = int(input("请输入你猜的数字:"))
except ValueError:
print("⚠️ 请输入一个数字哦!")
continue
这就是异常处理,虽然是进阶内容,但放在这个场景里孩子很容易理解:程序遇到意外情况时,不要崩溃,而是友好地提醒用户。
这个项目里学到了什么
别小看这个小游戏,我们来盘点一下里面的知识点:
| 知识点 | 在游戏中的用途 |
import 模块 | 导入random生成随机数 |
| 变量 | 存储答案、猜的数字、次数 |
input() 输入 | 获取玩家猜的数字 |
print() 输出 | 显示提示信息 |
类型转换 int() | 把文字转成数字 |
条件判断 if/elif/else | 判断猜大了、小了、对了 |
循环 while | 让游戏可以反复猜 |
break | 猜对后退出循环 |
| f-string 格式化 | 在文字中嵌入变量 |
一个小游戏,覆盖了Python入门60%的核心知识点。这就是为什么我爱用项目来教编程——知识不是灌进去的,是用着用着就会了的。
给家长的话
这个项目特别适合刚学Python的孩子(一般10岁以上),大概1-2个小时就能完成。
过程中你可能会遇到一些问题,比如缩进错误(Python对缩进非常敏感)、忘记类型转换等。这些"Bug"不是坏事,恰恰是最好的学习机会。
陪孩子做的时候,你不需要懂Python,只需要做好两件事:
-
- 👂 当孩子卡住的时候,耐心听他描述问题
-
- 👏 当孩子搞定的时候,真心地给他鼓掌
-
编程最好的学习方式,就是做一个真正有趣的东西。猜数字游戏只是开始,后面还有更多好玩的项目等着孩子去探索。
如果你家孩子做出了升级版,欢迎在评论区分享代码截图!我会认真看每一个,说不定下期就展示你家孩子的作品 😊
· · ·
码小芽 | 让每个孩子都能快乐编程 🌱
少儿编程老师 | 3年一线教学经验 | 用真话聊编程教育