这是我的任务:
SortedStringBag(initial_list)创建一个新的已排序字符串包对象,并为其提供字符串的初始列表。对列表进行排序。这是您唯一可以排序的时间。
print()打印列表的所有内容,每行一个。请记住,它必须始终排序。
count(s)告诉这个包里发生了多少次字符串。如果没有找到则返回0。
使用O(n)算法将字符串s插入列表中。
提示:要对python列表进行排序,只需执行以下操作:
mylist.sort()
继承人我做过的事情
class SortedStringBag:
def __init__(self,initial_list):
self.ilist = initial_list.sort()
def __str__(self):
for i in self:
if self[i]<self[i+1]:
print(self[i])
def insert(self, s):
for i in range(len(self.ilist)):
if self[i] > item:
self.insert(i, item)
else:
self.append(s)
def count(self, s):
i = 0
for n in self:
if s in self[n]:
i = i+1
出于某种原因,我无法正确定位它的顶部,但它在我的代码中。
我真的不懂类,因为某些原因没有一个方法与类
相关联答案 0 :(得分:4)
这里的主要问题是,您正在混淆self
与self.ilist
之间的混淆,给您的错误如下:
>>> import StringBag
>>> mylist = StringBag.SortedStringBag([1, 8, 3, -1, 9, 3, 7, 23 , 6])
>>> print mylist
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "testt.py", line 5, in __str__
for i in self:
TypeError: iteration over non-sequence
>>>
但是,您有另一个键错误,即将变量赋值给方法的值。方法不返回任何内容,因此尝试分配它们将为您提供值None
:
>>> var = [1, 3, 4, 2].sort()
>>> print var
None
>>>
以下是您编辑的代码:
class SortedStringBag:
def __init__(self,initial_list):
self.ilist = sorted(initial_list)
def __str__(self):
return '\n'.join([str(item) for item in self.ilist])
def insert(self, s):
for i in range(len(self.ilist)):
if self.ilist[i] > s:
self.ilist.insert(i, s)
break
else:
self.ilist.append(s)
def count(self, s):
i = 0
for n in self.ilist:
if s == n:
i+=1
return i
运行方式:
>>> import StringBag
>>> mylist = StringBag.SortedStringBag([1, 8, 3, -1, 9, 3, 7, 23 , 6])
>>> print mylist
-1
1
3
3
6
7
8
9
23
>>> mylist.count(3)
2
>>> mylist.count(2)
0
>>> mylist.insert(4)
>>> print mylist
-1
1
3
3
4
6
7
8
9
23
>>> mylist.count(4)
1
>>>