最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

詳解python百行有效代碼實(shí)現(xiàn)漢諾塔小游戲(簡(jiǎn)約版)

 更新時(shí)間:2020年10月30日 14:25:44   作者:我不是禿頭哆唻咪  
這篇文章主要介紹了詳解python百行有效代碼實(shí)現(xiàn)漢諾塔小游戲(簡(jiǎn)約版),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧

直接上代碼:

#左中右塔用一個(gè)列表存儲(chǔ)
left = list()
center = list()
right = list()
"""
初始化函數(shù)
"""
def init():
  size = input("(請(qǐng)友善輸入整數(shù),未寫(xiě)判斷!)請(qǐng)輸入層數(shù):")
  #初始化塔列表,如5層 左邊塔放 1-3-5-7-9,中間和右邊放5個(gè)-1
  for i in range(1,int(size) + 1):
    left.append(i*2-1)
    center.append(-1)
    right.append(-1)
  return int(size)
"""
打印樣式函數(shù)
"""
def printStyling(i,size,ta):
  if ta[i] != -1:
    # 打印前空格
    for kong in range(int(size - (ta[i] - 1) / 2)):
      print(" ", end="")
    # 打印塔元素
    for le in range(ta[i]):
      print("X", end="")
    # 打印后空格
    for kong in range(int(size - (ta[i] - 1) / 2)):
      print(" ", end="")
  # 左塔這一層為空格
  else:
    # 打印前面空格
    for kong in range(size):
      print(" ", end="")
    # 打印中間的棒棒
    print("|", end="")
    # 打印后面的空格
    for kong in range(size):
      print(" ", end="")
"""
控制臺(tái)打印結(jié)果
"""
def show(size):
  #修飾
  print("-"*35)
  #循環(huán)層數(shù)等于size
  for i in range(size):
    # 打印左邊塔
    printStyling(i,size,left)
    # 打印中間塔
    printStyling(i,size,center)
    # 打印右邊塔
    printStyling(i,size,right)
    #每行打印一個(gè)換行
    print()
  #修飾
  print("-" * 35)
"""
判斷可不可以移動(dòng)
takeOff減少,putOn增加,size層數(shù),tSize和pSize剩余空間
"""
def judge(takeOff,putOn,size,tSize,pSize,count):
  # 如果左塔的空間空的,就是沒(méi)有元素可移動(dòng)
  if takeOff == size:
    print("操作無(wú)效!")
    return 0
  # 如果中塔為空,可以移動(dòng)
  if pSize == size:
    # 中間的最后一個(gè)元素賦上左塔的第一個(gè)元素的值
    putOn[pSize - 1] = takeOff[tSize]
    # 左塔的第一個(gè)元素賦值-1
    takeOff[tSize] = -1
    # 左塔的剩余空間+1
    tSize += 1
    # 中塔的剩余空間-1
    pSize -= 1
    #步數(shù)+1
    count += 1
    #移動(dòng)成功,返回剩余空間和步數(shù)
    return tSize,pSize,count
  # 如果中塔最上方元素比左塔最上方元素大,即可以移動(dòng)
  elif putOn[pSize] > takeOff[tSize]:
    # 中塔當(dāng)前最上方元素的再上一個(gè)元素(-1)賦上左塔最上方元素的值
    putOn[pSize - 1] = takeOff[tSize]
    # 左塔最上方元素賦值-1
    takeOff[tSize] = -1
    # 左塔剩余空間+1
    tSize += 1
    # 中塔剩余空間-1
    pSize -= 1
    #步數(shù)+1
    count += 1
    # 移動(dòng)成功,返回剩余空間和步數(shù)
    return tSize,pSize,count
  # 否則不可以移動(dòng)
  else:
    print("操作無(wú)效!")
    return 0
"""
主要運(yùn)行函數(shù)
"""
def main():
  #初始化游戲
  size = init()
  # 存放最初的盤剩余空間 lSize左塔 cSize中塔 rSize右塔
  lSize = 0
  cSize = size
  rSize = size
  #存放操作步數(shù)
  count = 0
  #打印游戲介紹
  print("將左塔完整地移到右塔就是勝利!")
  print("左-1 中-2 右-3 退出請(qǐng)輸入:quit")
  print('例如輸入:"1-2"就是將左塔的最上元素放到中塔')
  print("%d層的最佳步數(shù)是%d"%(size,pow(2,size)-1))
  #游戲進(jìn)行
  while True:
    print("當(dāng)前移動(dòng)了%d步"%(count))
    #顯示當(dāng)前塔的狀態(tài)
    show(size)
    #判斷右塔是否沒(méi)有剩余空間,沒(méi)有即勝利,并退出游戲
    if rSize == 0:
      if count == pow(2,size)-1:
        print("恭喜你使用最少步數(shù)完成漢諾塔!")
      else:
        print("恭喜你只移動(dòng)了%d步完成漢諾塔小游戲!"%(count))
      break
    #獲取玩家操作
    select = input("請(qǐng)操作:")
    #左塔移中塔
    if select == "1-2":
      result = judge(left,center,size,lSize,cSize,count)
      if result == 0:
        continue
      else:
        lSize,cSize,count = result
    #左塔移右塔,下面同樣
    elif select == "1-3":
      result = judge(left, right, size, lSize, rSize,count)
      if result == 0:
        continue
      else:
        lSize, rSize,count = result
    elif select == "2-1":
      result = judge(center, left, size, cSize, lSize,count)
      if result == 0:
        continue
      else:
        cSize, lSize,count = result
    elif select == "2-3":
      result = judge(center, right, size, cSize, rSize,count)
      if result == 0:
        continue
      else:
        cSize, rSize,count = result
    elif select == "3-1":
      result = judge(right, left, size, rSize, lSize,count)
      if result == 0:
        continue
      else:
        rSize, lSize,count = result
    elif select == "3-2":
      result = judge(right, center, size, rSize, cSize,count)
      if result == 0:
        continue
      else:
        rSize, cSize ,count= result
    #輸入quit退出游戲
    elif select == "quit":
      break
    #如果輸入的是其他不識(shí)別的文字,就拜拜
    else:
      print("操作有誤!")
    continue
main()

運(yùn)行結(jié)果:

在這里插入圖片描述

在這里插入圖片描述

在這里插入圖片描述

在這里插入圖片描述

到此這篇關(guān)于詳解python百行有效代碼實(shí)現(xiàn)漢諾塔小游戲(簡(jiǎn)約版)的文章就介紹到這了,更多相關(guān)python 漢諾塔 內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Pytorch-mlu?實(shí)現(xiàn)添加逐層算子方法詳解

    Pytorch-mlu?實(shí)現(xiàn)添加逐層算子方法詳解

    本文主要分享了在寒武紀(jì)設(shè)備上?pytorch-mlu?中添加逐層算子的方法教程,代碼具有一定學(xué)習(xí)價(jià)值,有需要的朋友可以借鑒參考下,希望能夠有所幫助
    2021-11-11
  • python對(duì)url格式解析的方法

    python對(duì)url格式解析的方法

    這篇文章主要介紹了python對(duì)url格式解析的方法,涉及Python針對(duì)URL解析的相關(guān)技巧,需要的朋友可以參考下
    2015-05-05
  • 詳細(xì)解讀Python中解析XML數(shù)據(jù)的方法

    詳細(xì)解讀Python中解析XML數(shù)據(jù)的方法

    這篇文章主要介紹了Python中解析XML數(shù)據(jù)的方法,是Python入門學(xué)習(xí)中的基礎(chǔ)知識(shí),需要的朋友可以參考下
    2015-10-10
  • Python對(duì)wav文件的重采樣實(shí)例

    Python對(duì)wav文件的重采樣實(shí)例

    今天小編就為大家分享一篇Python對(duì)wav文件的重采樣實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-02-02
  • Python延遲綁定問(wèn)題原理及解決方案

    Python延遲綁定問(wèn)題原理及解決方案

    這篇文章主要介紹了Python延遲綁定問(wèn)題原理及解決方案,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-08-08
  • Python獲取任意xml節(jié)點(diǎn)值的方法

    Python獲取任意xml節(jié)點(diǎn)值的方法

    這篇文章主要介紹了Python獲取任意xml節(jié)點(diǎn)值的方法,涉及Python操作XML節(jié)點(diǎn)的相關(guān)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-05-05
  • python字典與json轉(zhuǎn)換的方法總結(jié)

    python字典與json轉(zhuǎn)換的方法總結(jié)

    在本篇文章里小編給大家整理的是一篇關(guān)于python字典與json轉(zhuǎn)換的方法總結(jié)內(nèi)容,有需要的朋友們可以學(xué)習(xí)下。
    2020-12-12
  • 用python寫(xiě)測(cè)試數(shù)據(jù)文件過(guò)程解析

    用python寫(xiě)測(cè)試數(shù)據(jù)文件過(guò)程解析

    這篇文章主要介紹了用python寫(xiě)測(cè)試數(shù)據(jù)文件過(guò)程解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-09-09
  • PyTorch筆記之scatter()函數(shù)的使用

    PyTorch筆記之scatter()函數(shù)的使用

    這篇文章主要介紹了PyTorch筆記之scatter()函數(shù)的使用,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-02-02
  • Python-OpenCV實(shí)現(xiàn)圖像缺陷檢測(cè)的實(shí)例

    Python-OpenCV實(shí)現(xiàn)圖像缺陷檢測(cè)的實(shí)例

    本文將結(jié)合實(shí)例代碼,在Jupyter Notebook上使用Python+opencv實(shí)現(xiàn)如下圖像缺陷檢測(cè)。需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-06-06

最新評(píng)論

杂多县| 崇仁县| 贵州省| 吐鲁番市| 陆河县| 松原市| 纳雍县| 临泉县| 曲麻莱县| 界首市| 资中县| 晋宁县| 南和县| 阿克| 泰州市| 长泰县| 新泰市| 普定县| 兴安县| 正阳县| 长垣县| 洛隆县| 任丘市| 尤溪县| 安顺市| 巫山县| 宜春市| 林芝县| 景泰县| 左云县| 鄂尔多斯市| 桃源县| 延寿县| 崇阳县| 北碚区| 酉阳| 南皮县| 修水县| 黄骅市| 温泉县| 灌南县|