我正在使用基于游戏战争的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。如果你想要主循环,只需评论。
答案 0 :(得分:0)
我相信你的问题是你依靠这个函数来设置AIDeck的值。当您尝试设置
时AIDeck = deck
您正在将AIDeck
的引用移至deck
的引用。当函数返回时,AIDeck
将恢复为其原始定义,即空列表。如果您在文件中的任何位置执行choice(AIDeck)
,则可能是导致错误的原因。