圆月山庄资源网 Design By www.vgjia.com
直接上代码:
#左中右塔用一个列表存储 left = list() center = list() right = list() """ 初始化函数 """ def init(): size = input("(请友善输入整数,未写判断!)请输入层数:") #初始化塔列表,如5层 左边塔放 1-3-5-7-9,中间和右边放5个-1 for i in range(1,int(size) + 1): left.append(i*2-1) center.append(-1) right.append(-1) return int(size) """ 打印样式函数 """ 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="") """ 控制台打印结果 """ def show(size): #修饰 print("-"*35) #循环层数等于size for i in range(size): # 打印左边塔 printStyling(i,size,left) # 打印中间塔 printStyling(i,size,center) # 打印右边塔 printStyling(i,size,right) #每行打印一个换行 print() #修饰 print("-" * 35) """ 判断可不可以移动 takeOff减少,putOn增加,size层数,tSize和pSize剩余空间 """ def judge(takeOff,putOn,size,tSize,pSize,count): # 如果左塔的空间空的,就是没有元素可移动 if takeOff == size: print("操作无效!") return 0 # 如果中塔为空,可以移动 if pSize == size: # 中间的最后一个元素赋上左塔的第一个元素的值 putOn[pSize - 1] = takeOff[tSize] # 左塔的第一个元素赋值-1 takeOff[tSize] = -1 # 左塔的剩余空间+1 tSize += 1 # 中塔的剩余空间-1 pSize -= 1 #步数+1 count += 1 #移动成功,返回剩余空间和步数 return tSize,pSize,count # 如果中塔最上方元素比左塔最上方元素大,即可以移动 elif putOn[pSize] > takeOff[tSize]: # 中塔当前最上方元素的再上一个元素(-1)赋上左塔最上方元素的值 putOn[pSize - 1] = takeOff[tSize] # 左塔最上方元素赋值-1 takeOff[tSize] = -1 # 左塔剩余空间+1 tSize += 1 # 中塔剩余空间-1 pSize -= 1 #步数+1 count += 1 # 移动成功,返回剩余空间和步数 return tSize,pSize,count # 否则不可以移动 else: print("操作无效!") return 0 """ 主要运行函数 """ def main(): #初始化游戏 size = init() # 存放最初的盘剩余空间 lSize左塔 cSize中塔 rSize右塔 lSize = 0 cSize = size rSize = size #存放操作步数 count = 0 #打印游戏介绍 print("将左塔完整地移到右塔就是胜利!") print("左-1 中-2 右-3 退出请输入:quit") print('例如输入:"1-2"就是将左塔的最上元素放到中塔') print("%d层的最佳步数是%d"%(size,pow(2,size)-1)) #游戏进行 while True: print("当前移动了%d步"%(count)) #显示当前塔的状态 show(size) #判断右塔是否没有剩余空间,没有即胜利,并退出游戏 if rSize == 0: if count == pow(2,size)-1: print("恭喜你使用最少步数完成汉诺塔!") else: print("恭喜你只移动了%d步完成汉诺塔小游戏!"%(count)) break #获取玩家操作 select = input("请操作:") #左塔移中塔 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 #如果输入的是其他不识别的文字,就拜拜 else: print("操作有误!") continue main()
运行结果:
标签:
python,汉诺塔
圆月山庄资源网 Design By www.vgjia.com
广告合作:本站广告合作请联系QQ:858582 申请时备注:广告合作(否则不回)
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件! 如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件! 如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
圆月山庄资源网 Design By www.vgjia.com
暂无评论...
RTX 5090要首发 性能要翻倍!三星展示GDDR7显存
三星在GTC上展示了专为下一代游戏GPU设计的GDDR7内存。
首次推出的GDDR7内存模块密度为16GB,每个模块容量为2GB。其速度预设为32 Gbps(PAM3),但也可以降至28 Gbps,以提高产量和初始阶段的整体性能和成本效益。
据三星表示,GDDR7内存的能效将提高20%,同时工作电压仅为1.1V,低于标准的1.2V。通过采用更新的封装材料和优化的电路设计,使得在高速运行时的发热量降低,GDDR7的热阻比GDDR6降低了70%。
更新日志
2024年11月02日
2024年11月02日
- 《暗喻幻想》顺风耳作用介绍
- 崔健1985-梦中的倾诉[再版][WAV+CUE]
- 黄子馨《追星Xin的恋人们2》HQ头版限量编号[WAV+CUE]
- 孟庭苇《情人的眼泪》开盘母带[低速原抓WAV+CUE]
- 孙露《谁为我停留HQCD》[低速原抓WAV+CUE][1.1G]
- 孙悦《时光音乐会》纯银CD[低速原抓WAV+CUE][1.1G]
- 任然《渐晚》[FLAC/分轨][72.32MB]
- 英雄联盟新英雄安蓓萨上线了吗 新英雄安蓓萨技能介绍
- 魔兽世界奥杜尔竞速赛什么时候开启 奥杜尔竞速赛开启时间介绍
- 无畏契约CGRS准星代码多少 CGRS准星代码分享一览
- 张靓颖.2012-倾听【少城时代】【WAV+CUE】
- 游鸿明.1999-五月的雪【大宇国际】【WAV+CUE】
- 曹方.2005-遇见我【钛友文化】【WAV+CUE】
- Unity6引擎上线:稳定性提升、CPU性能最高提升4倍
- 人皇Sky今日举行婚礼!电竞传奇步入新篇章