Python 二进制搜索和列表

Python 二进制搜索和列表,python,python-3.x,Python,Python 3.x,我的代码无法声明对象没有属性。我不知道为什么会失败,因为我对另一个程序有几乎完全相同的代码,除了查找使用的是顺序搜索,因为这是二进制搜索。您的代码失败,因为您拼写错误\uuuu init\uuu。每边需要两个下划线,否则它只是一个命名奇怪的方法。由于缺少\uuuu init\uuuu,因此将使用默认的\uuuu init\uuuu(不设置属性),并且您没有项或项属性。您需要修复\uuuu init\uuuu,并为项使用一致的名称: alist = BinaryStringList() alist

我的代码无法声明对象没有属性。我不知道为什么会失败,因为我对另一个程序有几乎完全相同的代码,除了查找使用的是顺序搜索,因为这是二进制搜索。

您的代码失败,因为您拼写错误
\uuuu init\uuu
。每边需要两个下划线,否则它只是一个命名奇怪的方法。由于缺少
\uuuu init\uuuu
,因此将使用默认的
\uuuu init\uuuu
(不设置属性),并且您没有
属性。您需要修复
\uuuu init\uuuu
,并为
项使用一致的名称

alist = BinaryStringList()
alist.strAdd("test1")
class BinaryStringList():

def\uuuu init\uuuuu(self):#您的代码失败,因为您拼错了
uuu init\uuuu
。每边需要两个下划线,否则它只是一个命名奇怪的方法。由于缺少
\uuuu init\uuuu
,因此将使用默认的
\uuuu init\uuuu
(不设置属性),并且您没有
属性。您需要修复
\uuuu init\uuuu
,并为
项使用一致的名称

alist = BinaryStringList()
alist.strAdd("test1")
class BinaryStringList():

def_uuinit_uu(self):#代码中有多个语法错误。递归也不是这样工作的,您需要有一个返回的基本条件。这个解决方案是可行的,但我强烈建议您使用递归来解决更简单的问题,以了解它是如何工作的

class BinaryStringList():
    def __init__(self):  # <-- Added extra trailing underscore
        self.items = []  # Fixed name to be items, not item 
类二进制字符串列表:
定义初始化(self):#初始化后有1个
self.items=[]#输入错误,应该是项目。
def strAdd(自身,项目):
self.items.append(项目)
def finditem(自身,项目):
返回自助回收箱(自助项目,项目)
def箱(自身、项目、项目):
如果len(项目)==0:
返回
中点=len(items)/2#len(self)没有任何意义,它应该是len(self.items)
如果项目[中点]==项目:
退货项目
其他:

如果item您的代码中有多个语法错误。递归也不是这样工作的,您需要有一个返回的基本条件。这个解决方案是可行的,但我强烈建议您使用递归来解决更简单的问题,以了解它是如何工作的

class BinaryStringList():
    def __init__(self):  # <-- Added extra trailing underscore
        self.items = []  # Fixed name to be items, not item 
类二进制字符串列表:
定义初始化(self):#初始化后有1个
self.items=[]#输入错误,应该是项目。
def strAdd(自身,项目):
self.items.append(项目)
def finditem(自身,项目):
返回自助回收箱(自助项目,项目)
def箱(自身、项目、项目):
如果len(项目)==0:
返回
中点=len(items)/2#len(self)没有任何意义,它应该是len(self.items)
如果项目[中点]==项目:
退货项目
其他:

如果itemits
item
,并且您正在添加到
items
。Typo.class SequentialStringList():def _init ___;(self):self.items=[]def strAdd(self,item):self中的字符串的追加(item)def findItem(self,item):if string==item:返回字符串返回'None'def iadd():alist=SequentialStringList()用于范围(20)内的x:alist.strAdd(“test”+str(x))print(alist.findItem(“test19”))效果很好。旁注:如果这是针对类的,那么不管怎样,但如果您试图针对真实代码执行此操作,我应该注意,这是在Python中进行二进制搜索的正确方法。@MarkBruner:如果需要添加/更新代码,请编辑问题,不要将其放在注释中。你不能格式化甚至换行注释。这是针对一个类的,不确定为什么注释中的代码不起作用,但我基本上有相同的添加函数用于顺序搜索,效果很好。不确定这是否纯粹是运气。我在二进制搜索中得到的错误是对象BinaryStringList没有对象“item”。它是
,您正在添加到
。Typo.class SequentialStringList():def _init ___;(self):self.items=[]def strAdd(self,item):self中的字符串的追加(item)def findItem(self,item):if string==item:返回字符串返回'None'def iadd():alist=SequentialStringList()用于范围(20)内的x:alist.strAdd(“test”+str(x))print(alist.findItem(“test19”))效果很好。旁注:如果这是针对类的,那么不管怎样,但如果您试图针对真实代码执行此操作,我应该注意,这是在Python中进行二进制搜索的正确方法。@MarkBruner:如果需要添加/更新代码,请编辑问题,不要将其放在注释中。你不能格式化甚至换行注释。这是针对一个类的,不确定为什么注释中的代码不起作用,但我基本上有相同的添加函数用于顺序搜索,效果很好。不确定这是否纯粹是运气。我在二进制搜索中得到的错误是,对象BinaryStringList没有对象“item”。谢谢你没有看到缺少的下划线。我确信我有很多问题,我只是需要帮助克服第一个问题才能取得进展。谢谢你没有看到缺少的下划线。我确信我有很多问题,我只是需要帮助克服第一个问题才能取得进展。所以你看到了我试图做的事情。由于必须对赋值进行基准测试,所以我选择递归方法。不过,我也可以看看其他基准测试方法。如果你有一个我可以在低/高索引上读到的链接,那就太好了。这些链接仍然与处理over和int字符串相关吗?为了测试im,只需执行for循环,将int添加到字符串“test”并将其添加到数组中。二进制搜索会比较值并检查值的大小。因此,如果使用“test1”、“test2”等,代码需要确定
test1
。可能通过剥离“测试”和co