Проблема в коде(не знаю как описать)

Здраствуйте, я пытался выполнить 1 задачу там где мы получаем список с чисел и при сложении их должно выйти число равное k, но у меня почему возрощяет пустой список.

Примичание! (числа не должни быть одинаковыми при сложении)

def twoSum(nums, k):
for i in nums:
    i += 1
    for j in nums:
        j = i + 1
        if (nums[i] + nums[j]) == k: 
            return [nums[i], nums[j]]   
        else: 
            return []
            

num = [0, 1, 3, 4]
k = 5

print(twoSum(num, k))

Зарание спасибо!


Ответы (2 шт):

Автор решения: MBo
def twoSum(nums, k):
    for i in range(len(nums)-1):
        for j in range(i+1, len(nums)):
            if (nums[i] + nums[j]) == k: 
                return [nums[i], nums[j]]   
    return []
→ Ссылка
Автор решения: nyekitka

Как я правильно понял, задача состоит в проверке на то, есть ли в списке два числа, которые в сумме дают некое число k. И я так подозреваю, вы хотели перебирать в переменных i и j индексы, но для этого нужно писать не for i in nums, а for i in range(len(nums) - 1):. И зачем вы потом прибавляете единицу не очень понятно. Плюс вы возвращаете пустой список сразу после того, как первая пара не подошла, хотя вы ещё не проверили остальные. Исправленная версия:

def twoSum(nums, k):
    for i in range(len(nums) - 1):
        for j in range (i + 1, len(nums)):
            if nums[i] + nums[j] == k: 
                return [nums[i], nums[j]]
    return []
→ Ссылка