有没有办法重置 python 中列表的值?
Is there a way to reset the values of a list in python?
我正在开发一款井字游戏,该游戏的功能是将列表中的连字符替换为 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"]
处。我试过:
在 replace()
正上方添加 list = ["-","-","-", "X","O"]
在 replace()
正上方添加 list[0] = "-"
而且这些选项都不起作用。
是否可以将 list
的值重置为我开始时的值?如果是这样,我应该如何处理?
使您的代码“有效”的最简单更改是:
def main():
global list
list = ["-","-","-", "X","O"]
replace()
play_again = input ("play again?")
if play_again == "yes":
main()
else:
exit()
(虽然这不是我从头开始做的方式——但你已经指出笨重的代码是 okay/expected,所以我不打算在这里尝试修复它。)
这也可以,不需要 global
声明:
def main():
list[:] = ["-","-","-", "X","O"]
replace()
play_again = input ("play again?")
if play_again == "yes":
main()
else:
exit()
我正在开发一款井字游戏,该游戏的功能是将列表中的连字符替换为 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"]
处。我试过:
在
正上方添加replace()
list = ["-","-","-", "X","O"]
在
正上方添加replace()
list[0] = "-"
而且这些选项都不起作用。
是否可以将 list
的值重置为我开始时的值?如果是这样,我应该如何处理?
使您的代码“有效”的最简单更改是:
def main():
global list
list = ["-","-","-", "X","O"]
replace()
play_again = input ("play again?")
if play_again == "yes":
main()
else:
exit()
(虽然这不是我从头开始做的方式——但你已经指出笨重的代码是 okay/expected,所以我不打算在这里尝试修复它。)
这也可以,不需要 global
声明:
def main():
list[:] = ["-","-","-", "X","O"]
replace()
play_again = input ("play again?")
if play_again == "yes":
main()
else:
exit()