Python题目——实现人机对战的尼姆游戏:假设有一堆物品,计算机和人类玩家轮流从其中拿走一部分。在每一步中,人或计算机可以自由选择拿走多少物品,但是必须至少拿走一个并且最多只能拿走一半物品

问题描述:尼姆游戏是这样一个游戏:假设有一堆物品,计算机和人类玩家轮流从其中拿走一部分。在每一步中,人或计算机可以自由选择拿走多少物品,但是必须至少拿走一个并且最多只能拿走一半物品,然后轮到下一个玩家。拿走最后一个物品的玩家输掉游戏。


基本思路:在每次循环中让人类玩家先拿走一定数量的物品,然后再让计算机取走一些物品,要求拿走的物品数量不超过剩余数量的一半。如果物品全部取完则结束游戏,并且判定拿走最后一个物品的玩家为输。

from random import randint

n=int(input('请输入一个正整数:'))
while n>1:
    #人类玩家先走
    print("该你拿了,现在剩余物品数量为:{0}". format(n))
    #确保人类玩家输入合法整数值 
    while True:
        try:
            num=int(input('输入你要拿走的物品数量:'))
            #确保拿走的物品数量不超过一半
            assert 1<=num<=n//2
            break
        except:
            print('最少必须拿走1个,最多可以拿走{0}个。'. format(n//2)) 
        n-=num
        if n==1:
            print('恭喜,你赢了!')
            break
        #计算机玩家随机拿走一些,randint()用来生成指定范围内的一个随机数 
        n-=randint(1,n//2)
    else:
        print('哈哈,你输了。')

测试结果

 

 

 

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
THE END
分享
二维码
< <上一篇
下一篇>>