我正在学习python.我正在为该计划寻求见解.给定 int 数组长度为 2,如果它包含 2 或 3,则返回 True


def has23(nums):
    if (2 or 3) in nums:
        return True
    else: 
        return False

结果对大部分人来说是正确的。但对于has23[3,3][3,9]来说,这是错误的。我在代码中有"or"参数,这不应该意味着它会再寻找 2 和 3,如果找到其中任何一个,n 将给出 true。请告诉我,我在这里缺少什么概念?

def has23(nums):
    return (2 in nums) or (3 in nums)

表达式 (2 or 3) 返回值 2,因此列表 [3,3] 不会传递。

2 or 3的计算结果为 2 ,因此您正在检查2是否在nums中。 相反,说if 2 in nums or 3 in nums:. 但是,您实际上并不需要 if 语句,因为您可以只返回表达式的结果:

return 2 in nums or 3 in nums

您可以显式检查每个元素是 2 还是 3:

def has23(nums):
    for i in nums:
        if i in (2, 3):
            return True
    return False

另一种方法是使用生成器:

def has23(nums):
    return any(i in (2,3) for i in nums)

你应该这样做,它会做你想要的逻辑。

def has23(nums):
     if 2 in nums or 3 in nums:
          return True
     else:
          return False

最新更新