我做了一个扑克游戏的程序,我先用了一个创建整个牌局的功能和另一个洗牌的功能。它们都能正常工作。我能够打印出来的甲板和洗牌的甲板。但在另一个函数'手()',我试图让它成为一个函数,给玩家他的前两张牌,使用一个变量字典。洗牌 从上一副洗好的牌中提取。但它显示一个错误,说列表索引超出了范围,所以我决定调用字典的 洗牌 看看它的价值是什么,它显示了两个空的大括号,而不是一整本字典的洗牌。
<ipython-input-57-462bc7e6b87f> in hand()
28 def hand():
29 liste = list(deckshuffle.items())
---> 30 playerhand.update({liste[0][0]:liste[0][1]})
31 playerhand.update({liste[1][0]:liste[1][1]})
32 liste.pop(0)
IndexError: list index out of range
这是我的代码
deckvalues = {}
def cards():
for suit in suits:
for rank in ranks:
deckvalues.update({rank+' of '+suit: values[rank]})
return deckvalues
def shufflecards():
lis = list(deckvalues.items())
random.shuffle(lis)
deckshuffle = dict(lis)
deckshuffle = deckshuffle
return deckshuffle
playerhand = {}
dealerhand = {}
def hand():
liste = list(deckshuffle.items())
playerhand.update({liste[0][0]:liste[0][1]})
playerhand.update({liste[1][0]:liste[1][1]})
liste.pop(0)
liste.pop(0)
好了,对于这个有几个东西,我建议。第一个是你多次将它投向一个列表,这不应该是需要的,因为你的函数一开始就在返回列表。
第二部分是你在做牌的时候没有调用你的全局变量卡牌值。你不想完全按照Roman所说的那样做,但也差不多。
这是我的建议。
deckvalues = shufflecards() #This will load your shuffled deck values into your global variable.
liste = deckvalues
试着把这个替换成:
liste = list(deckshuffle.items())
改成这个
liste = list(shufflecards().items())