如何获得仅打印一个输出的代码?

时间:2019-04-10 21:22:02

标签: python

本质上,我正在尝试制作一个读取数组和数字的函数。如果数字在数组内,则应返回True,否则返回False。但是,我发现数组中的每个元素都有一个TrueFalse-当我只需要一个TrueFalse时,代码会单独检查所有内容;是数组中的数字吗?

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

5 个答案:

答案 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)