while循环和逻辑问题的返回语句

问题描述

我很尴尬地问这个问题,但是我似乎无法为该函数返回正确的结果。基本上,我可以对函数进行编程以处理解决方案或不解决方案,但不能同时解决这两个问题。

def sum_pair(l,t):
    l.sort()
    s = 0 # start index
    e = len(l) - 1 # last index

    while s < e:
        if (l[s] + l[e] == t):
            a,b = l[s],l[e]
            return a,b
        elif (l[s] + l[e] < t):
            s = + 1
        else:
            e -= 1
    return a,b # return (0,0) !no result or return (n,n) if result

l1 = [4,3,5,7,8]
target = 20 # No solution
print(sum_pair(l1,target))

基本上,如果没有解决方案,我会尝试返回(0,0),但如果它们求和到目标值,我就需要返回(n,n)。我想尽可能避免使用条件逻辑。

我的猜测是我遇到范围问题。

提前感谢任何人。

解决方法

  1. 此问题不需要a和b
  2. s = + 1中有一个错字,将是s+=1
def sum_pair(l,t):
    l.sort()
    s = 0 # start index
    e = len(l) - 1 # last index

    while s < e:
        if l[s] + l[e] == t:
            return l[s],l[e]
         
        elif l[s] + l[e] < t:
            s += 1

        else:
            e -= 1

    return 0,0 # return (0,0) !no result or return (n,n) if result

l1 = [4,3,5,7,8]
target = 20 # No solution
print(sum_pair(l1,target))

这对我来说很好。

,

这是我如何编辑您的代码:

def sum_pair(l,t):
    l.sort()
    s = 0 # start index
    e = len(l) - 1 # last index

    a,b = 0,0 # set default return value
    while s < e:
        if (l[s] + l[e] == t):
            a,b = l[s],l[e]
            break
        elif (l[s] + l[e] < t):
            s += 1 # you typoed this line
        else:
            e -= 1
    return a,b
l1 = [4,8]
target = 10 # No solution
print(sum_pair(l1,target))

我不确定在有多个答案的情况下会发生什么。这样,它接受a的最小值对。

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...