Turtle库的建立——汉诺塔
2019-04-11 10:06:13来源:博客园 阅读 ()
Turtle库的建立——汉诺塔
1、首先是要用递归方法来完成这个汉诺塔法则
2、其次,就要编程好代码以及熟练掌握Turtle函数库
一、 相关代码如下:
import turtle class Stack: def __init__(self): self.items = [] def isEmpty(self): return len(self.items) == 0 def push(self, item): self.items.append(item) def pop(self): return self.items.pop() def peek(self): if not self.isEmpty(): return self.items[len(self.items) - 1] def size(self): return len(self.items) def drawpole_3(): t = turtle.Turtle() t.hideturtle() def drawpole_1(k): t.up() t.pensize(10) t.speed(100) t.goto(400*(k-1), 400) t.down() t.goto(400*(k-1), -100) t.goto(400*(k-1)-20, -100) t.goto(400*(k-1)+20, -100) drawpole_1(0) drawpole_1(1) drawpole_1(2) def creat_plates(n): plates=[turtle.Turtle() for i in range(n)] for i in range(n): plates[i].up() plates[i].hideturtle() plates[i].shape("square") plates[i].shapesize(1,20-i) plates[i].goto(-400,-90+20*i) plates[i].showturtle() return plates def pole_stack(): poles=[Stack() for i in range(3)] return poles def moveDisk(plates,poles,fp,tp): mov=poles[fp].peek() plates[mov].goto((fp-1)*400,550) plates[mov].goto((tp-1)*400,550) l=poles[tp].size() plates[mov].goto((tp-1)*400,-90+20*l) def moveTower(plates,poles,height,fromPole, toPole, withPole): if height >= 1: moveTower(plates,poles,height-1,fromPole,withPole,toPole) moveDisk(plates,poles,fromPole,toPole) poles[toPole].push(poles[fromPole].pop()) moveTower(plates,poles,height-1,withPole,toPole,fromPole) myscreen=turtle.Screen() drawpole_3() n=int(input("请输入汉诺塔的层数并回车:\n")) plates=creat_plates(n) poles=pole_stack() for i in range(n): poles[0].push(i) moveTower(plates,poles,n,0,2,1) myscreen.exitonclick()
(盘子最多19个)
二、 试验结果如下:
三、 实验说明:
我们可以更改代码(drawpole_1)这个函数中的
第一个t.goto中400可改为其他来达到你想要的杆的长度
再更改
函数中的
20-i这部分,可以得到你想要限制的盘的个数,这样就完成了汉诺塔问题。
原文链接:https://www.cnblogs.com/asd516970982/p/10597803.html
如有疑问请与原作者联系
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- 20190710-汉诺塔算法 2019-07-24
- 【Python实践-3】汉诺塔问题递归求解 2019-04-21
- python 游戏 —— 汉诺塔(Hanoita) 2019-04-11
- Python使用turtle库与random库绘制雪花 2019-04-11
- Python turtle绘制阴阳太极图代码解析 2019-04-11
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash