Я начинаю программировать на Python, и у меня проблемы с некоторыми материалами.Looping с последовательными элементами
Итак, я хочу написать функцию, которая возвращает логическое значение. Функция информирует пользователя о том, есть ли повторяющаяся пара элементов в списке, который он ввел. Кстати, я хочу это сделать, используя только len()
, range()
, loops
, if-statements
, переменные и арифметические функции (без встроенных функций).
Например:
contains_consecutive_duplicates([1,3,3]) should return True
contains_consecutive_duplicates([3,2,3]) should return False
Мой код:
def contains_consecutive_duplicates(xs):
for i in xs:
if xs[i] == xs[i-1] or xs[i] == xs[i+1]:
return True
else:
return False
Моя логика это следующим образом: Каждый раз, когда цикл будет работать, i
бы сослаться на какой-то элемент в списке. Если этот элемент был таким, что перед ним или после него он был равен ему, тогда цикл for вернет true. Если нет, продолжайте поиск. Если их нет, он вернет false.
Теперь я действительно понимаю, где ошибка (я думаю). Проблема в том, что я не знаю, как ее решить. Я думаю, что цикл for начинает сталкиваться с проблемой в начале (когда i
ссылается на 0-й элемент). Там нет элемента до 0-го элемента, следовательно, ошибка:
"index out of range"
P.S: Это как вы возвращаете логическое значение?
Есть ли лучший способ сделать это?
Я был бы признателен за предоставленную помощь! Заранее спасибо!
'для г в xs' перебирает значения в массиве, а не по индексам. – roeland
Кроме того, проблема, с которой вы можете столкнуться, заключается в проверке следующего элемента в списке. Если у вас есть список, который подходит только для xs [4], функция попытается проверить значение xs [5], но поскольку нет xs [5], здесь вы получите ошибку индекса – dbishop