将用户输入列表

时间:2011-12-02 01:06:09

标签: python

我正在尝试接收用户输入,然后将其放入列表中。我有一个工作版本,但是,我觉得它似乎是多余的(第一个块似乎是多余的,但如果我拿走它,它不起作用)。这有什么办法可以改进吗? 感谢

def pastChoice():
     choice = raw_input("> ")
     prevMove = []
     prevMove.append(choice)

for i in prevMove:
     choice = raw_input("> ")
     prevMove.append(choice)
     print prevMove

pastChoice()

我正在制作游戏,我想向用户展示他们已经做出的选择。

实施例。如果您想查看以前的选择,请输入“历史记录”

[ '一个', '一个', 'C', 'B']

2 个答案:

答案 0 :(得分:1)

你可以这样做吗?我不知道您尝试这样做的真正原因,但是为了接受用户输入并添加到列表中,这将会很好。

def main():
     prevMove = []
     choice = ''

     def getHistory():
          print prevMove

     while True:
          choice = raw_input("> ")
          if choice == '':
               break
          prevMove.append(choice)
          # do whatever you want with the input here

          # a call to history
          getHistory()

if __name__ == "__main__":
     main()

编辑:

由于问题编辑,代码现在将记录事件的历史记录并具有获取它们的功能。

答案 1 :(得分:1)

我不确定您对此代码的意图,但这大致相同:

def pastChoice():
    prevMove = []

    while True:
        choice = raw_input("> ")
        prevMove.append(choice)
        print prevMove
pastChoice()

块:

 choice = raw_input("> ")
 prevMove = []
 prevMove.append(choice)

询问用户输入并将其附加到prevMove,因此在循环开始时,条件i in prevMovei评估为prevMove中的第一个元素,然后因为在第二个块中你'将新元素附加到prevMove,迭代继续覆盖新添加的元素,循环永远不会结束。

如果删除第一个块,但保留for循环,则它将无效,因为prevMove内没有元素,因此无需迭代。