检查列表中的所有项目是否包含(或更确切地说)相同的字符串。

时间:2016-11-11 23:29:06

标签: python list function

我差不多做了一个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”。

很抱歉代码很长。如果您有任何建议,我们将不胜感激。

1 个答案:

答案 0 :(得分:2)

你的作业:

climax1 = lst[0:3]
climax2 = lst[3:6]
climax3 = lst[6:] 

复制原始列表;因此,当您更新列表时,您不会更新副本。修复它,您的代码将起作用。

(要调试,请尝试添加print(climax1)作为调试语句)