Python题目——实现人机对战的尼姆游戏:假设有一堆物品,计算机和人类玩家轮流从其中拿走一部分。在每一步中,人或计算机可以自由选择拿走多少物品,但是必须至少拿走一个并且最多只能拿走一半物品
Posted 玛卡巴卡
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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('哈哈,你输了。')
测试结果
以上是关于Python题目——实现人机对战的尼姆游戏:假设有一堆物品,计算机和人类玩家轮流从其中拿走一部分。在每一步中,人或计算机可以自由选择拿走多少物品,但是必须至少拿走一个并且最多只能拿走一半物品的主要内容,如果未能解决你的问题,请参考以下文章