Kodewick
开始学 →

Python 在线运行

免费,不用安装,不用登录。写完就跑,还能一步一步看每个变量怎么变。

试试:
Python 在线运行全屏 · 代码和输出都还在
Python
例子
factorial.py
def factorial(n):
    if n <= 1:
        return 1
    return n * factorial(n - 1)

for i in range(1, 6):
    print(i, factorial(i))
输出

按「运行」看结果

Python 3第 1 行,第 1 列缩进 4 空格学 Python →改一改就会存进「我的代码」
不只是运行

看它怎么跑:变量、调用栈、对象,一步一步画出来

点播放,或者拖动进度条。每一步改了什么会亮黄色,出错的那一步是红的。下面就是真的播放器,不用登录。

▶ 就在这里播放,不用登录
调试和分享

能跑,能停,能回放,能发出去

像在本地用 VS Code 一样顺手,还多了本地没有的:把每一步画出来。

单步

一行一行地跑,每个变量的值都摆在旁边

按「单步」,代码停在每一行:亮的是马上要跑的那行,旁边是此刻每个变量的值。也能往回退,← → 键就能走。

一行一行地跑,每个变量的值都摆在旁边
出错回放

出错了?直接看它是怎么错的

报错下面有「看看怎么错的」:可视化停在出错的那一步,红色标出来,还用人话说清楚原因。前面每一步都能倒回去看。

出错了?直接看它是怎么错的
分享

链接、动图、代码图片,一键发到 X

一个链接打开就是这段代码;也能导出运行过程的动图(浅色 / 深色、横版 / 竖版)和代码图片,发到 X、小红书、群聊,或嵌进博客。

链接、动图、代码图片,一键发到 X
例子

12 个 Python 例子,点一下就在上面运行

每个都能单步、能可视化,改一改再跑。

FizzBuzz

最经典的热身题:循环和 if / elif。

for i in range(1, 16):
    if i % 15 == 0:
        print("FizzBuzz")
    elif i % 3 == 0:
        print("Fizz")
    elif i % 5 == 0:
        print("Buzz")
    else:
        print(i)

列表推导

一行生成平方表,和 for 循环对照着看。

squares = [n * n for n in range(6)]
print(squares)

evens = [n for n in squares if n % 2 == 0]
print(evens)

# the same, with a loop
loop = []
for n in range(6):
    loop.append(n * n)
print(loop == squares)

字典计数

数一句话里每个字母出现几次。

text = "hello kodewick"
count = {}
for ch in text:
    if ch != " ":
        count[ch] = count.get(ch, 0) + 1

for ch, n in sorted(count.items()):
    print(ch, n)

递归阶乘

在可视化里看调用栈一层层叠起来,再一层层返回。

def factorial(n):
    if n <= 1:
        return 1
    return n * factorial(n - 1)

for i in range(1, 6):
    print(i, factorial(i))

斐波那契(记忆化)

同一个数为什么不用再算一遍。

memo = {}

def fib(n):
    if n in memo:
        return memo[n]
    if n < 2:
        return n
    memo[n] = fib(n - 1) + fib(n - 2)
    return memo[n]

print([fib(i) for i in range(10)])

二分查找

每一步范围减半,单步看 lo、hi 怎么走。

def search(xs, x):
    lo, hi = 0, len(xs) - 1
    while lo <= hi:
        mid = (lo + hi) // 2
        if xs[mid] == x:
            return mid
        if xs[mid] < x:
            lo = mid + 1
        else:
            hi = mid - 1
    return -1

print(search([2, 5, 8, 12, 16, 23, 38], 16))

冒泡排序

在可视化里切到「柱状」,看相邻两个怎么交换。

xs = [5, 2, 9, 1, 7]
for i in range(len(xs)):
    for j in range(len(xs) - 1 - i):
        if xs[j] > xs[j + 1]:
            xs[j], xs[j + 1] = xs[j + 1], xs[j]
print(xs)

类和对象

self 到底是谁,可视化里一眼看清。

class Dog:
    def __init__(self, name):
        self.name = name
        self.tricks = []

    def learn(self, trick):
        self.tricks.append(trick)

wang = Dog("旺财")
wang.learn("坐下")
wang.learn("打滚")
print(wang.name, wang.tricks)

链表

节点和箭头,画成一排。

class Node:
    def __init__(self, val, next=None):
        self.val = val
        self.next = next

head = None
for v in [3, 2, 1]:
    head = Node(v, head)

node = head
while node:
    print(node.val)
    node = node.next

异常处理

try / except:出了错,程序也不崩。

for d in [2, 0, 5]:
    try:
        print(10 / d)
    except ZeroDivisionError:
        print("不能除以 0")

读输入

input() 会停下来等你,在输出面板里直接回答。

name = input("你叫什么?")
age = int(input("几岁?"))
print(name, "明年", age + 1, "岁")

海龟画图

turtle 在浏览器里也能画。

import turtle

t = turtle.Turtle()
for _ in range(5):
    t.forward(100)
    t.right(144)
三步

怎么在线运行 Python

  1. 1
    写代码,或选一个例子编辑器和 VS Code 一样:自动补全、括号配对、Ctrl+/ 注释。
  2. 2
    点「运行」,或按 Ctrl + Enter结果在旁边的输出里;程序要 input() 时直接在输出里回答。
  3. 3
    想看过程:点「单步」或「可视化」代码自动存在这个浏览器里,「我的代码」里能找回来。
支持什么

Python,在你的浏览器里跑

✓ 支持

  • Python 3 语法:类、生成器、装饰器、f-string
  • input()、print()
  • 常用标准库:math、random、collections、itertools、datetime、json
  • turtle 画图
  • 报错和 CPython 一样

✕ 暂不支持

  • pip 装第三方库(numpy、pandas……)
  • 读写电脑上的文件
  • 联网请求
  • 停不下来的程序(跑太久会自动停下)
常见问题

关于 Python 在线运行

要钱吗?要注册吗?

都不用。打开就能写、能跑;代码存在你自己的浏览器里,不上传。

手机上能用吗?

能。点一下代码就全屏写,有一排专门的按键(Tab、括号、冒号),输出面板从下面拉起来。

程序要输入(input)怎么办?

运行到 input() 时,输出面板里会出现输入框,回答完按回车,程序接着跑。

和电脑上装的 Python 有什么不同?

语法和报错都一样;不能装第三方库,不能读写本地文件。学语法、练算法、做作业都够用。

「可视化」能看到什么?

每个变量、每层函数调用、列表字典对象之间的箭头;链表、树、二维表格按形状画;一列数字可以切成柱状。

代码报错了,能看出哪里错了吗?

报错下面有「看看怎么错的」:可视化停在出错的那一步,红色标出来,可以一步步往回看它是怎么走到这的。

代码存在哪?会丢吗?

存在这个浏览器里,「我的代码」能找回每个文件;清浏览器数据会丢,重要的可以分享成链接存一份。

怎么把代码发给别人?

「分享」→ 复制链接:对方打开就是同一段代码,不用登录。也能导出运行过程的动图、代码图片,一键发到 X。

还有

另外四种语言,同样能跑、能看