Я решаю проблему в 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");
Я ожидал, что индекс вернется
Ну, верните его, используя return i вместо печати






Вы не возвращаете значение, вы печатаете его.
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 Я не даю точных решений проблем. Возможно, в постановке задачи указано the target value will be always available in the list.
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
Хорошее предложение, измените подсказку типа, я думаю, return None здесь вполне подходит, верно?
Вы должны вернуть его, а не печатать.