用不同的参数组合相同的函数

2024-05-16 09:43:07 发布

您现在位置:Python中文网/ 问答频道 /正文

我想做一个tic-tac-toe游戏,当用户输入一个数字1-9时,它会在网格上相应的空间上生成一个X。下面是它的函数:

def move(inp):
    if inp == 1:
        one = " X |\t|\n_____________\n   |\t|\n_____________\n   |\t|"
        print one
    elif inp == 2:
        two = "   | X |\n_____________\n   |\t|\n_____________\n   |\t|"
        print two
    elif inp == 3:
        three = "   |\t| X\n_____________\n   |\t|\n_____________\n   |\t|"
        print three
    elif inp == 4:
        four = "   |\t|\n____________\n X |\t|\n_____________\n   |\t|"
        print four
    elif inp == 5:
        five = "   |\t|\n_____________\n   | X  |\n_____________\n   |\t|"
        print five
    elif inp == 6:
        six = "   |\t|\n_____________\n   |\t| X \n_____________\n   |\t|"
        print six
    elif inp == 7:
        seven = "   |\t|\n_____________\n   |\t|\n_____________\n X |\t|"
        print seven
    elif inp == 8:
        eight = "   |\t|\n_____________\n   |\t|\n_____________\n   | X |"
        print eight
    elif inp == 9:
        nine = "   |\t|\n_____________\n   |\t|\n_____________\n   |\t| X "
        print nine

所以,网格显示在正确的位置。但下一个转折点来了。我想让他们输入一个新的数字,但保留原来的X。我在想:有没有办法用一个不同的参数把这个函数和它自己结合起来,让它们在网格上放两个X? 所以,我的问题是,有没有一个函数,如果没有,我怎么做。你知道吗


Tags: 函数网格数字onethreefourprintinp
2条回答

编程时,如果你发现自己一遍又一遍地复制粘贴同一个代码,那就错了。你应该从一开始就重新考虑这件事。这个怎么样?你知道吗

board = [' '] * 9 # the 9 cells, empty at first

def show(board):
    for row in range(3):
        print '|',
        for col in range(3):
            print board[row*3 + col], '|',
        print # newline

def move(inp):
    board[inp-1] = 'X' # user input is 1-based, Python is 0-based
    show(board)

你可以这样做:

def make_square(inp):
    square = " {0} |{1}\t|{2}\n_____________\n  {3} | {4}\t|{5}\n_____________\n {6}  |{7}\t|{8}" # set {} brackets for 'X' format
    inp += -1 # rest because need take from 0 as the brackts indice
    for x in range(9): # range max of 'X'
        if x != inp:
            square = square.replace('{{{0}}}'.format(x),' ') # delete brackets without the number select by the user
            # {{ {0} }}  explication http://stackoverflow.com/a/5466478/4941927
    square = square.replace('{{{0}}}'.format(inp),'{0}') # convert current {number} into {0} for format
    square = square.format('X') # formatting brackets for the 'X'
    print square

make_square(2)

如果你需要帮助,我很乐意帮忙 问候语!你知道吗

相关问题 更多 >