#python
Вопрос:
Я новичок в python и не знаю, как это сделать.
Кто-нибудь знает, как я могу исправить свой код, пожалуйста?
def smaller_index(items: list[int]) -gt; int: """ Return the index of the first integer in items that is less than its index, or -1 if no such integer exists in items. gt;gt;gt; smaller_index([2, 5, 7, 99, 6]) -1 gt;gt;gt; smaller_index([-5, 8, 9, 16]) 0 gt;gt;gt; smaller_index([5, 8, 9, 0, 1, 3]) 3 """ min_value = min(items) if items.count(min_value) gt; 1: return [i for i, x in enumerate(items) if x == min(items)] else: return items.index(min(items))
Комментарии:
1. Пройдите по списку. Для каждого элемента проверьте, меньше ли он его индекса. Если это так, верните индекс этого элемента.
2.
next(v for i, v in enumerate(vs) if v lt; i)
3. На самом деле, вы не за горами для начала
enumerate(items)
— просто нужно сравнить idx, num…4. Название вашего поста и логика в вашем опубликованном коде не совпадают.
Ответ №1:
Вот решение этой проблемы.
def smaller_index(items: list) -gt; int: """ Return the index of the first integer in items that is less than its index, or -1 if no such integer exists in items. #gt;gt;gt; smaller_index([2, 5, 7, 99, 6]) -1 #gt;gt;gt; smaller_index([-5, 8, 9, 16]) 0 #gt;gt;gt; smaller_index([5, 8, 9, 0, 1, 3]) 3 """ for i in range(len(items)): if items[i] lt; i: return i return -1 print(smaller_index([5, 8, 9, 0, 1, 3]))
Нарушение логики:
- Я изменил тип данных, указанный для элементов из списка[int], на список-по какой — то причине это указывало на ошибку (необходимо продолжить расследование)
- Выполните итерацию по списку, используя индексы их элементов — сравните их и, если ваше условие выполнено, верните значение индекса.
- Если ни один элемент в элементе не удовлетворяет вашему условию, после завершения цикла for верните значение -1
Ответ №2:
def smaller_index(items: list) -gt; int: for i, n in enumerate(items): if n lt; i: return i return -1
Предполагая, что я понимаю, что вы пытаетесь сделать, это может быть так просто, как вы хотите.