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