python学习:实现猜数游戏和汉诺塔问题的解决

2024-01-07 23:31:26

实现猜数游戏

规则:
计算机随机产生一个0~100的预设数字,让用户通过键盘输入所猜的数,如果大于预设的数,显示“遗憾,太大了“;小于预设的数,显示”遗憾,太小了“,如此循环,直至猜中该数,显示”预测N次,你猜中了“,其中N是用户输入数字的次数。当用户输入的不是整数(如字母、浮点数)时,程序会终止执行退出,并给出“输入内容必须为整数!”的提示,并让用户重新输入。
代码与运行结果:(注:输入出错,则此次不算到猜的次数里)

num = random.randint(0, 101) # 生成随机数
count = 0
flag = 1
while 1:
    try:
        count += 1
        guess = int(input("请输入你猜的数字:"))
    except:
        print("输入内容必须为整数!")
        count -= 1
        flag = 0
    if flag:
        if guess == num:
            print("预测%d次,你猜中了" %count)
            break
        elif guess > num:
            print("遗憾,太大了")
        else:
            print("遗憾,太小了")
    else:
        flag = 1

运行结果截图:
在这里插入图片描述

解决汉诺塔问题

汉诺塔问题,设置三个柱子A、B、C,刚开始时所有的盘子都在A柱上,并且从上到下的盘子序号为1、2、3…目标是将所有盘子从A柱上移动至C柱上,对于n层汉诺塔,我们可以看成要先将最下面的一个盘子移动到目标柱,将n-1层盘子移动到中间柱上,同时n-1层的汉诺塔我们可以采用相同的方法分析,显然这是递归的。
代码与运行结果如下:

count = 0
def hanoita(layer, start, end, middle):
    global count
    if layer!=1:
        hanoita(layer-1, start, middle, end)
    count = count + 1
    print("第%d次移动,把第%d号盘子从%s移动到%s"%(count, layer, start, end))
    if layer!=1:
        hanoita(layer-1, middle, end, start)
hanoita(3, "A", "B", "C")

运行结果截图:
在这里插入图片描述

文章来源:https://blog.csdn.net/apprentice_eye/article/details/135446450
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。