Почему в мой код возвращает не то что мне нужно?
Я пытаюсь написать код выполняющий задание курса Основы программирования на Python, автор: Национальный исследовательский университет "Высшая школа экономики", на Coursera.
Задание
Дан список чисел. Выведите все элементы списка, которые больше предыдущего элемента.
Формат ввода
Вводится список чисел. Все числа списка находятся на одной строке.
Формат вывода
Выведите ответ на задачу. Пример Тест 1 Входные данные: 1 5 2 4 3
Вывод программы: 5 4
Мой код
spisok = input().split()
a = 1
sled = spisok[a]
for i in map(int, spisok):
if i < int(sled):
a += 1
print(sled)
else:
a += 1
Программа вместо того, чтобы подставлять на место [а] в spisok[a] новый индекс, просто один раз печатает число по индексу 1. То есть вместо перебора индексов и сравнивания чисел код просто останавливается на первом же проходе...
Ответы (2 шт):
mylist = input().split()
пройдитесь по списку с помощью перебора индексов (от 1)
for i in range(1, len(mylist)):
if mylist[i] > mylist[i-1]:
print(spisok[i])
5
4
Вы взяли элемент код индексом a, теперь в sled лежит элемент который уже никак не связан с списком и поэтому изменение переменной a никак не повлияет на значение в sled
ваш код с небольшими изменениями
spisok = input().split()
a = 1
sled = spisok[a]
for i in map(int, spisok):
if i < int(sled):
print(sled)
a += 1
sled = spisok[a]
Если к примеру длина spisok это 5, то на последней итерации значение a будет 5 и попытка взять элемент под индексом 5 вызовет ошибку IndexError, поэтому последнее значение списка брать не надо. убрать последний элемент можно легко с помощью среза
map(int, spisok[:-1])