遇到类Python问题

时间:2014-09-19 03:36:35

标签: python class sorting

这是我的任务:

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

出于某种原因,我无法正确定位它的顶部,但它在我的代码中。

我真的不懂类,因为某些原因没有一个方法与类

相关联

1 个答案:

答案 0 :(得分:4)

这里的主要问题是,您正在混淆selfself.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
>>>