跳到主要内容

Python 环境入门

SPIKE App 内置 Python 编辑器,hub 上跑的是 MicroPython(精简版 Python)。本篇讲清环境和"第一个 Python 程序",以及和 Word Blocks 的关系。

为什么升级到 Python

Word BlocksPython
上手需要学语法
循环速度较慢快(巡线采样更密,更稳)
函数My Blocks,无返回值真函数,有返回值
数学运算积木嵌套,写复杂公式很痛苦一行表达式
PID、数据结构勉强自然
版本管理二进制项目文件纯文本,可以用 git

建议路线:Word Blocks 打完基础(理解马达/传感器/控制流)再来,概念全部通用,只是换个写法。

新建 Python 项目

SPIKE App → 新建项目 → 选 Python。左边是代码编辑器,右边控制台(Console)会显示 print() 输出和错误信息——这是 Word Blocks 没有的调试利器。

本站使用 SPIKE App 3 的 API

乐高在 SPIKE App 3 里重写了 Python API(import motor 风格)。网上很多旧教程用的是 SPIKE 2 的 from spike import PrimeHub 风格,两者不兼容。跟着本站学,认准 import motor / from hub import port 的写法。

第一个程序

python
import runloop
from hub import light_matrix, sound

async def main():
    await light_matrix.write("Hello")   # 滚动显示文字,显示完才继续
    sound.beep(440, 300, 100)           # 440 Hz 响 0.3 秒
    print("done")                       # 输出到控制台

runloop.run(main())

点运行,灯光矩阵滚动 "Hello",响一声,控制台打印 done。

必须理解的骨架:async / await / runloop

SPIKE 3 的 Python 是异步风格。凡是需要"等一个动作做完"的程序(几乎所有机器人程序都是),都用这个骨架;纯同步的小脚本(只 print、只亮灯)可以不用:

python
import runloop

async def main():
    ...   # 你的程序写在这里

runloop.run(main())

三条规则,现在先记住,进阶篇再深究原理:

  1. 程序主体写在 async def main(): 里。
  2. "做完才继续"的动作(转够度数、显示完文字)前面加 await
  3. 最后一行 runloop.run(main()) 启动程序。

await motor.run_for_degrees(...) = Word Blocks 里的阻塞积木"转动 x 度";去掉 await ≈ "启动"积木,马达照样开始转,只是程序不等它。注意这只适用于 LEGO 原生 API——你自己定义的 async 函数不加 await 是不会执行的,进阶篇细讲。

python
value = 42
print("reflection =", value)

控制台能连续打印传感器读值,比灯光矩阵显示数字高效得多:

python
import runloop, color_sensor
from hub import port

async def main():
    while True:
        print(color_sensor.reflection(port.C))
        await runloop.sleep_ms(100)

runloop.run(main())

标定阈值从此不用盯着 5x5 点阵认数字了。

练习

  1. 跑通第一个程序。
  2. 故意把 light_matrix 拼错,运行,读一遍控制台的报错信息——学会读错误是 Python 第一技能。
  3. 用上面的循环打印你的颜色传感器黑/白读值,和 Word Blocks 时代标定的值对比。

下一课:API 基础,Python 的语法速成 + SPIKE 模块总览。

© 2026 FLL 知识库 · 保留所有权利