问题陈述
给定一个数字列表和一个数字k,返回列表中的任意两个数字相加是否等于k。
示例
给定 [1, 2, 3] 和 k = 5,返回 True 因为 2 + 3 = 5.
这是我尝试做的:
def pairs(n):
for i in range(len(n)):
for j in range(i+1, len()):
yield n[i], n[j]
def ListCheck():
number = input("Give me a number:")
val = int(number)
nums = [1,2,3]
for i, j in pairs(nums):
if j + i == val:
print(True)
break
ListCheck()
运行时出现错误,我不明白为什么。
请您参考如下方法:
你也可以做 itertools.combinations,比@bitto 的解决方案短一点:
import itertools
def f(lst,num):
for x,y in itertools.combinations(lst,2):
if x+y==num:
return True
return False
lst=[1,2,3]
num=int(input("Give me a number: "))
print(f(lst,num))
