-
效果图
动画版汉诺塔效果图 - 源码如下:
import turtle as t
def hanoi(n, a, b, c):
if n == 1:
move(a, c)
else:
hanoi(n - 1, a, c, b)
move(a, c)
hanoi(n - 1, b, a, c)
def move(a, b):
m = towers[a].pop() # 列表尾部的小盘子删除,并取出
m.goto(p[b], len(towers[b]) * 20) # 移动取出的小盘子
towers[b].append(m) # 取出的小盘子放入另一个塔
n = 5
towers = [[], [], []] # 三个塔
p = [-200, 0, 200] # 三个塔的x位置
for i in range(n): # 初始化第一个塔
tt = t.Turtle() # 盘子是一个乌龟
# 设置乌龟不划线,黑线黄底,方块状,大小、位置
tt.up()
tt.color('black', 'yellow')
tt.shape('square')
tt.shapesize(1, n - i) # 列表头部是最大的盘子,尾部是最小的盘子
tt.goto(p[0], i * 20)
towers[0].append(tt) # 把乌龟放入第一个塔
hanoi(n, 0, 1, 2)
t.done()
网友评论