堆里有 16 颗豆子,有两个玩家(假设一个玩家是电脑) 。每个玩家都可以从堆中的 16 颗豆子中取出 1 颗, 2 颗或者 3 颗豆子。每个玩家在每回合中必须从堆中取出一定数目的豆子。玩家轮流取出豆子,取到最后 一颗豆子的玩家是输家。 思路: 写一个人取豆子的函数 ; 帮电脑设计一个算法,实现取豆子的函数 ; 在主程序中进行输流调用,谁 最后拿到 1 粒豆子谁就输。 python
时间: 2024-02-24 07:59:08 浏览: 84
好的,下面是Python的代码实现:
```python
import random
# 人取豆子的函数
def humanTakeBeans(beans):
while True:
take = int(input("请你输入你要取的豆子数(1、2、3):"))
if take >= 1 and take <= 3 and take <= beans:
return take
else:
print("输入错误,请重新输入!")
# 电脑取豆子的函数
def computerTakeBeans(beans):
if beans == 1:
take = 1
elif beans == 2:
take = 2
elif beans == 3:
take = 3
else:
take = random.randint(1, 3)
if take > beans:
take = beans
print("电脑取了 %d 颗豆子。" % take)
return take
# 主程序
beans = 16
turn = 1
while beans > 0:
print("第 %d 轮:" % turn)
if turn % 2 == 1: # 人取豆子
take = humanTakeBeans(beans)
else: # 电脑取豆子
take = computerTakeBeans(beans)
beans -= take # 更新剩余豆子数
print("剩余豆子数:%d\n" % beans)
turn += 1 # 轮换
if turn % 2 == 1:
print("你输了!")
else:
print("电脑输了!")
```
这段代码与前面的C语言代码实现思路相似。其中人取豆子的函数 `humanTakeBeans()` 中,通过输入来获取人类玩家所取的豆子数,并对输入进行了校验,保证输入的合法性;电脑取豆子的函数 `computerTakeBeans()` 中,电脑会根据一定的算法来取豆子,当剩余豆子数为1、2或3时,电脑就直接取完,否则就随机取1、2或3颗豆子。最后在主程序中实现了游戏的整个流程,直到豆子数为0为止,最后输出输赢的结果。
希望对您有所帮助!
阅读全文