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
我寻找一个在元组中确实存在的数字,为什么它仍然返回找不到? 你能帮我看看待办事项吗?
答案 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
。您正在遍历整个元组。
那是问题。
根据您的情况,如果在搜索中给出元组中的最后一个元素,则会得到预期的结果。