python中线性搜索中的逻辑错误

时间:2016-06-09 14:47:46

标签: python-3.x

我搜索用户在用户输入的列表中输入的元素的代码始终显示"元素未找到",即使用户在输入的列表中输入了元素。什么是错误? 还有,我的break语法有问题吗?

       x=eval(input("list  :    "))
       x=list(x)
       n=len(x)
       i=0
       ele=input("enter element to be searched :    ")

       for i in range(0,n):
             if(x[i]==ele):
                  print("element found at index number ",i)
                  break

       else:
             print("element not found")

2 个答案:

答案 0 :(得分:0)

存在类型不匹配。由于评估了列表,因此数字项不是字符串。但是,要搜索的元素是一个字符串。

在比较之前将元素转换为字符串可以解决此问题。

x=eval(input("list  :    "))
x=list(x)
ele=input("enter element to be searched :    ")
i=0

for e in x:
    if str(e) == ele:
        print("element found at index number ",i)
        break

    else:
        print("element not found")
    i+=1

答案 1 :(得分:0)

正如@arewm正确指出的那样,类型不匹配,但这里还有一个替代解决方案,它具有从用户输入实现列表的简洁方法:

strInput=input("list  :    ")
x=strInput.split()
x=[int(a) for a in x]
n=len(x)
i=0
ele=input("enter element to be searched :    ")
ele=int(ele)
for i in range(0,n):
    if(x[i]==ele):
        print("element found at index number ",i)
        break
    else:
        print("element not found")

输出:

list  :     1 2 3 4
enter element to be searched :     1
element found at index number  0

修改:此外,如果您希望element not found只出现一次,这是一个简单的更改:

strInput=input("list  :    ")
x=strInput.split()
x=[int(a) for a in x]
n=len(x)
i=0
ele=input("enter element to be searched :    ")
ele=int(ele)
for i in range(0,n):
    if(x[i]==ele):
        print("element found at index number ",i)
        break
    if(i==n-1):
        print("element not found")

输出继电器:

list  :     1 2 3 4 5 7 6 88 9
enter element to be searched :     5
element found at index number  4