Python汉诺塔问题

move=0
def han (n,one,two,mid):
    global move
    if n==1:
        print("{}号盘子:从{}到{}".format(1,one,two))
        move+=1
    else:
        han(n-1,one,mid,two)
        print("{}号盘子:从{}到{}".format(n,one,two))
        move+=1
        han(n-1,mid,two,one)
N=eval(input())
han(N,"A","B","M")
print("移动次数:",end='')
print(move)

动画演示

import turtle as t
def up (x,y):
    t.penup()
    t.goto(x,y)
    t.pendown()
def line (a,b,l,c):
    up(a,b)
    t.pencolor(c)
    t.fd(l)
t.setup(500,200)
t.speed(0)
t.penup()
t.goto(250,-50)
t.pendown()
t.colormode(255)
t.color("brown","brown")
t.begin_fill()
t.goto(250,-100)
t.goto(-250,-100)
t.goto(-250,-50)
t.end_fill()

t.hideturtle()
t.pensize(20)
line(-155,-40,60,"blue")
line(-145,-20,40,"pink")
line(-135,0,20,"yellow")
t.delay(350)
line(-135,0,20,"white")
line(115,-40,20,"yellow")
t.delay(350)
line(-145,-20,40,"white")
line(-20,-40,40,"pink")
t.delay(350)
line(115,-40,20,"white")
line(-10,-20,20,"yellow")
t.delay(350)
line(-155,-40,60,"white")
line(95,-40,60,"blue")
t.delay(350)
line(-10,-20,20,"white")
line(-135,-40,20,"yellow")
t.delay(350)
line(-20,-40,40,"white")
line(105,-20,40,"pink")
t.delay(350)
line(-135,-40,20,"white")
line(115,0,20,"yellow")

 

posted on 2020-03-31 11:58  zhangsijie  阅读(210)  评论(0)    收藏  举报

导航