Задача найти, cколько элементов массива больше своих соседей.(python) a = list(map(int, input().split())) s=0 if len(a)<3: print('0') else: for i in range(2,len(a)): if a[i-2]>a[i-1] and a[i]>a[i-1]: s+=1 print(s) Вот мой код. Почему не проходит?
У вас была ошибка в проверке элементов, вы искали кол-во элементов, которые меньше обоих своих соседей, вместо тех, которые больше, как просили в задании. Так же, при длине последовательности меньше трёх программа выводила 0 два раза - в начале, где вы проверяли длину последовательности, и в конце переменную s, которая тоже в таком случае равна нулю.
KnowsUser1
pass - дословно с англ - пропустить. Пропускает блок инструкций. Конкретно на этом примере - если длина вводимой последовательности меньше трёх - ничего не делать. Сразу переходит к инструкциям, описанным после блока if-else
Answers & Comments
Ответ:
a = list(map(int, input().split()))
s=0
if len(a)<3:
pass
else:
for i in range(1,len(a)-1):
if a[i] > a[i-1] and a[i]>a[i+1]:
s+=1
print(s)
Ввод/вывод:
test 1
>>> 1 3 2 4 2
>>> 2
test 2
>>> 1 2
>>> 0
test 3
>>> 1 5 2 6 3 8 4 9 2 10 1
>>> 5
Объяснение:
У вас была ошибка в проверке элементов, вы искали кол-во элементов, которые меньше обоих своих соседей, вместо тех, которые больше, как просили в задании. Так же, при длине последовательности меньше трёх программа выводила 0 два раза - в начале, где вы проверяли длину последовательности, и в конце переменную s, которая тоже в таком случае равна нулю.