Лучшие помощники
- Megamozg 2205 б
- Matalya1 1800 б
- DevAdmin 1720 б
- arkasha_bortnikov 900 б
- Dwayne_Johnson 870 б
10 декабря 2022 21:15
980
Дан список чисел. Выведите все элементы списка, которые больше предыдущего элемента. 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
Остались вопросы?
Еще вопросы по категории Информатика
Самостоятельная работа 1 по теме «Основы логики» 3aranne 1. Bbruerus: a) 0v1)♥(yo) b)(1~1)<0)vi C) (1→1) -(0 → 0) d) 0~1)〜1 e) 1x0x1)>1...
По форме представления информацию можно условно разделить на следующие виды: а) математическую, биологическую, медицинскую, психологическую и пр., б)...
Здравствуйте можете объяснить) букв или цифр. В одной из кодировок Unicode каждый символ кодируется 16 бит. Вася написал текст (в нём нет ли...
Внешняя память служит для ... 1)хранения информации внутри ЭВМ 2) хранения оперативной, часто изменяющейся информации в процессе решения задачи 3) обр...
Что такое поле в информатике...