Python 为什么这两个数字和的函数返回';无';而不是返回[-1,11]?

Python 为什么这两个数字和的函数返回';无';而不是返回[-1,11]?,python,list,nonetype,Python,List,Nonetype,问题是数组中的项目是str,您可以将它们强制转换为int,排序函数采用iterable,以便将这两个数字都添加到列表中 def twosum(array, targetSum): for i in range(len(array) - 1): firstNum = array[i] for j in range(i + 1, len(array)): secondNum = array[j] if first

问题是
数组
中的项目是
str
,您可以将它们强制转换为
int
,排序函数采用iterable,以便将这两个数字都添加到列表中

def twosum(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 sorted(firstNum, secondNum)

if __name__ == '__main__':
    print(twosum(['3', '5', '-4', '8', '11', '1', '-1', '6'], 10))
输出

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

if __name__ == '__main__':
    print(twosum([int(i) for i in ['3', '5', '-4', '8', '11', '1', '-1', '6']], 10))

您的主要问题是将字符串视为整数。但是,函数的许多复杂性已经以
itertools.compositions
的形式在标准库中实现

[-1, 11]
来自itertools导入组合的

def twoSum(阵列、目标):
对于x,y的组合(map(int,array),2):
如果x+y==目标:

返回[x,y],如果x可能是因为从未遇到过
return sorted(firstNum,secondNum)
。如果是,则将是一个错误。您正在添加和比较字符串,而不是整数。这是第一个问题…请注意,
'-1'+'11'='-111'
,而不是
10
。如果您使用,这将更简单。首先将输入更改为int可能更有意义。我怀疑OP的家庭作业没有规定由字符串列表和int组成的输入。我的猜测是OP函数调用中数字周围的引号是错误的。
from itertools import combinations


def twoSum(array, target):
    for x, y in combinations(map(int, array), 2):
        if x + y == target:
            return [x, y] if x <= y else [y, x]  # sorted is overkill here