[英]How do I get my code to only print one output?
本质上,我正在尝试创建一个读取数组和数字的函数。 如果数字在数组中,则应返回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
只是
if k in arr:
print(True)
else:
print(False)
或者,更简单
print(k in arr)
您可以这样重构代码:
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))
如果您在列表中的任何位置找到该项目,请打印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'
问题源于事实,因为您在循环遍历元素时不断对其进行检查。 因此,代码将不断检查该元素是否存在。 因此,您将最终每次都打印一条语句。 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)
每次在循环中进行测试时,您都在打印结果。 尝试将每个测试回合的结果记录在一个列表中,并测试结果列表中是否有任何“ True”值。
代码示例:
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)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.