随机选择功能

时间:2015-10-30 08:28:08

标签: python random

我正在使用基于游戏战争的pygame制作游戏。我在运行用于在主循环中拆分我的套牌的代码时遇到错误(它在自己的文件中)。错误说:

"/usr/local/Cellar/python/2.7.10_2/Frameworks/Python.framework/Versions/2.7/lib/python2.7/random.py", line 275, in choice
return seq[int(self.random() * len(seq))]  # raises IndexError if seq is empty
IndexError: list index out of range

甲板拆分文件如下所示:

import Deck
from random import *
deck = Deck.deck
playerDeck = []
AIDeck = []

def splitDeck():
    player_deck_count = 26

    while player_deck_count > 0:

        transfer_card = (choice(deck))

        playerDeck.append(transfer_card)
        deck.remove(transfer_card)

        player_deck_count -= 1

    AIDeck = deck
    shuffle(playerDeck)
    shuffle(AIDeck)


print "Player deck length:" + str(len(playerDeck))
print "AI deck length:" + str(len(AIDeck))
print "Deck length:" + str(len(deck))

Deck文件如下所示:

deck = [
    '2_c',
    '2_d',
    '2_h',
    '2_s',

我得到的是与序列有关(列表是空的)但是原来的牌组显然还有26张牌。当while player_deck_count循环停止但没有运气时,我尝试过更改。感谢您的帮助

P.S。如果你想要主循环,只需评论。

1 个答案:

答案 0 :(得分:0)

我相信你的问题是你依靠这个函数来设置AIDeck的值。当您尝试设置

AIDeck = deck

您正在将AIDeck的引用移至deck的引用。当函数返回时,AIDeck将恢复为其原始定义,即空列表。如果您在文件中的任何位置执行choice(AIDeck),则可能是导致错误的原因。