在这个python程序中,我试图在排序列表中实现搜索。
我面临的问题很简单,但我无法修复它。我想打印元素,当找到元素时,如果找不到元素,我想打印" Not Matched"。但问题在于它打印的每个元素" Not Matched"如果所选元素== sorted_list [i] 。我不想得到这个。我想得到"不匹配"一旦我要找的元素不在列表中。
这是代码。
for i in range(0, len(sorted_list)):
if take_input == sorted_list[i]:
print sorted_list[i]
elif take_input != sorted_list[i]:
print "Not Matched"
答案 0 :(得分:1)
您可以将for ... else ...
与break
声明一起使用:
for i in range(0, len(sorted_list)):
if take_input == sorted_list[i]:
print sorted_list[i]
break # get out of the for loop.
else:
# This will be executed only if the `for` loop is not terminated with `break`.
print "Not Matched"
如果您使用in
operator,则无需进行迭代:
if take_input in sorted_list:
print take_input
else:
print "Not Matched"
BTW,如果你不需要索引,只需迭代序列,而不是使用索引。
答案 1 :(得分:1)
使用in
检查take_input
中是否有sorted_list
,并且无需迭代sorted_list
:
if take_input in sorted_list:
print take_input
else:
print "Not Matched"
您无需使用范围迭代sorted_list
即可使用:
for i in sorted_list:
if i == take_input
如果您想要索引,则应使用enumerate
:
for ind, ele in enumerate(sorted_list): # ind is each index, ele each each element in the list
if take_input == sorted_list[ind]:
答案 2 :(得分:0)
它可以这样工作。 (转换)
switch_found = 0
for i in range(0, len(sorted_list)):
if take_input == sorted_list[i]:
switch_found = 1
break
# else it will continue
if switch_found == 1:
print sorted_list[i]
else:
print "Not Matched"
这将确保它只打印一次找到的元素。如果开关未设置为1表示该元素不存在,则将打印“不匹配”(一次)。