python - Python 类遇到问题

标签 python class sorting

这是我的作业:

SortedStringBag(initial_list) 创建一个新的排序字符串包对象并为其提供初始字符串列表。对列表进行排序。这是您唯一可以排序的时间。

print() 打印列表的所有内容,每行一个。请记住,它必须始终排序。

count(s) 告诉字符串 s 在这个包中出现了多少次。如果根本没有找到,则返回 0。

insert(s) 使用 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

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

我真的不理解类,由于某种原因,没有任何方法与类关联

最佳答案

这里的主要问题是您混淆了调用 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
>>> 

关于python - Python 类遇到问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25925975/

相关文章:

class - Python 3 类中的全局变量

python - 检查 False 的正确方法是什么?

Java - 重写父类

python - 如何在 Python 中列出 n 个数字并随机选择任意数字?

javascript - super 函数如何访问子类中的另一个 super 函数?

java - 对 Arraylist 对象进行排序

.net - .Net 有没有比 O(n log n) 更快的稳定排序算法?

Python 初学者 - 使用 lambda 函数对元组进行排序

python - python 一次进行更多迭代

python - 库未在 Python (pygame) 中初始化