пока вы определяете свои операторы печати в print_board()
, вы никогда не вызываете его.
Просто добавьте
print_board()
до конца и там, где это уместно.
чтобы ваш код мог выглядеть примерно так:
import numpy as np
board = [" " for i in range(9)]
icons = {1:"X", 2:"O"}
def print_board(remove=0):
if remove > 0:
print('\x1b[1A\x1b[2K'*remove)
boardString = "| {} | {} | {} |\n"*3
print(boardString.format(*board))
def player_move(_turn):
player = np.mod(_turn,2)+1
print("Your turn player {}".format(player))
while True:
choice = int(input("Enter your move (1-9): "))
if board[choice - 1] == " ":
board[choice - 1] = icons[player]
break
else:
print('\x1b[1A\x1b[2K'*3)
print("That space is taken!")
print_board(7)
print_board()
for turn in range(9):
player_move(turn)
| X | O | X |
| O | | |
| | | |
Your turn player 1
Enter your move (1-9):
некоторые заметки:
- Как показано выше, вы можете заменить последний отпечаток платы и командной строки, используя коды VT100 для перехода вверх по строке (
\x1b[1A
) и удаления строки (\x1b[2K
) перед печатью. заново
- строки можно умножать (повторять) как списки
In [1]: print('a'*3)
> aaa
- вы можете добавить
\n
для разрыва строки в строках вместо вызова print()
несколько раз
In [25]: print('a\nb')
> a
> b
- вы можете распаковать итерируемые переменные (списки, кортежи ..), используя
*
или **
yourDict = {'a':3, 'b':4}
yourList = [1, 2]
yourFun(*yourList, **yourDict )
# is equvivalent to:
yourFun(1, 2, a=3, b=4 )