Лучшие помощники
- Megamozg 2205 б
- Matalya1 1800 б
- DevAdmin 1720 б
- arkasha_bortnikov 900 б
- Dwayne_Johnson 870 б
10 декабря 2022 21:15
774
Дан список чисел. Выведите все элементы списка, которые больше предыдущего элемента. PYTHON 3 .ЧТО У МЕНЯ В КОДЕ НЕВЕРНО,ИСПРАВЬТЕ :a=input().split()
for i in range(len(a)):
if a[i]>a[i-1] and i!=0:
print(a[i])
1
ответ
В коде есть две проблемы:
1) input().split() возвращает список строк. Строки сравниваются лексикографически, и не всегда совпадают с тем, как соотносятся числа: например, "8" > "10", несмотря на то, что 8 < 10. Это лечится преобразованием к целому типу.
2) Это не приведет в ошибке, но не очень аккуратно: условие a[i] > a[i - 1] and i != 0 при i = 0 сравнит a[0] и a[-1], то есть первый и последний элемент, и только потом узнает, что i = 0. Сравнение этих элементов массива бессмысленно, код не ломается на этом месте только из-за особенности языка, в котором определены отрицательные индексы. Если переставить условия местами, то сначала код проверит, что i != 0, и если это не так, он ничего сравнивать не будет. Другой способ поправить - поменять границы в range, так будет немного быстрее.
Итоговый вариант:
a=input().split()
for i in range(1, len(a)):
if int(a[i])>int(a[i-1]):
print(a[i])
Пример ввода:
1 2 3 3 2 1
Пример вывода:
2
3
1) input().split() возвращает список строк. Строки сравниваются лексикографически, и не всегда совпадают с тем, как соотносятся числа: например, "8" > "10", несмотря на то, что 8 < 10. Это лечится преобразованием к целому типу.
2) Это не приведет в ошибке, но не очень аккуратно: условие a[i] > a[i - 1] and i != 0 при i = 0 сравнит a[0] и a[-1], то есть первый и последний элемент, и только потом узнает, что i = 0. Сравнение этих элементов массива бессмысленно, код не ломается на этом месте только из-за особенности языка, в котором определены отрицательные индексы. Если переставить условия местами, то сначала код проверит, что i != 0, и если это не так, он ничего сравнивать не будет. Другой способ поправить - поменять границы в range, так будет немного быстрее.
Итоговый вариант:
a=input().split()
for i in range(1, len(a)):
if int(a[i])>int(a[i-1]):
print(a[i])
Пример ввода:
1 2 3 3 2 1
Пример вывода:
2
3
0
·
Хороший ответ
12 декабря 2022 21:15
Остались вопросы?
Еще вопросы по категории Информатика
512 бит-это...байт. 1073741824 байт- это... Мбайт. 1024Кбайт-это..байт. №4 Сколько информации может уместиться на перечисленных носителях? Дискета3,5....
Что такое объект информатика...
При включении компьютера процессор обращается к… А) ОЗУ В) ПЗУ Б) винчестеру Г) дискете...
Световое табло состоит из лампочек. Каждая лампочка может находится в одном из трех состояний(включено, выключено или мегает). Какое наименьшее количе...
Составить кроссворд из 10 терминов по информатике 7 класс...