Combine the same function with different parameters - Python

I want to make a tic tac toe game, and I do it this way, when the user enters the number 1 - 9, he makes X in the corresponding space on the grid. here is the function for this:

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 

and so the grid appears with X in the right place. But then comes the next turn. And I want them to enter a new number, but keep the old X where it was. I thought: is there a way to combine this function with another parameter and make them put two Xs in the grid? So my question is: is there a function for this, and if not, how would I do it.

+5
source share
2 answers

You can do it:

 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) 

If you need help, I am happy to help. Hello!

+2
source

When programming, if you copy the same code again and again, something is wrong. You have to rethink this thing from the start. How about this?

 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) 
+2
source

All Articles