Python Tic Tac脚趾/零和交叉-游戏最终结果打印两次
这是我尝试制作的第一个程序。这是一个简单的零和十字架游戏。它是用Python 3.6编写的 我已经测试过了,当比赛结束时,平局/胜利信息会被打印两次,但我不明白为什么 任何关于这方面或任何其他改进的帮助都将不胜感激。非常感谢 我只包含了玩家1的代码,所以我可以发布问题Python Tic Tac脚趾/零和交叉-游戏最终结果打印两次,python,python-3.x,Python,Python 3.x,这是我尝试制作的第一个程序。这是一个简单的零和十字架游戏。它是用Python 3.6编写的 我已经测试过了,当比赛结束时,平局/胜利信息会被打印两次,但我不明白为什么 任何关于这方面或任何其他改进的帮助都将不胜感激。非常感谢 我只包含了玩家1的代码,所以我可以发布问题 #Grid grid = [0, 1, 2, 3, 4, 5, 6, 7, 8] print("Welcome to Noughts and Crosses Game") p1_name = input("What is name
#Grid
grid = [0, 1, 2, 3, 4, 5, 6, 7, 8]
print("Welcome to Noughts and Crosses Game")
p1_name = input("What is name of Player 1? Player 1 is 'x': ")
#Draw Grid
def draw_grid():
print("-------------")
print('|', grid[0], '|', grid[1], '|', grid[2], '|')
print("-------------")
print('|', grid[3], '|', grid[4], '|', grid[5], '|')
print("-------------")
print('|', grid[6], '|', grid[7], '|', grid[8], '|')
print("-------------")
#Move input for player 1
def p1():
try:
p1_input = int(input(p1_name + " select a space on the grid by entering a \
number to place an 'x': "))
except ValueError:
print("Error: Please enter a number, not a letter or symbol")
p1()
else:
if p1_input not in range(9):
print("Error: Please select a number on the grid 0-8 to place an 'x'")
p1()
elif grid[p1_input] == "x" or grid[p1_input] == "o":
print("Error: This spot has been taken.")
p1()
else:
grid[p1_input] = "x"
draw_grid()
#Check for three x in a row
def p1_check():
if grid[0] == "x" and grid[1] == "x" and grid[2] == "x" or \
grid[3] == "x" and grid[4] == "x" and grid[5] == "x" or \
grid[6] == "x" and grid[7] == "x" and grid[8] == "x" or \
grid[0] == "x" and grid[3] == "x" and grid[6] == "x" or \
grid[1] == "x" and grid[4] == "x" and grid[7] == "x" or \
grid[2] == "x" and grid[5] == "x" and grid[8] == "x" or \
grid[6] == "x" and grid[4] == "x" and grid[2] == "x" or \
grid[0] == "x" and grid[4] == "x" and grid[8] == "x":
print(p1_name + " Wins!")
return "End Game"
#Check for a tie
def tie_check():
if grid.count("x") + grid.count("o") == len(grid):
print("Game is a tie")
return "End Game"
def play():
draw_grid()
while True:
p1()
p1_check()
if p1_check() == "End Game":
break
tie_check()
if tie_check() == "End Game":
break
play()
您正在运行p1_check()和tie_check()两次。将p1_check()和tie_check()的输出存储在变量中,以避免重复打印
ended = p1_check()
if ended == "End Game":
break
tied = tie_check()
if tied == "End Game":
break
因为p1_检查和tie_检查执行两次。 在if语句之前一次,然后在if语句中再次
我建议在if语句之前删除调用,把它放在一边:下面是一个绘制网格的好方法:
ended = p1_check()
if ended == "End Game":
break
tied = tie_check()
if tied == "End Game":
break