为什么从 Scratch 转到 Python
当孩子已经能用 Scratch 熟练做出动画和游戏之后,下一步就是接触真正的文字编程语言。Python 是青少年学代码的最佳起点:语法接近自然英语、缩进严格但不啰嗦、社区资源丰富,而且很多大学和工作岗位都在用它。从 Scratch 到 Python 的过渡不是推倒重来,而是把积木里的逻辑用文字重新表达一遍。
在 Scratch 里拖一块"移动 10 步"积木,到了 Python 里就是 x = x + 10。在 Scratch 里用 C 形积木包住的循环,到了 Python 里就是 for i in range(10):。逻辑完全一样,只是表达方式从图形变成了文字。这种平移学习让孩子不会觉得是在学全新的东西。
Scratch 是"看得见的编程",Python 是"写出来的编程"。思维是同一套,工具换了而已。
- print在屏幕上输出文字,对应 Scratch 的"说一句话"。
- 变量存储数据的盒子,对应 Scratch 的"建立变量"。
- if条件判断,对应 Scratch 的"如果那么"积木。
- for/while循环,对应 Scratch 的"重复执行"积木。
环境搭建:装好 Python 和编辑器
学 Python 第一步不是写代码,而是把环境装好。推荐安装 Python 官方版本(去 python.org 下载最新稳定版),安装时记得勾选"Add Python to PATH"选项,这样在命令行里直接输入 python 就能启动。
编辑器推荐用 Thonny——这是专门为初学者设计的 Python 编辑器,界面简洁,自带错误提示和变量观察窗,比 VS Code 轻量很多。安装好 Thonny 之后,打开它就是一个空白编辑窗口,下面是交互式 Shell。
| 工具 | 作用 | 类比 Scratch |
|---|---|---|
| Python 解释器 | 执行代码的引擎 | 点绿旗后的运行引擎 |
| Thonny 编辑器 | 写代码的地方 | Scratch 的脚本区 |
| Shell 交互窗口 | 即时输入即时执行 | 单个积木单独测试 |
装好之后,在 Shell 里输入 print("你好") 然后回车,如果屏幕上出现"你好"两个字,说明环境搭好了。这一步一定要让孩子自己做——第一次看到自己写的代码在屏幕上输出文字,是学编程最有仪式感的瞬间。
第一行代码:print 与变量
print 是 Python 里最常用的函数,作用是在屏幕上输出内容。下面这段代码就是一个完整的 Python 程序:
print("欢迎来到 Python 世界")
print("我是青少年编程学员")
把这两行保存成 hello.py,按运行按钮,下面 Shell 窗口就会依次输出两行文字。这和 Scratch 里"说一句话"积木做的事情一模一样。
接下来学变量。变量就是一个带名字的盒子,你可以往里面放数据:
name = "小明"
age = 12
print(name)
print(age)
这里 name 是一个字符串变量(放文字),age 是一个整数变量(放数字)。print 会把变量里存的内容打出来。在 Scratch 里,"建立变量"就是干这个的——你给一个变量起名字,然后随时改它的值。
Python 的变量不需要提前声明类型,你写 age = 12 它就知道这是整数;写 name = "小明" 它就知道这是文字。这种灵活性对初学者很友好——不用先学数据类型,直接用就行。
条件判断:if 让程序做选择
程序不只是按顺序执行,它还要会做判断。比如用户输入一个分数,大于 60 就显示"及格",否则显示"不及格"。这就是 if 条件判断。
score = 75
if score >= 60:
print("恭喜及格了")
else:
print("还需要努力")
注意 Python 的语法细节:if 那一行末尾要有冒号,下面缩进的内容才属于这个 if 块。缩进在 Python 里不是风格问题,而是语法要求——你缩了多少空格,就决定了哪些代码属于这个 if。
这和 Scratch 里的 C 形积木是对应的:Scratch 用积木的形状告诉你"这块在条件里面",Python 用缩进告诉你"这行在 if 里面"。
age = 14
if age >= 18:
print("成年人")
elif age >= 12:
print("青少年")
else:
print("儿童")
elif 是"否则如果"的意思,可以连续写多个条件。这个例子里 14 岁会命中"青少年"分支。在 Scratch 里,你需要叠多个"如果那么"积木才能做同样的事,Python 里用 elif 更紧凑。
循环:for 与 while 重复执行
循环让程序重复做同一件事。Python 有两种循环:for 循环(知道要重复几次)和 while 循环(不知道要重复几次,直到某个条件满足才停)。
for i in range(5):
print("第", i+1, "次问好")
这段代码会打印"第 1 次问好""第 2 次问好"……一直到第 5 次。range(5) 生成 0 到 4 五个数字,i 每次取一个值。这和 Scratch 的"重复执行 10 次"积木完全对应。
while 循环适合"一直做某事直到条件变了":
count = 1
while count <= 3:
print(count)
count = count + 1
这个例子里 count 从 1 开始,每次打印并加 1,直到 count 大于 3 就停。对应 Scratch 的"重复执行直到"积木。
- 已知次数用 for,比如画 5 颗星星、出 10 道题。
- 未知次数用 while,比如一直猜数字直到猜对。
- 死循环while True 会永远跑,用 break 跳出。
小项目一:猜数字游戏
现在把变量、条件、循环组合起来,做一个猜数字游戏。程序心里想一个 1 到 100 的随机数,用户猜大小,程序提示"太大了"或"太小了",直到猜对为止。
import random
answer = random.randint(1, 100)
guess = 0
while guess != answer:
guess = int(input("猜一个 1 到 100 的数:"))
if guess > answer:
print("太大了")
elif guess < answer:
print("太小了")
else:
print("恭喜你猜对了!")
这段代码不到十行,但用到了所有核心概念:import 导入随机数模块、变量存答案和猜测值、while 循环不断猜、if/elif/else 判断大小。
孩子可以自己扩展:加一个计数变量,记录猜了几次才猜对,最后显示"你用了 N 次";加一个上限,最多猜 7 次,超过就提示"游戏结束"。这些扩展都是在已有逻辑上加变量和条件,非常自然。
input() 函数是让用户从键盘输入内容,int() 把输入的文字转成数字。这个"文字转数字"的细节很重要——用户输入的默认是字符串,要做数学比较必须先转成整数。
小项目二:用循环画星星
第二个小项目用 Python 的 turtle 模块画星星。turtle 是 Python 自带的一个画图库,小海龟在屏幕上爬行,它爬过的轨迹就是画出来的线。
import turtle
t = turtle.Turtle()
for i in range(5):
t.forward(100)
t.right(144)
这段代码会画出一个五角星。原理是:每次前进 100 步,右转 144 度,重复 5 次。为什么是 144 度?因为五角星每个外角是 72 度,右转的角度就是 180 减 72 等于 108 度的补角……这里先不深究数学,让孩子改数字试试:把 144 改成 90,看看画出什么形状(正方形);改成 120,画三角形。
这种"改一个数字看图形怎么变"的实验,和 Scratch 里改积木数字的体验一模一样。孩子会在这种反复试错中建立"角度决定形状"的几何直觉。
- 加颜色:t.color("red") 把画笔改成红色。
- 画多颗:把整个画星星的循环再套一层 for,每次挪位置画一颗。
- 填颜色:用 t.begin_fill() 和 t.end_fill() 把星星涂满。
从 print 到变量、条件、循环,再到两个小项目——孩子已经具备了用 Python 解决实际问题的基本能力。接下来可以学列表、函数、模块,逐步进入信息学奥赛的预备阶段。