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)免费,不用安装,不用登录。写完就跑,还能一步一步看每个变量怎么变。
点播放,或者拖动进度条。每一步改了什么会亮黄色,出错的那一步是红的。下面就是真的播放器,不用登录。
像在本地用 VS Code 一样顺手,还多了本地没有的:把每一步画出来。
按「单步」,代码停在每一行:亮的是马上要跑的那行,旁边是此刻每个变量的值。也能往回退,← → 键就能走。

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

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

每个都能单步、能可视化,改一改再跑。
最经典的热身题:循环和 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.nexttry / 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)都不用。打开就能写、能跑;代码存在你自己的浏览器里,不上传。
能。点一下代码就全屏写,有一排专门的按键(Tab、括号、冒号),输出面板从下面拉起来。
运行到 input() 时,输出面板里会出现输入框,回答完按回车,程序接着跑。
语法和报错都一样;不能装第三方库,不能读写本地文件。学语法、练算法、做作业都够用。
每个变量、每层函数调用、列表字典对象之间的箭头;链表、树、二维表格按形状画;一列数字可以切成柱状。
报错下面有「看看怎么错的」:可视化停在出错的那一步,红色标出来,可以一步步往回看它是怎么走到这的。
存在这个浏览器里,「我的代码」能找回每个文件;清浏览器数据会丢,重要的可以分享成链接存一份。
「分享」→ 复制链接:对方打开就是同一段代码,不用登录。也能导出运行过程的动图、代码图片,一键发到 X。