【编程日报 004】
上周女儿学Python,教材第一课是print("Hello World")。她问我:"这和我用Scratch说'你好'有什么区别?"今天用10行代码,做一个能玩5分钟的游戏。复制就能运行。
最终效果
我想了一个1-100的数字,你猜是多少?你的猜测:50太大了!再试一次。你的猜测:25太小了!再试一次。你的猜测:37恭喜你!用了3次猜对了!
分步代码(每步可复制测试)
第1-2行:让电脑"想"一个数字
import random # 引入随机数工具箱number = random.randint(1, 100) # 电脑随机想1-100之间的数print("我想了一个1-100的数字,你猜是多少?")
问孩子:"如果改成randint(1, 10),游戏会变简单还是更难?"
第3-4行:获取玩家的猜测
guess = input("你的猜测:") # 等待玩家输入guess = int(guess) # 把文字转成数字
关键概念:input()得到的是"文字"(字符串),必须用int()转成"数字"才能比较。常见bug:如果玩家输入"abc",程序会崩溃。暂时不管,第6篇讲异常处理。问孩子:"如果去掉int(),直接比较guess > number,会发生什么?试试?"
第5-8行:判断并给出反馈
if guess > number: print("太大了!再试一次。")elif guess < number: print("太小了!再试一次。")else: print("恭喜你!猜对了!")
关键概念:if-elif-else是编程的"分支结构",让程序能"做决定"。问孩子:"如果猜对了,程序会执行哪几行?猜大了呢?"
第9-10行:循环直到猜对(进阶)
while guess != number: # 当猜测不等于答案时,一直循环 guess = int(input("你的猜测:")) # 这里插入上面的if-elif-else判断
关键概念:while循环让游戏能"玩多次",直到条件满足。
完整代码(可直接复制运行)
import randomnumber = random.randint(1, 100)print("我想了一个1-100的数字,你猜是多少?")count = 0 # 计数器while True: guess = int(input("你的猜测:")) count = count + 1 if guess > number: print("太大了!") elif guess < number: print("太小了!") else: print(f"恭喜你!用了{count}次猜对了!") break
3个扩展挑战(做完基础版再试)
| | |
| | |
| | |
| | 开始问"选难度:1简单(1-50) 2中等(1-100) 3困难(1-200)" |
从Scratch到Python:孩子需要适应什么?
| | |
| | |
| | "没有小猫了?" → 用print()画"文字画面" |
| | |
| | "什么时候用:?" → 记住if/while/for后面有 |
今晚就能试
1.你写,孩子猜(15分钟)
复制上面的完整代码,保存为guess.py
你运行,孩子猜,记录用了几次
2.孩子改,你猜(15分钟)
关键观察:孩子改的时候,是"试-报错-改-再试",还是"想清楚了再改"?前者是正常学习过程,别急着纠正。
难度标签
入门—— 适合8岁+,有Scratch基础,第一次接触Python
家长工具箱
下期预告
005|不用电脑,今晚玩"编程桌游"(培养算法思维)
附录:常见报错速查