【问题标题】:how to implement a list如何实现列表
【发布时间】:2013-11-27 03:02:21
【问题描述】:

我正在尝试创建井字游戏;但我有一点麻烦。 I have created a list with numbers in it, so when that number is chosen it changes to an x​​ or o.但是,当我的电路板打印时,其中包含数字 0,1,2,3,4,5,6,7,8,我不希望它们那样。 我的问题是如何更改空列表中的字符?我会使用索引还是有其他方法呢

board = [0,1,2,
         3,4,5,
         6,7,8]

def gameBoard():
    print("    " "a" "   " "b" "   " "c")
    print("  ""-------------")
    print(("1"),("|"),board[0],"|",board[1], "|" ,board[2], "|")
    print("  ""-------------")
    print(("2"),("|"),board[3],"|",board[4], "|" ,board[5], "|")
    print("  ""-------------")   
    print(("3"),("|"),board[6],"|",board[7], "|" ,board[8], "|")
    print("  ""-------------")    


while True:
    user_input = input("Enter your move: ")
    if user_input == "a1":
        user_input = "0"
    elif user_input == "a2":
        user_input = "3" 
    elif user_input == "a3":
        user_input="6"
    elif user_input == "b1":
        user_input = "1"
    elif user_input == "b2":
        user_input = "4"
    elif user_input== "b3":
        user_input = "7"
    elif user_input == "c1":
        user_input = "2"
    elif user_input == "c2":
        user_input = "5"
    elif user_input == "c3":
        user_input = "8"
    else:
        print("invalid coordinates")
    user_input= int(user_input)

【问题讨论】:

    标签: python list python-3.x tic-tac-toe


    【解决方案1】:

    我猜你想要的是一个带有字符串而不是数字的板,最初用单个空格的字符串填充。您可以为此板使用单个列表或二维数组

    单列表实现

    board = [" "," "," "," "," "," "," "," "," "]
    

    控制台示例:

    >>> board = [" "," "," "," "," "," "," "," "," "]
    >>> board[2] = "X"
    >>> board
    [' ', ' ', 'X', ' ', ' ', ' ', ' ', ' ', ' ']
    >>> board[0]
    ' '
    >>> board[2]
    'X'
    >>> 
    

    二维数组实现

    board = [[" "," "," "],[" "," "," "],[" "," "," "]]
    

    控制台示例:

    >>> board = [[" "," "," "],[" "," "," "],[" "," "," "]]
    >>> board[1][2] = "O"
    >>> board
    [[' ', ' ', ' '], [' ', ' ', 'O'], [' ', ' ', ' ']]
    >>> board[0][1]
    ' '
    >>> board[1][2]
    'O'
    

    打印二维列表示例:

    >>> board = [["X"," ","X"],[" ","X"," "],["X"," ","X"]]
    >>> for row in board:
        string = ""
        for element in row:
            string = string + element
        print(string)
    
    
    X X
     X 
    X X
    

    【讨论】:

    • 这就是我想要的方式。但它也假设在实际的井字游戏板上打印出来。我怎么做 ?因为它们是这样的,它以直线打印出来
    【解决方案2】:

    从您的代码中,您正在用整数 0 - 8 填充板。如果您检查板 [7],它将返回 7。

    我认为您想用空格初始化板,以便板 [7] 将返回 ' '(空格)。

    你可以做 board = [' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ']

    或者更干净,

    板 = [''] * 9

    希望这会有所帮助:) 使用矩阵也不是一个坏主意,但与您尝试解决的问题不同

    【讨论】:

      【解决方案3】:

      使用二维列表!

      board = [[0,0,0],
               [0,0,0],
               [0,0,0]]
      

      然后只需使用您想要的值等。然后参考就是:

      board[row][column]
      

      编辑:我有点误读了这个问题,而不是 0 到 9,您可以将它们全部设为空字符串,即

      board[i] = ''
      

      或使用字典将数字映射到字符串

      board[5] = ''
      

      【讨论】:

        【解决方案4】:

        您可以使用字典:

        board = {0:'X', 1:'O', 2:' ',
                 3:'X', 4:'O', 5:' ',
                 6:'X', 7:'O', 8:' ',
                }
        
        print board[1] # will print O
        board[1] = 'X'
        print board[1] # will print X
        

        【讨论】:

          【解决方案5】:

          您的问题并不完整,因为您没有在每次迭代时更新游戏板。不过,这里有一些建议:

          1. 将您的初始板设置为全零(或“O”)
          2. 如果您使用的是列表,您的所有语句(如 user_input = '1' 等)都可以简单地设置为 use_input = 1,以避免显式调用 int
          3. 您只需说出board[user_input] = 'X'board[user_input] = 'O' 即可更改列表的值,具体取决于播放器。

          【讨论】:

            猜你喜欢
            • 2016-02-09
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2014-12-16
            • 1970-01-01
            • 2015-09-28
            • 2019-07-06
            • 1970-01-01
            相关资源
            最近更新 更多