Неубывающая последовательность
Задана последовательность целых чисел(каждое число вводится на отдельной строке).Найти длинну самой длинной непрерывной неубывающей последовательности
Ввод:
2
4
1
5
7
9
10
3
Вывод: 4
(Максимальная последовательность 5 7 9 10)
Мой код выдает мне ошибку "string index out of range"
z=input()
vvod=[]
vvod.append(z)
nc=[]
while z!="":
z=input()
if z!="":
vvod.append(z)
for i in range(len(vvod)):
for x in vvod:
if x<=x[i+1]:
nc.append(i)
else:
nc.clear
print(len(nc))
Ответы (2 шт):
Во-первых, вы забыли преобразовать введённые строки в числа.
Во-вторых, у вас будет x - это введённое число, а вы пытаетесь брать их него элементы x[i+1]. Ну и даже если это было бы нечто индексируемое, то был бы выход за границы, т.к. у вас цикл по всей длине.
В-третьих, clear - это функция, т.е. скобочки забыли.
В-четвёртых, вы нигде не сохраняете максимальную длину списка nc.
В общем, я думаю, что вы хотели написать что-то подобное:
print("Введите числа последовательности (или нажмите Enter чтобы завершить ввод)")
vvod = []
nc = 1
z = input("Введите число : ")
while z != "":
vvod.append(int(z))
z = input("Введите число : ")
max_len = len(vvod)
if max_len > 1:
max_len = 0
for i in range(len(vvod)-1):
if vvod[i] <= vvod[i+1]:
nc += 1
else:
nc = 1
if nc > max_len:
max_len = nc
print(max_len)
s, x, y, z = input(), -1, 0, 0
while s:
if int(s) > x:
y += 1
else:
z = max(z, y)
y = 1
x = int(s)
s = input()
print(max(z, y))