Объединить одну и ту же функцию с разными параметрами – 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, где он был. Я думал: есть ли способ объединить эту функцию с собой с другим параметром и заставить их поместить два X на сетку? Итак, мой вопрос в том, есть ли функция для этого, а если нет, как бы я это сделал.

2 Solutions collect form web for “Объединить одну и ту же функцию с разными параметрами – Python”

вы можете сделать это:

 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) 

если вам нужна помощь, я рад помочь приветствовать!

При программировании, если вы снова и снова копируете один и тот же код, что-то не так. Вы должны переосмыслить эту вещь с самого начала. Как насчет этого?

 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) 
  • Передайте формулу в качестве параметра функции в python
  • функция возвращает наименьшую разницу между элементами из двух списков - python
  • Почему functools.partial не возвращает реальную функцию (и как ее создать)?
  • позволяют пользователям «расширять» функции API
  • Изменение строк в функциях Python
  • execfile () нельзя надежно использовать для изменения локальных функций
  • Python: как вызвать длинную функцию, содержащую сотни списков в краткой форме
  • Вызывать функцию в python, get '(function) не определен'?
  • Python - лучший язык программирования в мире.