【问题标题】:Is there a way to reset the values of a list in python?有没有办法在python中重置列表的值?
【发布时间】:2020-07-04 01:30:17
【问题描述】:

我正在开发一个井字游戏,它的功能是将列表中的连字符替换为 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"] 。我试过了:

  1. replace()上方添加list = ["-","-","-", "X","O"]

  2. replace()上方添加list[0] = "-"

这些选项都不起作用。

是否可以将list 的值重置为我一开始的值?如果是这样,我应该如何处理?

【问题讨论】:

  • 不要使用list作为变量名。 list 是一个重要的内置函数,当你这样做时会被阻止。
  • @user120242 这似乎不起作用,如果我尝试在 main()
  • @Tom Karzes 我知道,我在实际代码中的变量是 gridlist。但是,即使我将变量名称更改为 gridlist 之类的名称,潜在的解决方案也不起作用。
  • 对,我的评论是一般性建议,与您的问题无关。

标签: python list reset


【解决方案1】:

使您的代码“工作”的最简单更改是:

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()

【讨论】:

  • 是的,这解决了问题!你介意分享一下你是怎么做的吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-11-15
  • 2011-12-11
  • 2021-04-03
  • 2019-05-13
  • 1970-01-01
相关资源
最近更新 更多