如何解决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)。我想尽可能避免使用条件逻辑。
我的猜测是我遇到范围问题。
提前感谢任何人。
解决方法
- 此问题不需要a和b
-
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
的最小值对。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。