我正在运行下面的函数,但是为什么它返回False,7-3是4,而4存在于集合中,所以它应该返回true。
from typing import List
def find_sum_of_two(A, val):
B = set(A)
print("B is : " + str(B))
for i in B:
if (val - i) in B:
return True
else:
return False
print(find_sum_of_two([2, 1, 4, 7, 3],7))
发布于 2021-08-14 06:27:50
如果您的条件不匹配,则在循环末尾返回False:
def find_sum_of_two(A, val):
B = set(A)
print("B is : " + str(B))
for i in B:
if (val - i) in B:
return True
return False
print(find_sum_of_two([2, 1, 4, 7, 3],7))
发布于 2021-08-14 06:27:39
仅return
returns
一次,在第一次return
之后,代码不再返回。
因此,尝试像这样缩进else
:
from typing import List
def find_sum_of_two(A, val):
lst = []
B = set(A)
print("B is : " + str(B))
for i in B:
if (val - i) in B:
return True
else:
return False
print(find_sum_of_two([2, 1, 4, 7, 3],7))
实际上,即使是现在也不需要else
:
for i in B:
if (val - i) in B:
return True
return False
发布于 2021-08-14 06:32:12
return
标记函数的结束。一旦遇到return语句,python就认为函数已经结束。因此,return
语句之后的所有语句都是不可达的。
在这种情况下,当执行return True
时,函数已经结束。因此,不会执行else
和其他return
语句。
因此,利用return
之后的任何语句都不会执行这一事实,您可以删除else
部件
for i in B:
if (val - i) in B:
return True
return False
https://stackoverflow.com/questions/68780856
复制相似问题