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

时间:2016-02-25 18:54:12

标签: python

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

结果对多数人来说是正确的。 但对于has23[3,3][3,9]来说,这是假的。 我在代码中有'或'参数,不应该意味着它会寻找2和3以及n如果找到任何它将给出真。 请告诉我,我错过了什么概念?

4 个答案:

答案 0 :(得分:4)

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

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

答案 1 :(得分:1)

2 or 3评估为2,因此您需要检查2是否在nums。相反,请说if 2 in nums or 3 in nums:。但是,您并不真正需要if语句,因为您只需返回表达式的结果:

return 2 in nums or 3 in nums

答案 2 :(得分:1)

如果它是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)

答案 3 :(得分:0)

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

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