爲了教育目的,我正在Python中實現一個tic tac toe遊戲。python:在遞歸函數內返回問題
這是設置玩家X或O的功能是遞歸的:
def set_marker(player,board):
print "\nplayer",player
x = y = 3
while(x not in range(0,3)):
x = input("x: ")
while(y not in range(0,3)):
y = input("y: ")
if board[x][y] == 0:
board[x][y]=player
return board
else:
set_marker(player,board)
# return board
參數:
board = 2dimensional list ([[0, 0, 0], [0, 0, 0], [0, 0, 0]])
player = int (value = '1' or '2')
如果我把我的「X」到一個已經使用的領域我打電話再次起作用。 在這種情況下發生,我使用的「公告板」在我的主循環再次腳本拋出以下錯誤:
Python: TypeError: 'NoneType' object has no attribute '__getitem__'
類型主板就是在這種情況下:none
。 我通過在else:
部分中簡單地返回board
解決了該問題。
這裏去我的問題:
我爲什麼要還之內,否則返回板子,因爲我調用函數,直到我回到正常的基板?
謝謝,如果我不使它成爲一個遞歸函數,你會調用函數時做一個循環,直到我的返回值不是沒有了,對吧? –