我差不多做了一个tic tac toe游戏,现在我想编写一个功能来检查是否有赢家。我的董事会是一份清单清单:
lst = ['1','2','3','4','5','6','7','8','9']
def board():
print (lst[0:3])
print (lst[3:6])
print (lst[6:])
['1', '2', '3']
['4', '5', '6']
['7', '8', '9']
这是我用于游戏的功能:
def move2():
move2=(input('Player 2: Type a number!'))
for x in lst:
if move2 == x:
lst[int(move2)-1] = 'o'
board()
move()
elif move2.isdigit() and move2 not in lst:
print('Not that number!')
break
board()
move2()
elif not move2.isdigit():
print('Not that number!')
break
board()
move2()
然后,我将原始列表拆分为可能的获胜方案:
climax1 = lst[0:3]
climax2 = lst[3:6]
climax3 = lst[6:]
climax4 = [lst[0],lst[3],lst[6]]
climax5 = [lst[1],lst[4],lst[7]]
climax6 = [lst[2],lst[5],lst[8]]
climax7 = [lst[0],lst[4],lst[8]]
并尝试检查其中是否包含所有'x'或全部'o':
def conclusion():
if all(item == 'x' for item in climax1) or all(item == 'x' for item in climax2) or all(item == 'x' for item in climax3) or all(item == 'x' for item in climax4) or all(item == 'x' for item in climax5) or all(item == 'x' for item in climax6) or all(item == 'x' for item in climax7):
print('Player 1 wins!')
elif all(item == 'o' for item in climax1) or all(item == 'o' for item in climax2) or all(item == 'o' for item in climax3) or all(item == 'o' for item in climax4) or all(item == 'o' for item in climax5) or all(item == 'o' for item in climax6) or all(item == 'o' for item in climax7):
print('Player 2 wins!')
else:
move()
但是当我尝试将其整合到游戏玩法的功能中时,它说它没有被定义。当我尝试类似的东西时:
all('o' == item for item in climax1)
每次返回False,即使该列表中的所有项都是“o”。
很抱歉代码很长。如果您有任何建议,我们将不胜感激。
答案 0 :(得分:2)
你的作业:
climax1 = lst[0:3]
climax2 = lst[3:6]
climax3 = lst[6:]
复制原始列表;因此,当您更新列表时,您不会更新副本。修复它,您的代码将起作用。
(要调试,请尝试添加print(climax1)
作为调试语句)