Практика кодирования: почему итераторы должны иметь псевдонимы? - PullRequest
0 голосов
/ 25 марта 2020

Я завершил вопрос от эксперта Л go, который просит вас l oop через массив чисел найти два числа, которые добавляют к целевой сумме. Я пытаюсь понять, почему эта функция не работает без псевдонимов итераторов.

ввод: [3, 5, -4, 8, 11, 1, -1, 6], 10 вывод: [-1, 11]

Это правильное решение:

def twoNumberSum(array, targetSum):
    for i in range(len(array) - 1):
        firstNum = array[i]
        for j in range(i + 1, len(array)):
            secondNum = array[j]
            if firstNum + secondNum == targetSum:
                return [firstNum, secondNum]
    return []

и я не понимаю, почему это не работает:

def twoNumberSum(array, targetSum):
    for i in range(len(array) - 1):

        for j in range(i + 1, len(array)):

            if i + j == targetSum:
                return [i, j]
    return []

1 Ответ

2 голосов
/ 25 марта 2020

Как уже упоминалось в комментариях, i и j - это не значения, а ваш индекс.

Всегда полезно просто проверить вывод на небольшом примере.

, когда

a=[6,7,8,9,10]

попытаться увидеть, какой диапазон находится на длине

for i in range(len(a)):
    print(i)

, это приведет к

0
1
2
3
4

а не

6
7
8
9
10

Надеюсь, это прояснилось. Будь здоров.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...