我正在開發一款井字游戲,該游戲的功能是將列表中的連字符替換為 X 和 O 以形成網格。我也是 python 的初學者,所以這段代碼會很笨重。問題是我希望游戲可以重新玩,但我找不到將列表重置為開始時使用的連字符的方法。這是一段簡化的代碼,可以更好地說明問題:list = ["-","-","-", "X","O"]def replace(): list[0] = list[3]def main(): replace() play_again = input ("play again?") if play_again == "yes": main() else: exit() main()這使得列表從["-","-","-", "X","O"]變為["X","-","-", "X","O"],從而使游戲正常運行。我希望能夠做的是以某種方式回到list玩家["-","-","-", "X","O"]再次玩游戲的時候。不幸的是,該列表似乎停留在["X","-","-", "X","O"]. 我試過了:list = ["-","-","-", "X","O"]在上方添加replace()list[0] = "-"在上方添加replace()這些選項都不起作用。是否可以將 的值重置list為我開始時的值?如果是這樣,我應該如何處理這個問題?
1 回答

嚕嚕噠
TA貢獻1784條經驗 獲得超7個贊
使您的代碼“工作”的最簡單的更改是:
def main():
global list
list = ["-","-","-", "X","O"]
replace()
play_again = input ("play again?")
if play_again == "yes":
main()
else:
exit()
(雖然這不是我從頭開始做這件事的方式——但你已經指出笨重的代碼是可以的/預期的,所以我不打算在這里嘗試修復它。)
這也將起作用,并且不需要global聲明:
def main():
list[:] = ["-","-","-", "X","O"]
replace()
play_again = input ("play again?")
if play_again == "yes":
main()
else:
exit()
添加回答
舉報
0/150
提交
取消