为什么要专门讲这个知识点学生从 Scratch 转到 Python最大的坎往往不是语法而是原来那块积木现在该写什么。在 Scratch 里重复执行是一块 C 形积木把别的积木塞进去就完成了到了 Python循环变成关键字 条件 冒号 缩进四件事任何一处出错程序都不会按预期跑。先把对应关系列成一张表后面学 for、while、嵌套循环都能挂在这张表上ScratchPython重复执行 10 次for i in range(10):重复执行一直while True:重复执行直到 条件while not 条件:或按语义取反的while 条件:完整代码Scratch 版画正方形当绿旗被点击 → 落笔 → 重复执行 4 次 → 移动 100 步、右转 90 度。翻译成 Pythonimportturtle tturtle.Turtle()t.speed(0)foriinrange(4):t.forward(100)t.right(90)turtle.done()把边数改成输入就是重复执行 n 次的通用写法importturtle nint(input(请输入边数))tturtle.Turtle()t.speed(0)foriinrange(n):t.forward(80)t.right(360/n)turtle.done()再看重复执行直到。Scratch 里常见的是重复执行直到碰到边缘Python 用 while 实现importturtle screenturtle.Screen()tturtle.Turtle()t.speed(0)limitscreen.window_width()/2-20whilet.xcor()limit:t.forward(5)print(到达边界x ,round(t.xcor(),1))turtle.done()代码要点拆解1. range 的计数方式range(4)产生 0、1、2、3共 4 个数循环执行 4 次和重复执行 4 次对得上。但range(1, 4)只有 1、2、3跑 3 次。判断次数的口诀是结束值减起始值。2. 缩进就是 C 形积木的开口Scratch 里哪些积木在循环内看它有没有被塞进口子Python 用缩进表达同一件事循环体每行都要缩进且缩进量一致。3. while 需要自己推动条件for的次数由 range 决定不用操心while的条件必须靠循环体改变。上面那段代码里t.forward(5)每次让 x 坐标变大t.xcor() limit迟早变成 False循环才会停。4. 边界值用变量算出来limit没有直接写 460而是从窗口宽度算出。换屏幕、改窗口大小都不用改代码学生也能体会变量存放会变化的值。5. 角度要用普通除法360 / n得到浮点数turtle 能接受。写成360 // n取整后画七边形时角度是 51 而不是 51.43误差累积会让图形合不拢。学生常见错误i从别的语言或 Scratch 的将变量增加 1迁移过来会写出i。Python 没有自增运算符要写i 1。忘记冒号for i in range(4)后面必须跟英文冒号。中文冒号也是常见报错来源输入法没切过来时特别容易。只缩进第一行foriinrange(4):t.forward(100)t.right(90) 这样右转只执行一次画出来是一条直线加一个转向。学生看到结果和 Scratch 不一样常以为循环坏了其实是缩进范围错了。**死循环后不会退出**while条件没被改变时程序会一直跑。命令行按 CtrlC 中断Thonny 里点停止按钮。这个操作要教给学生否则一次死循环就可能让他们不敢再用while。**把range当成从1数到 n**画多边形时循环体用不到 i看不出问题一旦要打印第几条边输出会从0开始需要自己加1。**嵌套循环缩进层级乱**画网格要用两层循环外层循环体里除了内层for还可能有抬笔落笔这类语句缩进少一层就会跑到循环外面。## 可以留的练习