打开元组返回错误结果

时间:2018-08-29 14:15:49

标签: python tuples

def search(T, num):
    **#TODO: Your code goes here
    for j in range(len(T)):
        if num==T[j]:
            found=True
            i=j
        else:
            found=False
            i="None"
    return found,i
    pass**

T = (257, 462, 18, 369, 415, 994, 541, 752, 78, 895, 0, 576, 40, 552, 438, 605, 54, 296, 433, 986, 685, 651, 523, 855, 777, 437, 65, 360, 265, 858, 260, 819, 586, 358, 860, 250, 531, 7, 801, 259, 155, 376, 374, 828, 475, 62, 52, 184, 186, 283, 643, 86, 472, 267, 692, 750, 948, 683, 452, 770, 322, 492, 871, 360, 88, 883, 764, 288, 383, 411, 679, 90, 857, 802, 974, 403, 798, 990, 475, 260, 289, 438, 873, 779, 895, 939, 462, 469, 183, 520, 366, 267, 896, 732, 303, 754, 195, 949, 546, 180)

x = int(input("Enter a number to search for in T: "))

# unpacking returned tuple
found, i = search(T, x)
print(found,i)

if found:
    print("First instance found at index {:}".format(i))
else:
    print("{} was not found in T".format(x))


----------
Enter a number to search for in T: 777
False None
777 was not found in T

我寻找一个在元组中确实存在的数字,为什么它仍然返回找不到? 你能帮我看看待办事项吗?

3 个答案:

答案 0 :(得分:1)

def search(tup, num):
    if num in tup:
        return True, tup.index(num)
    else:
        return False, None

请注意,您实际上不需要返回元组,只需返回tup.index(num)None,然后检查结果是否为None

答案 1 :(得分:1)

我假设这是一个编码教程,因为有内置函数可以做到这一点?

您的代码中的问题是找到匹配项时您没有跳出循环,因此除非匹配项位于最后位置,否则您将看不到它,因为下一条else语句将覆盖您的答案。修改循环,如下所示:

for j in range(len(T)):
    if num==T[j]:
        return True,j

return False, "None" # or better still the keyword None (no quotes)

答案 2 :(得分:-1)

找到后,返回public method provides(): array { return [ MyInterface::class, ]; } found。您正在遍历整个元组。 那是问题。

根据您的情况,如果在搜索中给出元组中的最后一个元素,则会得到预期的结果。