如何设置函数以定义变量?

时间:2015-12-04 15:25:14

标签: python

我是编程新手,而且我无法以我所使用的变量定义的方式来处理我的功能。例如,我为我正在开发的游戏初始化了以下棋盘:

stat

这会产生一块全都没有&#39;除了两个随机位置之外的值,其中有一个浮点值。现在我需要编写一个函数来检查连续的可能匹配。当两个相同的元素(忽略“无”值)彼此相邻或仅由“无”组合时,会找到匹配项。例如[2,None,2,None]将被视为匹配。我现在想要编写一个新函数client.out.println(l); client.out.flush(); 来检查每行中的初始元素的索引(浮点值&#39; 2.0&#39;),然后比较它们是否彼此相邻或者如果是这种情况,函数将返回def initialize(dimension, nb_of_pieces, difficulty): board = [] for i in range(dimension): row = [None] * dimension board.append(row) i = 0 while i < nb_of_pieces: initial_element = math.pow(2, difficulty) row_position = randint(0, dimension-1) column_position = randint(0, dimension-1) if initial_element not in board: board[row_position][column_position] = initial_element i = i + 1 return board 。我写道:

def check(row)

我不确定这是否正确,因为Python一直说变量是未定义的,所以我无法检查我的程序。如何使用我在其他函数中定义的变量?另外,我想在某处打印结果(即真或假)。这应该在函数内完成吗?

2 个答案:

答案 0 :(得分:2)

我建议在这里使用课程。这将消除不断传递board变量的需要,并使得将更多板的行为写入类方法变得更加清晰。请注意,类的__init__()方法不需要显式返回任何内容。

class Board:
  def __init__(self, dimension, nb_of_pieces, difficulty):
    self.board = []
    for i in range(dimension):
      row = [None] * dimension
      self.board.append(row)
    (etc...)

  def check(self, row):
    for row in self.board:
      (etc...)

然后通过执行以下操作简单地实例化一个董事会:

my_board = Board()

答案 1 :(得分:1)

如果要在其他函数中使用函数中定义的变量。你最好在论证中传递它。

def initialize(dimension, nb_of_pieces, difficulty):
    board =  [2, None, 2, None]
    return board

def check(row, board):
    return True

board =  initialize(5,4,3)
check(None, board  )

还有可能使用嵌套函数或全局变量。但是当我可以选择使用上面描述的选项时..

所以要使用全局变量,你可以这样做:

def initialize(dimension, nb_of_pieces, difficulty):
    global board
    board =  [2, None, 2, None]


def check(row):
    global board
    if len(board)> 5:
        return True
    else
        return False 

board = [] 
initialize(5,4,3)
check(None)