Python for循环和if语句

时间:2017-09-14 02:20:06

标签: python loops for-loop

我正在尝试编写一个函数,该函数使用for循环迭代整数列表,如果列表中有两个2,则返回True,否则False。例如,当我使用print(has22([1, 2, 2]))调用它时,它应该返回True。我是Python的新手,所以这是我到目前为止所做的,我不确定在and之后要放置什么来指定我希望它检查下一次迭代以查看它是否是2好。任何帮助表示赞赏。

    def has22(nums):
    """Checks a list for two 2's"""
    for num in nums:
        if num == 2 and 
        return(True)
    else: return(False)

4 个答案:

答案 0 :(得分:1)

def has22(nums):
    for count,num in enumerate(nums):
       try:
          if num == 2 and nums[count+1]==2:
             return(True)
       except IndexError: pass
    return(False)

尝试枚举。

答案 1 :(得分:1)

您可以使用内置any()来检查两个连续的两个,如下所示:

def has22(nums):
    return True if any(nums[i] == 2 and nums[i+1] == 2 for i in range(len(nums)-1) else False

或者,您可以将for循环修改为以下内容:

def has22(nums):
    for i in range(len(nums)-1):
        if nums[i] == 2 and nums[i+1] == 2:
            return True
    return False

答案 2 :(得分:0)

def has22(nums):
    """Checks a list for two 2's"""
    gotone = False
    for num in nums:
        if num == 2:
            if gotone:
                return True
            else:
                gotone = True
        else:
            gotone = False
    return(False)

答案 3 :(得分:0)

首先,将两个变量(一个用于记录最后一个num,另一个用于记录当前num)设置为非2.然后,遍历所有数字并首先将当前数字设置为num。然后,将最后一个数字变量(last_num)和当前数字变量(current_num)与2进行比较。如果两者都返回True,则return True。然后,将last_num设置为该数字。最后,如果找不到任何内容,return False

def has22(nums):
    last_num = -1
    current_num = -1
    for num in nums:
        current_num = num
        if (current_num == 2) and (last_num == 2):
            return True
        last_num = num
    return False