当我调用一个在以前的函数中定义的变量时,显示错误的值(None)。

问题描述 投票:0回答:1

我做了一个扑克游戏的程序,我先用了一个创建整个牌局的功能和另一个洗牌的功能。它们都能正常工作。我能够打印出来的甲板和洗牌的甲板。但在另一个函数'手()',我试图让它成为一个函数,给玩家他的前两张牌,使用一个变量字典。洗牌 从上一副洗好的牌中提取。但它显示一个错误,说列表索引超出了范围,所以我决定调用字典的 洗牌 看看它的价值是什么,它显示了两个空的大括号,而不是一整本字典的洗牌。

<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)
python python-3.x jupyter-notebook
1个回答
0
投票

好了,对于这个有几个东西,我建议。第一个是你多次将它投向一个列表,这不应该是需要的,因为你的函数一开始就在返回列表。

第二部分是你在做牌的时候没有调用你的全局变量卡牌值。你不想完全按照Roman所说的那样做,但也差不多。

这是我的建议。

   deckvalues = shufflecards() #This will load your shuffled deck values into your global variable. 
   liste = deckvalues

0
投票

试着把这个替换成:

liste = list(deckshuffle.items())

改成这个

liste = list(shufflecards().items())
© www.soinside.com 2019 - 2024. All rights reserved.