как работает ввод аргументов в функцию?
class Solution:
def twoSum(self, nums, target):
solList = []
for i in range (0, len(nums)):
for j in range (i+1, len(nums)):
if nums[i]+nums[j] == target:
solList = solList.append(i)
solList = solList.append(j)
return solList
nums = [2, 7, 11, 15]
target = 9
Solution.twoSum(nums, target)
первая задачка с литкода
как передавать nums и target в функцию twoSum
помогите новичку
Ответы (1 шт):
Измените немножко вашу программу:
class Solution:
def twoSum(self, nums, target):
solList = []
for i in range (0, len(nums)):
for j in range (i+1, len(nums)):
if nums[i]+nums[j] == target:
solList.append(i)
solList.append(j)
return solList
nums = [2, 7, 11, 15]
target = 9
Solution().twoSum(nums, target)
и вы получите вывод
[0, 1]
(очевидно, индексы чисел 2 и 7 в списке nums).
Объяснение:
Метод
.append()возвращаетNone(«ничто»), значит, первая из ваших командsolList = solList.append(i) solList = solList.append(j)присвоит переменной
solListзначениеNone. Таким образом, в переменнойsolListуже не будет никакого списка, и вторая команда закончит программу ошибкой, потому что невозможно применить метод.append(j)к значениюNone.Решение:
Метод.append()не возвращает новый список, он прямо меняет исходный:solList.append(i) solList.append(j)twoSum()это метод не для классаSolution, а метод для объектов этого класса.Значит, он не применяется прямо к классу:
Solution.twoSum(nums, target) # неправильно!Нужно сначала создать объект этого класса, к чему достаточно добавить за его имя скобки, и затем применить метод на таким образом созданный объект:
Solution().twoSum(nums, target)