激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

腳本之家,腳本語言編程技術及教程分享平臺!
分類導航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服務器之家 - 腳本之家 - Python - Python實現聰明的尼姆游戲

Python實現聰明的尼姆游戲

2022-03-10 00:04甍耜 Python

尼姆游戲是個著名的游戲,有很多變種玩法,今天通過本文給大家分享Python實現聰明的尼姆游戲代碼,感興趣的朋友跟隨小編一起看看吧

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

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

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
import random
 
 
# 玩家拿走物品
def play(num):
    while True:
        try:
            if num == 1:
                print('請輸入要拿走物品的數量(1)')
                take_num = int(input())
                assert take_num == 1
            else:
                print('請輸入要拿走物品的數量(1-%d)' % (num / 2))
                take_num = int(input())
                assert 1 <= take_num <= num // 2
        except(ValueError, AssertionError):
            print('請正確輸入數量!')
        else:
            break
    num -= take_num
    print('玩家拿走了', take_num, '個,還剩', num, '個')
    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, '個,還剩', num, '個')
        return num
    else:
        take_num = random.randint(1, take_max)
        num -= take_num
        print('電腦拿走了', take_num, '個,還剩', num, '個')
        return num
 
 
while True:
    try:
        initial_value = int(input('請輸入起始數量堆的大?。?#39;))
    except(ValueError, AssertionError):
        print('請正確輸入數量!')
    else:
        break
player = 1
computer_player = 1
# 依次循環玩家和電腦那走物品,若玩家先拿完則提前跳出循環,若電腦先拿完則正常退出循環
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 個,還剩 0 個')
    print('\n玩家勝利!')

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

Python實現聰明的尼姆游戲

到此這篇關于Python實現聰明的尼姆游戲的文章就介紹到這了,更多相關Python尼姆游戲內容請搜索服務器之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持服務器之家!

原文鏈接:https://blog.csdn.net/m0_46457323/article/details/121594329

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 深夜激情视频 | av免费在线观看av | 一级黄色免费观看 | 欧美精品18videos性欧美 | 亚洲射逼| 国产做爰 | 亚洲一区二区三区高清视频 | 欧美日本不卡 | 老司机免费福利午夜入口ae58 | 一级成人欧美一区在线观看 | 日韩2区| 狠狠撸电影 | 一区二区三视频 | 成人影片在线免费观看 | 日韩在线视频免费播放 | 久久久久久久久久久综合 | 综合国产一区 | 精品国产乱码久久久久久久 | 国产呻吟 | 欧美在线观看视频一区 | 成人福利视频 | 日产精品久久久一区二区福利 | 国产99久久 | 午夜视频国产 | 日韩欧美精品电影 | 日本黄色不卡视频 | 最新中文字幕在线 | 91视频观看免费 | 极品大长腿啪啪高潮露脸 | 欧美日本国产精品 | 黄色特级片黄色特级片 | 毛片视频观看 | 男女羞羞视频 | 亚洲一区二区三区四区精品 | 国产羞羞网站 | 亚洲3p激情在线观看 | 九九黄色 | 麻豆小视频在线观看 | 精品一区在线视频 | 成人在线视频播放 | 国产精品亚洲欧美 |