Python 为什么我会在搜索时出错

Python 为什么我会在搜索时出错,python,Python,我有以下基于Python学派的代码: 编辑:修复了“位置”和“返回已找到”的缩进,并使用了“原始输入” def linearSearch(item,my_list): found = False position = 0 while position < len(my_list) and not found: if my_list(position) == item: found = True position

我有以下基于Python学派的代码:

编辑:修复了“位置”和“返回已找到”的缩进,并使用了“原始输入”

def linearSearch(item,my_list):
    found = False
    position = 0
    while position < len(my_list) and not found:
        if my_list(position) == item:
            found = True
        position = position + 1
    return found

bag = ['book','pencil','pen','note book','sharpner','rubber']
item = raw_input('What item do you want to check for in the bag?')
itemFound = linearSearch(item,bag)
if itemFound:
    print('Yes, the item is in the bag')
else:
    print('Your item seems not to be in the bag')
def linearSearch(项目,我的清单):
发现=错误
位置=0
当位置
当我运行该程序时,我得到以下信息:

What item do you want to check for in the bag?pencil
Traceback (most recent call last):
  File "test.py", line 11, in <module>
    item = input('What item do you want to check for in the bag?')
  File "<string>", line 1, in <module>
NameError: name 'pencil' is not defined
你想在包里找什么东西?铅笔
回溯(最近一次呼叫最后一次):
文件“test.py”,第11行,在
item=输入('您想在包中检查什么项目?')
文件“”,第1行,在
NameError:未定义名称“pencil”
编辑:编辑后出现以下错误,尽管尝试将项目名称置于引号之间

Traceback (most recent call last):
  File "test.py", line 12, in <module>
    itemFound = linearSearch(item,bag)
  File "test.py", line 5, in linearSearch
    if my_list(position) == item:
TypeError: 'list' object is not callable
回溯(最近一次呼叫最后一次):
文件“test.py”,第12行,在
itemFound=线性搜索(项目、包)
linearSearch中第5行的文件“test.py”
如果我的列表(位置)=项目:
TypeError:“列表”对象不可调用
为什么我会犯这个错误


谢谢。

问题是,您使用的是python2,这是python3代码。因此,最好安装python3,该代码应该运行正常。或者在python2中,您可以使用原始输入函数而不是输入。

问题是,您使用的是python2,这是python3代码。因此,最好安装pyth在3上,此代码应该运行正常。或者在python2中,您可以使用原始输入函数代替输入。

input
替换为
raw\u input
以获取字符串:
input
告诉Python 2计算输入字符串


也就是说,您的代码有更多的问题:例如,您将
位置
增加到错误的位置。

输入
替换为
原始输入
,以获得字符串:
输入
告诉Python 2计算输入字符串


也就是说,您的代码有更多的问题:例如,您在错误的位置增加了
位置。

my_list
是一个列表,索引它不是将其作为函数调用,因此它应该是:

if my_list[position] == item:
另一件事,如果您正在
my_list
中查找某个特定项目,而不是在找到该项目后立即从
linearSearch
返回,则无需继续遍历
my_list
的其余部分:

if my_list[position] == item:
    found = True
    return found

my_list
是一个列表,索引它并不是将其作为函数调用,因此它应该是:

if my_list[position] == item:
另一件事,如果您正在
my_list
中查找某个特定项目,而不是在找到该项目后立即从
linearSearch
返回,则无需继续遍历
my_list
的其余部分:

if my_list[position] == item:
    found = True
    return found

我想这是一种作业,否则就不需要实现这个函数,只需执行包中的
。无论如何,关于这个函数,不需要像那样跟踪索引,使用range或xrange,或者找到一个变量,只需在找到时执行
返回True
,并在函数末尾执行
 返回False

def linearSearch(item,my_list):
    for position in xrange(len(my_list)):
        if my_list[position] == item:
            return True
    return False
您还可以使用列表是可编辑的这一事实,并执行以下操作:

def linearSearch(item,my_list):
    for elem in my_list:
        if elem == item:
            return True
    return False 

我想这是一种作业,否则就不需要实现这个函数,只需执行包中的
。无论如何,关于这个函数,不需要像那样跟踪索引,使用range或xrange,或者找到一个变量,只需在找到时执行
返回True
,并在函数末尾执行
 返回False

def linearSearch(item,my_list):
    for position in xrange(len(my_list)):
        if my_list[position] == item:
            return True
    return False
您还可以使用列表是可编辑的这一事实,并执行以下操作:

def linearSearch(item,my_list):
    for elem in my_list:
        if elem == item:
            return True
    return False 


这就是全部代码吗?当您输入输入时,用引号将其括起来…
'pencil'
…不仅仅是
pencil
@ironfirst Python 2.7。10@IronFist是的,虽然包装项目,但我得到了您在帖子中看到的错误。@Arman是的,这是全部代码。这是全部代码吗?当您输入输入时,用引号将其包装…
'pencil'…不仅仅是
铅笔
@IronFist Python 2.7。10@IronFist是的,虽然包装了邮件,但我得到了你在帖子中看到的错误。@Arman是的,这是全部代码谢谢你的回复。我根据你的回复对上面的帖子做了一些编辑,但仍然得到了错误。你知道为什么吗?Thanks@Simplicityp中的输入函数ython2的作用与eval(raw_input())相同。@如果您试图将列表作为函数调用!您需要在索引处获取一个项,请将此:if my_list(position)==项替换为:if my_list[position]==项目对不起,忽略标签,我不知道它们在评论中不起作用。谢谢你的回复。我根据你的回复对上面的帖子进行了一些编辑,但仍然出现错误。你知道为什么吗?Thanks@Simplicitypython2中的输入函数的作用与eval(raw_input())相同@如果您试图将列表作为函数调用!您需要在索引处获取一个项,请将此:if my_list(position)==项替换为:if my_list[position]==项目对不起,忽略标签,我不知道它们在评论中不起作用。谢谢你的回复。我根据你的回复对上面的帖子进行了一些编辑,但仍然出现错误。你知道为什么吗?Thanks@Simplicity不,它显然不起作用。但是正如前面提到的,这不是你代码的唯一问题。谢谢你的回复。我做了一些修改根据你的回复,我对上面的帖子进行了一些编辑,但是仍然得到了一个错误。你知道为什么吗?Thanks@Simplicity不,它显然不起作用。但正如前面提到的,这不是你代码的唯一问题。感谢你的精彩捕捉。是的,这解决了问题:-)没有pblm@Simplicity;)也不需要
found
变量。和这个