我是编程新手,而且我无法以我所使用的变量定义的方式来处理我的功能。例如,我为我正在开发的游戏初始化了以下棋盘:
stat
这会产生一块全都没有'除了两个随机位置之外的值,其中有一个浮点值。现在我需要编写一个函数来检查连续的可能匹配。当两个相同的元素(忽略“无”值)彼此相邻或仅由“无”组合时,会找到匹配项。例如[2,None,2,None]将被视为匹配。我现在想要编写一个新函数client.out.println(l);
client.out.flush();
来检查每行中的初始元素的索引(浮点值' 2.0'),然后比较它们是否彼此相邻或者如果是这种情况,函数将返回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一直说变量是未定义的,所以我无法检查我的程序。如何使用我在其他函数中定义的变量?另外,我想在某处打印结果(即真或假)。这应该在函数内完成吗?
答案 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)