Python-代码不保留定义中分配的变量

标签 python definition

我正在尝试创建一个纸牌游戏,但我在定义方面遇到困难。特别是,下面的定义应该在变量“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]

最佳答案

两点:

  1. 您正在定义一个函数,但没有调用它。如果您不调用函数,则其中的代码不会被执行。

  2. 名为 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/

相关文章:

functional-programming - LISP - 破坏性和非破坏性结构

c++ - 如何获得没有 cpp 的头文件?

c++ - 使用命名空间与使用命名空间闭包的范围

python - 广播两个数据帧

python - 强制删除文件,如 "rm -f"或强制取消文件路径与目录的链接

c++ - __int<size> 和 "char, short, int, long long int"有什么区别?

c - 定义大小的char数组指针

python - super().method() 与 super(self.__class__,self).method() 之间的区别

python - 通过python mongoengine刷新mongodb集合结构

python - 如何防止缓存响应( flask 服务器,使用 chrome)