2015-01-19 5 views
1

Я работаю над Python online exercise.Найти, если есть последовательные вхождения int в список ints

Задача состоит в том, чтобы:

 
Given an array of ints, return True if the array contains a 2 next to a 2 somewhere. 

    has22([1, 2, 2]) → True 
    has22([1, 2, 1, 2]) → False 
    has22([2, 1, 2]) → False 

код, который я получил до сих пор:

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

возвратит все True экземпляры, но я не могу придумать, как включить заявление для False (я хотел бы придерживаться решения потока управления). Какие-либо предложения?

ответ

3

Вам не нужно перерыв после возвращения заявления, и вам просто нужно добавить «вернуться ложным» заявление в ваш цикл

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

Ваш код работает. Но поскольку я не согласен с этим, цикл for и возвращаемый False statemnt находятся на одном уровне (а не в возврате False внутри цикла). Когда функция вызывается, она запускает цикл for, смотрит на оператор if, если условие встречается где угодно в определенном диапазоне, оно возвращает True, если не делает ничего, и переходит к следующему утверждению, возвращая False. Это верно? – MyCarta

+1

Да, вы правы, если «loop» не находит элементы, удовлетворяющие условию - он «запускает» следующий оператор - возвращает False –

3

Вы можете упростить вашу функцию, используя any и generator expression:

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

Демо:

>>> def has22(nums): 
...  return any(nums[i+1] == nums[i] == 2 for i in range(len(nums)-1)) 
... 
>>> has22([1, 2, 2]) 
True 
>>> has22([1, 2, 1, 2]) 
False 
>>> has22([2, 1, 2]) 
False 
>>> 
+0

mmm, мне нравится идея, но даже если какой-либо встроенный, это онлайн-упражнение не похоже, согласны с этим. Сообщение об ошибке: Проблемы с компиляцией: Ошибка: «any» не определен – MyCarta

+1

Должен использоваться python 2.4 или ранее. –

 Смежные вопросы

  • Нет связанных вопросов^_^