本质上,我正在尝试制作一个读取数组和数字的函数。如果数字在数组内,则应返回True
,否则返回False
。但是,我发现数组中的每个元素都有一个True
或False
-当我只需要一个True
或False
时,代码会单独检查所有内容;是数组中的数字吗?
def is_it_there(arr, k):
for x in arr:
if x == k:
print(True)
else:
print(False)
is_it_there([8,5,2,234,426,7,11],11)
就像我之前说过的那样,只期望一个True,但是每个项目都被检查了,所以它是False, False, False, False, False, False, True
答案 0 :(得分:6)
就是
if k in arr:
print(True)
else:
print(False)
或更简单
print(k in arr)
答案 1 :(得分:0)
您可以像这样重构代码:
def is_it_there(arr, k):
for x in arr:
if x == k
return True
return False
print(is_it_there([8,5,2,234,426,7,11],11))
答案 2 :(得分:0)
如果您在列表中的任何位置找到该项目,请打印True
并立即退出功能。
如果一直到列表末尾都没有找到它,则仅打印False
。
def is_it_there(arr, k):
for x in arr:
if x == k:
# print True and terminate the function
print(True)
return
# if we made it all the way through the loop, we didn't find it
print(False)
但是,“ in”运算符已经可以满足您的要求:
if value in mylist:
print 'True'
else:
print 'False'
答案 3 :(得分:0)
问题源于事实,因为您在循环遍历元素时不断对其进行检查。因此,代码将不断检查该元素是否存在。因此,您将最终每次都打印一条语句。 Python提供了一种巧妙的方法来实现这一目标
def is_it_there(arr, k):
if k in arr:
print(True)
else:
print(False)
is_it_there([8,5,2,234,426,7,11],11)
答案 4 :(得分:0)
每次在循环中进行测试时,您都在打印结果。尝试在列表中记录每轮测试的结果,并测试结果列表中是否有“真”值。
代码示例:
def is_it_there(arr, k):
result = list()
for x in arr:
if x == k:
result.append(True)
else:
result.append(False)
if True in result:
print(True)
else:
print(False)
is_it_there([8,5,2,234,426,7,11],11)