您的代码有几个错误-请参阅内联注释:grid = [[' - - - '], ['| 1 | 2 | 3 |'],
[' - - - '], ['| 4 | 5 | 6 |'],
[' - - - '], ['| 7 | 8 | 9 |'],
[' - - - ']]
def player():
x = 0 # not used
y = 0 # not used
player1 = input("Enter Player1 move : ")
for i in grid: # each i is a list containing 1 string
for j in i: # each j is one string
if j == player1: # only ever true if playerinput is ' - - - '
# or '| 1 | 2 | 3 |' or '| 4 | 5 | & |' or ....
grid[1][1] = 'X' # never hit.
您应该将代码拆分为更小、更易于理解的部分:def freeSpace(l,pos):
"""Returns True if l[pos] is inside the list and currently of type int - else False."""
return (0 <= pos < len(l)) and isinstance(l[pos],int)
def setPlayer(l,player,pos):
"""Checks if l[pos] is valid to be set to a players 'X' or 'O' string.
If, set it and return True, else return False."""
if freeSpace(l,pos):
l[pos] = player
return True
return False
def printList(l):
"""Pretty prints a list of 9 items in a grid with some decor around it."""
print("\n - - - ")
for row in (l[i:i + 3] for i in range(0,9,3)):
print("|",end="")
for e in row:
print("{:^3}|".format(e),end="")
print("\n - - - ")
def no_win(l):
# TODO - check for win, return False and a win message mayhap
return True
主要游戏:
^{pr2}$
输出:- - -
| 1 | 2 | 3 |
- - -
| 4 | 5 | 6 |
- - -
| 7 | 8 | 9 |
- - -
Your turn: X
Which position? Applepie
- - -
| 1 | 2 | 3 |
- - -
| 4 | 5 | 6 |
- - -
| 7 | 8 | 9 |
- - -
Wrong move - try again: X
Which position? 99
- - -
| 1 | 2 | 3 |
- - -
| 4 | 5 | 6 |
- - -
| 7 | 8 | 9 |
- - -
Wrong move - try again: X
Which position? 1
- - -
| X | 2 | 3 |
- - -
| 4 | 5 | 6 |
- - -
| 7 | 8 | 9 |
- - -
Your turn: O
Which position? 1
- - -
| X | 2 | 3 |
- - -
| 4 | 5 | 6 |
- - -
| 7 | 8 | 9 |
- - -
Wrong move - try again: O
Which position? 5
- - -
| X | 2 | 3 |
- - -
| 4 | O | 6 |
- - -
| 7 | 8 | 9 |
- - -
Your turn: X
Which position? # etc.