Невозможно вернуть значение в python

Я решаю проблему в leetcode, где я должен вернуть индекс конкретной цели, вот код:

class Solution:
    def searchInsert(self, nums: List[int], target: int) -> int:
        l=len(nums)
        for i in range(0,l):
            if (nums[i]==target):
                print(i)

Ошибка, которую я получаю:

TypeError: None is not valid value for the expected return type integer
    raise TypeError(str(ret) + " is not valid value for the expected return type integer");

Я ожидал, что индекс вернется

Вы должны вернуть его, а не печатать.

maciek97x 21.08.2023 08:59

Ну, верните его, используя return i вместо печати

Roslin Mahmud Joy 21.08.2023 09:02
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
2
58
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Вы не возвращаете значение, вы печатаете его.

print(i) должно быть return i

Ответ принят как подходящий

Вам нужно вернуть индекс вместо его печати.

class Solution:
    def searchInsert(self, nums: List[int], target: int) -> int:
        l=len(nums)
        for i in range(0,l):
            if (nums[i]==target):
                return i

вы должны добавить некоторую логику для случая, когда target не найден. В этом случае функция все равно вернет None

FlyingTeller 21.08.2023 09:07

@FlyingTeller Я не даю точных решений проблем. Возможно, в постановке задачи указано the target value will be always available in the list.

Roslin Mahmud Joy 21.08.2023 09:11
  class Solution:
       def searchInsert(self, nums: List[int], target: int) -> Optional[int]:
           l=len(nums)
           for i in range(0,l):
               if (nums[i]==target):
                   return i

Если в вашей функции нет return, None будет возвращено по умолчанию, а в вашем коде просто print(i) не сможет разорвать цикл for. Следите за комментарием, searchInsert вернет None, если сможет найти индекс.

вы должны добавить некоторую логику для случая, когда target не найден. В этом случае функция все равно вернет None

FlyingTeller 21.08.2023 09:07

Хорошее предложение, измените подсказку типа, я думаю, return None здесь вполне подходит, верно?

Kaison L 21.08.2023 11:52

Другие вопросы по теме