我正在尝试创建一个纸牌游戏,但我在定义方面遇到困难。特别是,下面的定义应该在变量“deck”下返回洗牌后的牌组(还没有花色)。但是,我收到错误:
NameError: 'name 'deck' is not defined.
我可以通过不使用定义来避免这种情况,但是,我希望有尽可能多的定义,以便从长远来看更容易。提前致谢。
import random
playerhand=[]
dealerhand=[]
def shuffle():
numbers = []
faces = ['T', 'J', 'Q', 'K', 'A']
for i in range(8):
numb = str(i + 2)
numbers.append(numb)
values=numbers+faces
deck=4*values
random.shuffle(deck)
return deck
print deck[0]
最佳答案
两点:
您正在定义一个函数,但没有调用它。如果您不调用函数,则其中的代码不会被执行。
名为
deck
的变量是函数的本地变量,并在函数返回时消失。
这是同时解决这两个问题的一种方法:
def shuffle():
...
deck = ...
...
return deck
deck = shuffle()
print deck[0]
需要明确的是,这里有两个变量都被称为deck
,因此不应相互混淆。为了清楚地表明这种区别,下面我给它们起了不同的名称:
def shuffle():
...
local_deck = ...
...
return local_deck
global_deck = shuffle()
print global_deck[0]
这两个代码片段是等效的。
关于Python-代码不保留定义中分配的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41127580/