校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃

主頁 > 知識庫 > python繪制漢諾塔

python繪制漢諾塔

熱門標簽:阿里電話機器人對話 正安縣地圖標注app 遼寧智能外呼系統需要多少錢 400電話申請資格 電銷機器人系統廠家鄭州 qt百度地圖標注 螳螂科技外呼系統怎么用 舉辦過冬奧會的城市地圖標注 地圖地圖標注有嘆號

本文實例為大家分享了python繪制漢諾塔的具體代碼,供大家參考,具體內容如下

源碼:

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(): # 畫出漢諾塔的poles
  t = turtle.Turtle()
  t.hideturtle()
  def drawpole_1(k):
    t.up()
    t.pensize(10)
    t.speed(100)
    t.goto(400 * (k - 1), 100)
    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) # 畫出漢諾塔的poles[0]
  drawpole_1(1) # 畫出漢諾塔的poles[1]
  drawpole_1(2) # 畫出漢諾塔的poles[2]
def creat_plates(n): # 制造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, 8 - i)
    plates[i].goto(-400, -90 + 20 * i)
    plates[i].showturtle()
  return plates
def pole_stack(): # 制造poles的棧
  poles = [Stack() for i in range(3)]
  return poles
def moveDisk(plates, poles, fp, tp): # 把poles[fp]頂端的盤子plates[mov]從poles[fp]移到poles[tp]
  mov = poles[fp].peek()
  plates[mov].goto((fp - 1) * 400, 150)
  plates[mov].goto((tp - 1) * 400, 150)
  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()

效果圖:

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

您可能感興趣的文章:
  • 看看如何用Python繪制小米新版天價logo
  • Python繪制分類圖的方法
  • 用Python的繪圖庫(matplotlib)繪制小波能量譜
  • python opencv常用圖形繪制方法(線段、矩形、圓形、橢圓、文本)
  • python 繪制斜率圖進行對比分析
  • 通過python讀取txt文件和繪制柱形圖的實現代碼
  • python爬取股票最新數據并用excel繪制樹狀圖的示例
  • 用python 繪制莖葉圖和復合餅圖
  • 教你怎么用python繪制dotplot

標簽:淘寶好評回訪 信陽 阜新 濟源 昭通 合肥 興安盟 隨州

巨人網絡通訊聲明:本文標題《python繪制漢諾塔》,本文關鍵詞  python,繪制,漢諾塔,python,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《python繪制漢諾塔》相關的同類信息!
  • 本頁收集關于python繪制漢諾塔的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 双峰县| 股票| 德兴市| 册亨县| 虞城县| 徐州市| 哈巴河县| 教育| 堆龙德庆县| 福清市| 大洼县| 梅河口市| 山阴县| 沅陵县| 固阳县| 聊城市| 锡林浩特市| 寻甸| 兰考县| 内丘县| 成武县| 志丹县| 六盘水市| 永嘉县| 永春县| 额尔古纳市| 邓州市| 桂林市| 平谷区| 和田市| 巴东县| 西乌| 巴南区| 云林县| 茌平县| 汶上县| 新晃| 江达县| 岳普湖县| 英超| 永春县|