最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python實(shí)現(xiàn)聰明的尼姆游戲

 更新時(shí)間:2021年11月29日 15:17:40   作者:甍耜  
尼姆游戲是個(gè)著名的游戲,有很多變種玩法,今天通過本文給大家分享Python實(shí)現(xiàn)聰明的尼姆游戲代碼,感興趣的朋友跟隨小編一起看看吧

尼姆游戲是個(gè)著名的游戲,有很多變種玩法。兩個(gè)玩家輪流從一堆物品中拿走一部分。在每一步中,玩家可以自由選擇拿走多少物品,但是必須至少拿走一個(gè)并且最多只能拿走一半物品,然后輪到下一個(gè)玩家。拿走最后一個(gè)物品的玩家則輸?shù)粲螒?br /> 在聰明模式中,計(jì)算機(jī)每次拿走一定數(shù)量的物品使得堆的大小是 2 的冪次方減 1—也就是 3、7、15、31、63 等。如果有一定數(shù)量的剩余物品,計(jì)算機(jī)就隨機(jī)拿出一些。編寫程序,模擬聰明版本的尼姆游戲。

先創(chuàng)建兩個(gè)函數(shù),一個(gè)用于玩家拿走商品,另一個(gè)用于電腦拿走商品。題目要求電腦要隨機(jī)挑選,因此我們用到了random庫中的choice方法,用法為random.choice(iterable),就是從序列中隨機(jī)挑選一個(gè)元素。

import random


# 玩家拿走物品
def play(num):
    while True:
        try:
            if num == 1:
                print('請輸入要拿走物品的數(shù)量(1)')
                take_num = int(input())
                assert take_num == 1
            else:
                print('請輸入要拿走物品的數(shù)量(1-%d)' % (num / 2))
                take_num = int(input())
                assert 1 <= take_num <= num // 2
        except(ValueError, AssertionError):
            print('請正確輸入數(shù)量!')
        else:
            break
    num -= take_num
    print('玩家拿走了', take_num, '個(gè),還剩', num, '個(gè)')
    return num


# 電腦拿走物品
def computer(num):
    take_max = num // 2
    lst = []
    for i in range(1, num):
        temp = 2 ** i - 1
        if temp <= num - 1:
            lst.append(temp)
        else:
            break
    lst = list(filter(lambda y: num - y <= num // 2, lst))
    if lst:
        temp_lst = []
        for i in lst:
            x = num - i
            temp_lst.append(x)
        take_num = random.choice(temp_lst)
        num -= take_num
        print('電腦拿走了', take_num, '個(gè),還剩', num, '個(gè)')
        return num
    else:
        take_num = random.randint(1, take_max)
        num -= take_num
        print('電腦拿走了', take_num, '個(gè),還剩', num, '個(gè)')
        return num


while True:
    try:
        initial_value = int(input('請輸入起始數(shù)量堆的大?。?))
    except(ValueError, AssertionError):
        print('請正確輸入數(shù)量!')
    else:
        break
player = 1
computer_player = 1
# 依次循環(huán)玩家和電腦那走物品,若玩家先拿完則提前跳出循環(huán),若電腦先拿完則正常退出循環(huán)
while computer_player and player:
    initial_value = play(initial_value)
    player = initial_value
    if player == 0 or player == 1:
        break
    initial_value = computer(initial_value)
    computer_player = initial_value
if player == 0:
    print('\n電腦勝利!')
else:
    print('電腦拿走了 1 個(gè),還剩 0 個(gè)')
    print('\n玩家勝利!')

以上代碼純本人想法,若有更好的想法可留言一起探討

在這里插入圖片描述

到此這篇關(guān)于Python實(shí)現(xiàn)聰明的尼姆游戲的文章就介紹到這了,更多相關(guān)Python尼姆游戲內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:

相關(guān)文章

最新評論

开平市| 栖霞市| 岢岚县| 新和县| 遂昌县| 荆门市| 江城| 宣汉县| 宿州市| 康乐县| 蓬莱市| 仙居县| 平利县| 红原县| 万全县| 阿拉善右旗| 恩平市| 阳东县| 巨野县| 盖州市| 九江市| 景谷| 永泰县| 邵东县| 仁寿县| 抚远县| 连山| 南充市| 通州市| 亚东县| 上思县| 巴彦淖尔市| 涞水县| 彩票| 革吉县| 奇台县| 新安县| 铜鼓县| 梅州市| 湖北省| 麻阳|