如何缩短包含多个"or"运算符的列表,这些运算符遍历列表中的所有元素



编辑:这个问题不是重复的,因为我在问如何缩短这个完整写出的任务,而据说与我重复的问题问为什么"a == b 或 c 或 d"总是计算为 True,我知道答案,这不是我坚持的。

我开始制作这个函数,但是我不知道谁来缩短这个"或"任务,因为首先它看起来不好,其次,如果列表有 100 个元素长,那么一直键入 move[n] 到 moves[n+99] 都是荒谬的。

关于如何缩短它的任何建议,因为我想不出任何东西也旁注它们必须是我知道我可以做的整数

if playerMove == '1 2 3 4 5 6 7 8 9'.split():

但是玩家移动是一个整数,数字是字符串。

def getPlayerMove(playerMove):
    while True:
        n=0
        moves = [1,2,3,4,5,6,7,8,9]
        if playerMove == moves[n] or moves[n+1] or moves[n+2] or moves[+3] or moves[n+4] or moves[n+5] or moves[n+6] or moves[n+7] or moves[n+8] or moves[n+9]:
            return playerMove
        else:
            playerMove = int(input("Enter Number 1-9"))

您实际上想检查成员资格,因此只需使用in运算符即可。此外,作为一种更python化的方式,使用一个集合来保留您的移动,因为它的成员资格检查的复杂性约为O(1(:

moves = {1,2,3,4,5,6,7,8,9}
if playerMove in moves:
    # do something 

最新更新